ERC-20
Overview
Max Total Supply
24,735,421,734.400841417561530708 SPHERE
Holders
36,595
Total Transfers
-
Market
Price
$0.00 @ 0.000000 POL
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
SphereTokenV2
Compiler Version
v0.8.13+commit.abaa5c0e
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity 0.8.13; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address who) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function transfer(address to, uint256 value) external returns (bool); function approve(address spender, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 value ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } abstract contract ERC20Detailed is IERC20 { string private _name; string private _symbol; uint8 private _decimals; constructor( string memory _tokenName, string memory _tokenSymbol, uint8 _tokenDecimals ) { _name = _tokenName; _symbol = _tokenSymbol; _decimals = _tokenDecimals; } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } } interface IDEXRouter { function factory() external view returns (address); function WETH() external view returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function removeLiquidity( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETH( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountToken, uint256 amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETHWithPermit( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountToken, uint256 amountETH); function swapExactTokensForTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapTokensForExactTokens( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactETHForTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function swapTokensForExactETH( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactTokensForETH( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapETHForExactTokens( uint256 amountOut, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function quote( uint256 amountA, uint256 reserveA, uint256 reserveB ) external pure returns (uint256 amountB); function getAmountOut( uint256 amountIn, uint256 reserveIn, uint256 reserveOut, uint256 fee ) external pure returns (uint256 amountOut); function getAmountIn( uint256 amountOut, uint256 reserveIn, uint256 reserveOut, uint256 fee ) external pure returns (uint256 amountIn); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts); function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } interface IDEXFactory { function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function validPairs(address _pair) external view returns (bool); } interface IBalanceOfSphere { function balanceOfSphere(address _address) external view returns (uint256); } interface IDEXPair { function sync() external; } contract Ownable { address private _owner; event OwnershipRenounced(address indexed previousOwner); event TransferOwnerShip(address indexed previousOwner); event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { _owner = msg.sender; } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(msg.sender == _owner, 'Not owner'); _; } function renounceOwnership() public onlyOwner { emit OwnershipRenounced(_owner); _owner = address(0); } function transferOwnership(address newOwner) public onlyOwner { emit TransferOwnerShip(newOwner); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal { require(newOwner != address(0), 'Owner can not be 0'); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } } contract SphereTokenV2 is ERC20Detailed, Ownable, ReentrancyGuard { address constant DEAD = 0x000000000000000000000000000000000000dEaD; address constant ZERO = 0x0000000000000000000000000000000000000000; address[] public _makerPairs; address[] public partyArray; address[] public sphereGamesContracts; address[] public subContracts; bool private feesOnNormalTransfers = true; bool private manualSyncRefresh = true; bool private doneInit = false; bool public autoRebase = true; bool public initialDistributionFinished = false; bool public isBurnEnabled = false; bool public isLiquidityEnabled = true; bool public isMoveBalance = false; bool public isSellHourlyLimit = true; bool public isTaxBracket = false; bool public isTaxBracketEnabledInMoveFee = false; bool public isWall = false; bool public partyTime = true; bool public swapEnabled = true; mapping(address => InvestorInfo) public investorInfoMap; mapping(address => bool) _isBuyFeeExempt; mapping(address => bool) _isSellFeeExempt; mapping(address => bool) _isTotalFeeExempt; mapping(address => bool) canRebase; mapping(address => bool) canSetRewardYield; mapping(address => bool) public _disallowedToMove; mapping(address => bool) public automatedMarketMakerPairs; mapping(address => bool) public partyArrayCheck; mapping(address => bool) public sphereGamesCheck; mapping(address => bool) public subContractCheck; mapping(address => uint256) public partyArrayFee; mapping(address => mapping(address => uint256)) private _allowedFragments; mapping(address => uint256) private _gonBalances; uint256 private REWARD_YIELD_DENOMINATOR = 10000000000000000; uint256 private _gonsPerFragment; uint256 private _totalSupply; uint256 private constant DECIMALS = 18; uint256 private constant FEE_DENOMINATOR = 1000; uint256 private constant INITIAL_FRAGMENTS_SUPPLY = 5 * 10 ** 9 * 10 ** DECIMALS; uint256 private constant MAX_INVEST_REMOVABLE_DELAY = 7200; uint256 private constant MAX_PARTY_ARRAY = 491; uint256 private constant MAX_PARTY_LIST_DIVISOR_RATE = 75; uint256 private constant MAX_REBASE_FREQUENCY = 1800; uint256 private constant MAX_SUPPLY = ~uint128(0); uint256 private constant MAX_TAX_BRACKET_FEE_RATE = 50; uint256 private constant MAX_TOTAL_BUY_FEE_RATE = 250; uint256 private constant MAX_TOTAL_SELL_FEE_RATE = 250; uint256 private constant MAX_UINT256 = ~uint256(0); uint256 private constant MIN_BUY_AMOUNT_RATE = 500000 * 10 ** 18; uint256 private constant MIN_INVEST_REMOVABLE_PER_PERIOD = 1500000 * 10 ** 18; uint256 private constant MIN_SELL_AMOUNT_RATE = 500000 * 10 ** 18; uint256 private constant TOTAL_GONS = MAX_UINT256 - (MAX_UINT256 % INITIAL_FRAGMENTS_SUPPLY); uint256 private constant maxBracketTax = 10; // max bracket is holding 10% uint256 private burnFee = 0; uint256 private buyGalaxyBondFee = 0; uint256 private gonSwapThreshold = TOTAL_GONS / 1000; uint256 private investRemovalDelay = 3600; uint256 private liquidityFee = 50; uint256 private partyListDivisor = 50; uint256 private realFeePartyArray = 490; uint256 private rebaseFrequency = 1800; uint256 private REWARD_YIELD = 3943560072416; uint256 private riskFreeValueFee = 50; uint256 private sellBurnFee = 0; uint256 private sellFeeRFVAdded = 50; uint256 private sellFeeTreasuryAdded = 20; uint256 private sellGalaxyBond = 0; uint256 private swapThreshold = 400000 * 10 ** 18; uint256 private treasuryFee = 30; uint256 public _markerPairCount; uint256 public epochBuyPressure = 0; uint256 public epochCollectedBuyTax = 0; uint256 public epochCollectedSellTax = 0; uint256 public epochSellPressure = 0; uint256 public INDEX; uint256 public maxBuyTransactionAmount = 500000 * 10 ** 18; uint256 public maxSellTransactionAmount = 500000 * 10 ** 18; uint256 public nextRebase = 1647385255; uint256 public oldEpochBuyPressure = 0; uint256 public oldEpochCollectedBuyTax = 0; uint256 public oldEpochCollectedSellTax = 0; uint256 public oldEpochSellPressure = 0; uint256 public rebaseEpoch = 0; uint256 public taxBracketMultiplier = 50; uint256 public totalBuyFee = liquidityFee + (treasuryFee) + (riskFreeValueFee); uint256 public totalSellFee = totalBuyFee + (sellFeeTreasuryAdded) + (sellFeeRFVAdded); uint256 public wallDivisor = 2; address public liquidityReceiver = 0x1a2Ce410A034424B784D4b228f167A061B94CFf4; address public treasuryReceiver = 0x20D61737f972EEcB0aF5f0a85ab358Cd083Dd56a; address public riskFreeValueReceiver = 0x826b8d2d523E7af40888754E3De64348C00B99f4; address public galaxyBondReceiver = 0x20D61737f972EEcB0aF5f0a85ab358Cd083Dd56a; address public convertTo = 0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270; IDEXRouter public router; address public pair; uint256 maxInvestRemovablePerPeriod = 1500000 * 10 ** 18; bool inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } modifier validRecipient(address to) { require(to != address(0x0), 'recipient is not valid'); _; } /* ======== STRUCTS ======== */ struct Withdrawal { uint256 timestamp; uint256 withdrawAmount; } struct InvestorInfo { uint256 totalInvestableExchanged; Withdrawal[] withdrawHistory; } constructor() ERC20Detailed('Sphere Finance', 'SPHERE', uint8(DECIMALS)) {} function init(address _router, address _pair) external onlyOwner { require(!doneInit, 'Already initialized'); router = IDEXRouter(_router); pair = (_pair); _allowedFragments[address(this)][address(router)] = type(uint256).max; _allowedFragments[address(this)][address(this)] = type(uint256).max; _allowedFragments[address(this)][pair] = type(uint256).max; _totalSupply = INITIAL_FRAGMENTS_SUPPLY; _gonBalances[msg.sender] = TOTAL_GONS; _gonsPerFragment = TOTAL_GONS / (_totalSupply); _isTotalFeeExempt[treasuryReceiver] = true; _isTotalFeeExempt[riskFreeValueReceiver] = true; _isTotalFeeExempt[galaxyBondReceiver] = true; _isTotalFeeExempt[address(this)] = true; _isTotalFeeExempt[msg.sender] = true; INDEX = gonsForBalance(1e18); setWhitelistSetters(msg.sender, true, 1); setWhitelistSetters(msg.sender, true, 2); doneInit = true; emit Transfer(address(0x0), msg.sender, _totalSupply); } receive() external payable {} //gets every token in circulation no matter where function totalSupply() external view override returns (uint256) { return _totalSupply; } //how much a user is allowed to transfer from own address to another one function allowance(address owner_, address spender) external view override returns (uint256) { return _allowedFragments[owner_][spender]; } //get balance of user function balanceOf(address who) public view override returns (uint256) { if (_gonsPerFragment == 0) { return 0; } return _gonBalances[who] / (_gonsPerFragment); } //get the address in the iteration function markerPairAddress(uint256 value) external view returns (address) { return _makerPairs[value]; } //get the current index of rebase function currentIndex() external view returns (uint256) { return balanceForGons(INDEX); } //checks if a user is exempt from protocol fees function checkFeeExempt(address _addr) external view returns (bool) { return _isTotalFeeExempt[_addr]; } function gonsForBalance(uint256 amount) public view returns (uint256) { return amount * (_gonsPerFragment); } function balanceForGons(uint256 gons) public view returns (uint256) { return gons / (_gonsPerFragment); } //checks what the threshold is for swapping function checkSwapThreshold() external view returns (uint256) { return gonSwapThreshold / (_gonsPerFragment); } // validate if the last rebase is in the past, thus execute function shouldRebase() internal view returns (bool) { return nextRebase <= block.timestamp; } //enable tax bracket on users function isTaxBracketEnabled() internal view returns (bool) { return isTaxBracket; } //validates if the sell limit is enabled function isSellHourlyLimitEnabled() internal view returns (bool) { return isSellHourlyLimit; } //add the wall function that enables usages function isWallEnabled() internal view returns (bool) { return isWall; } //validates if the swap back function should be initiated or not function shouldSwapBack() internal view returns (bool) { return !automatedMarketMakerPairs[msg.sender] && !inSwap && swapThreshold > 0 && swapEnabled && (totalBuyFee + totalSellFee) > 0 && balanceOf(address(this)) >= (gonSwapThreshold / _gonsPerFragment); } // check if the wallet should be taxed or not function shouldTakeFee(address from, address to) internal view returns (bool) { if (_isTotalFeeExempt[from] || _isTotalFeeExempt[to]) { return false; } else if (feesOnNormalTransfers) { return true; } else { return (automatedMarketMakerPairs[from] || automatedMarketMakerPairs[to]); } } //this function iterates through all other contracts that are being part of the Sphere ecosystem //we add a new contract like wSPHERE or sSPHERE, whales could technically abuse this //by swapping to these contracts and leave the dynamic tax bracket function getBalanceContracts(address sender) public view returns (uint256) { uint256 userTotal; for (uint256 i = 0; i < subContracts.length; i++) { userTotal + (IBalanceOfSphere(subContracts[i]).balanceOfSphere(sender)); } for (uint256 i = 0; i < sphereGamesContracts.length; i++) { userTotal + (IERC20(sphereGamesContracts[i]).balanceOf(sender)); } return userTotal; } //calculates circulating supply (dead and zero is not added due to them being phased out of circulation forrever) function getCirculatingSupply() external view returns (uint256) { return (TOTAL_GONS - _gonBalances[DEAD] - _gonBalances[ZERO] - _gonBalances[treasuryReceiver]) / _gonsPerFragment; } function getCurrentTaxBracket(address _address) public view returns (uint256) { //gets the total balance of the user uint256 userTotal = getUserTotalOnDifferentContractsSphere(_address); //calculate the percentage uint256 totalCap = (userTotal * (100)) / (getTokensInLPCirculation()); //calculate what is smaller, and use that uint256 _bracket = totalCap < maxBracketTax ? totalCap : maxBracketTax; //multiply the bracket with the multiplier _bracket *= taxBracketMultiplier; return _bracket; } function getRewardYield() external view returns (uint256, uint256) { return (REWARD_YIELD, REWARD_YIELD_DENOMINATOR); } function getTokensInLPCirculation() public view returns (uint256) { uint256 LPTotal; for (uint256 i = 0; i < _makerPairs.length; i++) { LPTotal += balanceOf(_makerPairs[i]); } return LPTotal; } //calculate the users total on different contracts function getUserTotalOnDifferentContractsSphere(address sender) public view returns (uint256) { uint256 userTotal = balanceOf(sender); //calculate the balance of different contracts on different wallets and sum them return userTotal + (getBalanceContracts(sender)); } //sync every LP to make sure Theft-of-Liquidity can't be arbitraged function manualSync() public { for (uint256 i = 0; i < _makerPairs.length; i++) { try IDEXPair(_makerPairs[i]).sync() {} catch Error( string memory reason ) { emit GenericErrorEvent( 'manualSync(): _makerPairs.sync() Failed' ); emit GenericErrorEvent(reason); } } } //transfer from one valid to another function transfer(address to, uint256 value) external override validRecipient(to) returns (bool) { _transferFrom(msg.sender, to, value); return true; } //basic transfer from one wallet to the other function _basicTransfer( address from, address to, uint256 amount ) internal returns (bool) { uint256 gonAmount = amount * (_gonsPerFragment); _gonBalances[from] = _gonBalances[from] - (gonAmount); _gonBalances[to] = _gonBalances[to] + (gonAmount); emit Transfer(from, to, amount); return true; } //inherent transfer function that calculates the taxes and the limits //limits like sell per hour, party array check function _transferFrom( address sender, address recipient, uint256 amount ) internal returns (bool) { bool excludedAccount = _isTotalFeeExempt[sender] || _isTotalFeeExempt[recipient]; require(initialDistributionFinished || excludedAccount, 'Trade off'); if (automatedMarketMakerPairs[recipient] && !excludedAccount) { require(amount <= maxSellTransactionAmount, 'Too much sell'); } //update manualSync every second sell / buy to resolve possible K issues with QLaaS //only uses 60K gas if ( automatedMarketMakerPairs[sender] || automatedMarketMakerPairs[recipient] ) { if (manualSyncRefresh) { manualSync(); manualSyncRefresh = false; } else { manualSyncRefresh = true; } } if ( automatedMarketMakerPairs[recipient] && !excludedAccount && partyArrayCheck[sender] && partyTime ) { require( amount <= (maxSellTransactionAmount / (partyListDivisor)), 'party div' ); } if (automatedMarketMakerPairs[sender] && !excludedAccount) { require(amount <= maxBuyTransactionAmount, 'too much buy'); } if ( automatedMarketMakerPairs[recipient] && !excludedAccount && isSellHourlyLimitEnabled() ) { InvestorInfo storage investor = investorInfoMap[sender]; //Make sure they can't withdraw too often. Withdrawal[] storage withdrawHistory = investor.withdrawHistory; uint256 authorizedWithdraw = (maxInvestRemovablePerPeriod - (getLastPeriodWithdrawals(sender))); require(amount <= authorizedWithdraw, 'max withdraw'); withdrawHistory.push( Withdrawal({timestamp : block.timestamp, withdrawAmount : amount}) ); } if (inSwap) { return _basicTransfer(sender, recipient, amount); } uint256 gonAmount = amount * (_gonsPerFragment); if (shouldSwapBack()) { swapBack(); } _gonBalances[sender] = _gonBalances[sender] - (gonAmount); uint256 gonAmountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, gonAmount) : gonAmount; _gonBalances[recipient] = _gonBalances[recipient] + (gonAmountReceived); if ( shouldRebase() && autoRebase && !automatedMarketMakerPairs[sender] && !automatedMarketMakerPairs[recipient] ) { _rebase(); manualSync(); setEpochCalculation(); } //calculate the amount of buy / sell if (automatedMarketMakerPairs[sender]) { epochBuyPressure += (gonAmount / (_gonsPerFragment)); epochCollectedBuyTax += (gonAmount - (gonAmountReceived) / (_gonsPerFragment)); } else if (automatedMarketMakerPairs[recipient]) { epochSellPressure += (gonAmount / (_gonsPerFragment)); epochCollectedSellTax += (gonAmount - (gonAmountReceived) / (_gonsPerFragment)); } emit Transfer( sender, recipient, gonAmountReceived / (_gonsPerFragment) ); return true; } function transferFrom( address from, address to, uint256 value ) external override validRecipient(to) returns (bool) { if (_allowedFragments[from][msg.sender] != type(uint256).max) { _allowedFragments[from][msg.sender] = _allowedFragments[from][msg.sender] - (value); } _transferFrom(from, to, value); return true; } function swapBack() internal swapping { uint256 dynamicLiquidityFee = isLiquidityEnabled ? liquidityFee : 0; uint256 realTotalFee = totalBuyFee + (totalSellFee); uint256 contractTokenBalance = balanceOf(address(this)); uint256 balanceBefore = address(this).balance; uint256 amountToBurn = (contractTokenBalance * (burnFee + sellBurnFee)) / realTotalFee; tokenBurner(amountToBurn); uint256 amountToLiquidate = (contractTokenBalance * (dynamicLiquidityFee)) / (realTotalFee) / (2); uint256 amountToSwap = contractTokenBalance - amountToLiquidate - amountToBurn; address[] memory path = new address[](2); path[0] = address(this); path[1] = convertTo; router.swapExactTokensForETHSupportingFeeOnTransferTokens( amountToSwap, 0, path, address(this), block.timestamp ); uint256 amountMATIC = address(this).balance - (balanceBefore); uint256 totalMATICFee = ((realTotalFee) - (dynamicLiquidityFee) / (2) - (burnFee + sellBurnFee)); uint256 amountMATICLiquidity = (amountMATIC * (dynamicLiquidityFee)) / (totalMATICFee) / (2); uint256 amountToRFV = (amountMATIC * (riskFreeValueFee + (sellFeeRFVAdded))) / (totalMATICFee); uint256 amountToGalaxyBond = (amountMATIC * (buyGalaxyBondFee + (sellGalaxyBond))) / (totalMATICFee); uint256 amountToTreasury = amountMATIC - (amountMATICLiquidity) - (amountToRFV) - (amountToGalaxyBond); (bool success,) = payable(treasuryReceiver).call{ value : amountToTreasury, gas : 30000 }(''); (success,) = payable(riskFreeValueReceiver).call{ value : amountToRFV, gas : 30000 }(''); (success,) = payable(galaxyBondReceiver).call{ value : amountToGalaxyBond, gas : 30000 }(''); success = false; if (amountToLiquidate > 0) { router.addLiquidityETH{value : amountMATICLiquidity}( address(this), amountToLiquidate, 0, 0, liquidityReceiver, block.timestamp ); } } function manualSwapBack() external onlyOwner { swapBack(); } /** @dev Returns the total amount withdrawn by the _address during the last hour **/ function getLastPeriodWithdrawals(address _address) public view returns (uint256 totalWithdrawLastHour) { InvestorInfo storage investor = investorInfoMap[_address]; Withdrawal[] storage withdrawHistory = investor.withdrawHistory; for (uint256 i = 0; i < withdrawHistory.length; i++) { Withdrawal memory withdraw = withdrawHistory[i]; if ( withdraw.timestamp >= (block.timestamp - (investRemovalDelay)) ) { totalWithdrawLastHour = totalWithdrawLastHour + (withdrawHistory[i].withdrawAmount); } } return totalWithdrawLastHour; } function takeFee( address sender, address recipient, uint256 gonAmount ) internal returns (uint256) { uint256 _realFee = totalBuyFee; if (isWallEnabled()) { _realFee = totalBuyFee / (wallDivisor); } if (_isBuyFeeExempt[sender]) { _realFee = 0; } //check if it's a sell fee embedded if (automatedMarketMakerPairs[recipient]) { _realFee = totalSellFee; //trying to join our party? Become the party maker :) if (partyArrayCheck[sender] && partyTime) { if (_realFee < partyArrayFee[sender]) _realFee = partyArrayFee[sender]; } if (_isSellFeeExempt[sender]) { _realFee = 0; } } if (!automatedMarketMakerPairs[sender]) { //calculate Tax if (isTaxBracketEnabled()) { _realFee += getCurrentTaxBracket(sender); } } uint256 feeAmount = (gonAmount * (_realFee)) / (FEE_DENOMINATOR); _gonBalances[address(this)] = _gonBalances[address(this)] + (feeAmount); emit Transfer(sender, address(this), (feeAmount / (_gonsPerFragment))); return gonAmount - (feeAmount); } //burn tokens to the dead wallet function tokenBurner(uint256 _tokenAmount) private { _transferFrom(address(this), address(DEAD), _tokenAmount); } function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) { uint256 oldValue = _allowedFragments[msg.sender][spender]; if (subtractedValue >= oldValue) { _allowedFragments[msg.sender][spender] = 0; } else { _allowedFragments[msg.sender][spender] = oldValue - (subtractedValue); } emit Approval( msg.sender, spender, _allowedFragments[msg.sender][spender] ); return true; } function increaseAllowance(address spender, uint256 addedValue) external returns (bool) { _allowedFragments[msg.sender][spender] = _allowedFragments[msg.sender][spender] - (addedValue); emit Approval( msg.sender, spender, _allowedFragments[msg.sender][spender] ); return true; } function approve(address spender, uint256 value) external override returns (bool) { _allowedFragments[msg.sender][spender] = value; emit Approval(msg.sender, spender, value); return true; } function _rebase() private { int256 supplyDelta; int256 i = 0; if (!inSwap) { do { supplyDelta = int256( (_totalSupply * (REWARD_YIELD)) / (REWARD_YIELD_DENOMINATOR) ); coreRebase(supplyDelta); i++; } while (nextRebase < block.timestamp && i < 100); manualSync(); } } //rebase everyone function coreRebase(int256 supplyDelta) private returns (uint256) { require(nextRebase <= block.timestamp, 'rebase too early'); uint256 epoch = nextRebase; if (supplyDelta == 0) { emit LogRebase(epoch, _totalSupply); return _totalSupply; } if (supplyDelta < 0) { _totalSupply = _totalSupply - (uint256(- supplyDelta)); } else { _totalSupply = _totalSupply + (uint256(supplyDelta)); } if (_totalSupply > MAX_SUPPLY) { _totalSupply = MAX_SUPPLY; } _gonsPerFragment = TOTAL_GONS / (_totalSupply); updateRebaseIndex(epoch); emit LogRebase(epoch, _totalSupply); return _totalSupply; } //set who is allowed to trigger the rebase or reward yield function setWhitelistSetters( address _addr, bool _value, uint256 _type ) public onlyOwner { if (_type == 1) { require(canRebase[_addr] != _value, 'Not changed'); canRebase[_addr] = _value; } else if (_type == 2) { require(canSetRewardYield[_addr] != _value, 'Not changed'); canSetRewardYield[_addr] = _value; } emit SetRebaseWhitelist(_addr, _value, _type); } //set the router in case of dex switch function setRouter(address _router, address _pair) external onlyOwner { router = IDEXRouter(_router); pair = _pair; _allowedFragments[address(this)][address(router)] = type(uint256).max; _allowedFragments[address(this)][address(this)] = type(uint256).max; _allowedFragments[address(this)][pair] = type(uint256).max; setAutomatedMarketMakerPair(pair, true); emit SetRouter(_router, _pair); } //execute manual rebase function manualRebase() external nonReentrant { require(canRebase[msg.sender], 'can not rebase'); require(!inSwap, 'Try again'); require(nextRebase <= block.timestamp, 'Not in time'); int256 supplyDelta; int256 i = 0; do { supplyDelta = int256( (_totalSupply * (REWARD_YIELD)) / (REWARD_YIELD_DENOMINATOR) ); coreRebase(supplyDelta); i++; } while (nextRebase < block.timestamp && i < 100); manualSync(); } //move full balance without the tax function moveBalance(address _to) external validRecipient(_to) returns (bool) { require(isMoveBalance, 'can not move'); require(initialDistributionFinished, 'Trade off'); // Allow to move balance only once require(!_disallowedToMove[msg.sender], 'not allowed'); require(balanceOf(msg.sender) > 0, 'No tokens'); uint256 balanceOfAllSubContracts = 0; balanceOfAllSubContracts = getBalanceContracts(msg.sender); require(balanceOfAllSubContracts == 0, 'other balances'); // Once an address received funds moved from another address it should // not be able to move its balance again _disallowedToMove[msg.sender] = true; uint256 gonAmount = _gonBalances[msg.sender]; // reduce balance early _gonBalances[msg.sender] = _gonBalances[msg.sender] - (gonAmount); // Move the balance to the to address _gonBalances[_to] = _gonBalances[_to] + (gonAmount); emit Transfer(msg.sender, _to, (gonAmount / (_gonsPerFragment))); emit MoveBalance(msg.sender, _to); return true; } function updateRebaseIndex(uint256 epoch) private { // update the next Rebase time nextRebase = epoch + rebaseFrequency; //simply show how often we rebased since inception (how many epochs) rebaseEpoch += 1; } //add new subcontracts to the protocol so they can be calculated function addSubContracts(address _subContract, bool _value) external onlyOwner { require(subContractCheck[_subContract] != _value, 'Value already set'); subContractCheck[_subContract] = _value; if (_value) { subContracts.push(_subContract); } else { for (uint256 i = 0; i < subContracts.length; i++) { if (subContracts[i] == _subContract) { subContracts[i] = subContracts[subContracts.length - 1]; subContracts.pop(); break; } } } emit SetSubContracts(_subContract, _value); } //Add S.P.H.E.R.E. Games Contracts function addSphereGamesAddies(address _sphereGamesAddy, bool _value) external onlyOwner { require( sphereGamesCheck[_sphereGamesAddy] != _value, 'Value already set' ); sphereGamesCheck[_sphereGamesAddy] = _value; if (_value) { sphereGamesContracts.push(_sphereGamesAddy); } else { require(sphereGamesContracts.length > 1, 'Required 1 pair'); for (uint256 i = 0; i < sphereGamesContracts.length; i++) { if (sphereGamesContracts[i] == _sphereGamesAddy) { sphereGamesContracts[i] = sphereGamesContracts[ sphereGamesContracts.length - 1 ]; sphereGamesContracts.pop(); break; } } } emit SetSphereGamesAddresses(_sphereGamesAddy, _value); } function addPartyAddies( address _partyAddy, bool _value, uint256 feeAmount ) external onlyOwner { partyArrayCheck[_partyAddy] = _value; partyArrayFee[_partyAddy] = feeAmount; if (_value) { partyArray.push(_partyAddy); } else { for (uint256 i = 0; i < partyArray.length; i++) { if (partyArray[i] == _partyAddy) { partyArray[i] = partyArray[partyArray.length - 1]; partyArray.pop(); break; } } } emit SetPartyAddresses(_partyAddy, _value); } function setAutomatedMarketMakerPair(address _pair, bool _value) public onlyOwner { require(automatedMarketMakerPairs[_pair] != _value, 'already set'); automatedMarketMakerPairs[_pair] = _value; if (_value) { _makerPairs.push(_pair); _markerPairCount++; } else { require(_makerPairs.length > 1, 'Required 1 pair'); for (uint256 i = 0; i < _makerPairs.length; i++) { if (_makerPairs[i] == _pair) { _makerPairs[i] = _makerPairs[_makerPairs.length - 1]; _makerPairs.pop(); _markerPairCount--; break; } } } emit SetAutomatedMarketMakerPair(_pair, _value); } function setInitialDistributionFinished(bool _value) external onlyOwner { initialDistributionFinished = _value; emit SetInitialDistribution(_value); } function setInvestRemovalDelay(uint256 _value) external onlyOwner { require(_value < MAX_INVEST_REMOVABLE_DELAY, 'over 2 hours'); investRemovalDelay = _value; emit SetInvestRemovalDelay(_value); } function setEpochCalculation() private { //store previous buy pressure oldEpochBuyPressure = epochBuyPressure; oldEpochCollectedBuyTax = epochCollectedBuyTax; epochBuyPressure = 0; //store previous sell pressure oldEpochSellPressure = epochSellPressure; oldEpochCollectedSellTax = epochCollectedSellTax; epochSellPressure = 0; } function setMaxInvestRemovablePerPeriod(uint256 _value) external onlyOwner { require(_value > MIN_INVEST_REMOVABLE_PER_PERIOD, 'Below minimum'); maxInvestRemovablePerPeriod = _value; emit SetMaxInvestRemovablePerPeriod(_value); } function setSellHourlyLimit(bool _value) external onlyOwner { isSellHourlyLimit = _value; emit SetHourlyLimit(_value); } function setContractToChange(address _value) external onlyOwner { convertTo = _value; emit SetContractToChange(_value); } function setPartyListDivisor(uint256 _value) external onlyOwner { require(_value <= MAX_PARTY_LIST_DIVISOR_RATE, 'max party'); partyListDivisor = _value; emit SetPartyListDivisor(_value); } function setMoveBalance(bool _value) external onlyOwner { isMoveBalance = _value; emit SetMoveBalance(_value); } function setFeeTypeExempt( address _addr, bool _value, uint256 _type ) external onlyOwner { if (_type == 1) { require(_isTotalFeeExempt[_addr] != _value, 'Not changed'); _isTotalFeeExempt[_addr] = _value; emit SetTotalFeeExempt(_addr, _value); } else if (_type == 2) { require(_isBuyFeeExempt[_addr] != _value, 'Not changed'); _isBuyFeeExempt[_addr] = _value; emit SetBuyFeeExempt(_addr, _value); } else if (_type == 3) { require(_isSellFeeExempt[_addr] != _value, 'Not changed'); _isSellFeeExempt[_addr] = _value; emit SetSellFeeExempt(_addr, _value); } } function setSwapBackSettings( bool _enabled, uint256 _num, uint256 _denom ) external onlyOwner { swapEnabled = _enabled; gonSwapThreshold = (TOTAL_GONS * (_num)) / (_denom); emit SetSwapBackSettings(_enabled, _num, _denom); } function setFeeReceivers( address _liquidityReceiver, address _treasuryReceiver, address _riskFreeValueReceiver, address _galaxyBondReceiver ) external onlyOwner { liquidityReceiver = _liquidityReceiver; treasuryReceiver = _treasuryReceiver; riskFreeValueReceiver = _riskFreeValueReceiver; galaxyBondReceiver = _galaxyBondReceiver; } function setFees( uint256 _liquidityFee, uint256 _riskFreeValueFee, uint256 _treasuryFee, uint256 _burnFee, uint256 _buyGalaxyBondFee, uint256 _sellFeeTreasuryAdded, uint256 _sellFeeRFVAdded, uint256 _sellBurnFee, uint256 _sellGalaxyBond, uint256 _realFeePartyArray, bool _isTaxBracketEnabledInMoveFee ) external onlyOwner { liquidityFee = _liquidityFee; riskFreeValueFee = _riskFreeValueFee; treasuryFee = _treasuryFee; sellFeeTreasuryAdded = _sellFeeTreasuryAdded; sellFeeRFVAdded = _sellFeeRFVAdded; buyGalaxyBondFee = _buyGalaxyBondFee; burnFee = _burnFee; sellBurnFee = _sellBurnFee; sellGalaxyBond = _sellGalaxyBond; realFeePartyArray = _realFeePartyArray; uint256 maxTotalBuyFee = liquidityFee + (treasuryFee) + (burnFee) + (buyGalaxyBondFee) + (riskFreeValueFee); uint256 maxTotalSellFee = maxTotalBuyFee + (sellFeeTreasuryAdded) + (sellFeeRFVAdded) + (sellBurnFee) + (sellGalaxyBond); require(maxTotalBuyFee < MAX_TOTAL_BUY_FEE_RATE, 'max buy fees'); require(maxTotalSellFee < MAX_TOTAL_SELL_FEE_RATE, 'max sell fees'); require(realFeePartyArray < MAX_PARTY_ARRAY, 'max party fees'); totalBuyFee = maxTotalBuyFee; totalSellFee = maxTotalSellFee; isTaxBracketEnabledInMoveFee = _isTaxBracketEnabledInMoveFee; emit SetFees( _liquidityFee, _riskFreeValueFee, _treasuryFee, _sellFeeTreasuryAdded, _sellFeeRFVAdded, _burnFee, sellBurnFee, maxTotalBuyFee, _isTaxBracketEnabledInMoveFee ); } function setPartyTime(bool _value) external onlyOwner { partyTime = _value; emit SetPartyTime(_value, block.timestamp); } function setTaxBracketFeeMultiplier( uint256 _taxBracketFeeMultiplier, bool _isTaxBracketEnabled ) external onlyOwner { require( _taxBracketFeeMultiplier <= MAX_TAX_BRACKET_FEE_RATE, 'max bracket fee exceeded' ); taxBracketMultiplier = _taxBracketFeeMultiplier; isTaxBracket = _isTaxBracketEnabled; emit SetTaxBracketFeeMultiplier( _taxBracketFeeMultiplier, _isTaxBracketEnabled, block.timestamp ); } function clearStuckBalance(address _receiver) external onlyOwner { uint256 balance = address(this).balance; payable(_receiver).transfer(balance); emit ClearStuckBalance(balance, _receiver, block.timestamp); } function rescueToken(address tokenAddress) external onlyOwner returns (bool success) { uint256 tokens = ERC20Detailed(tokenAddress).balanceOf(address(this)); emit RescueToken(tokenAddress, msg.sender, tokens, block.timestamp); return ERC20Detailed(tokenAddress).transfer(msg.sender, tokens); } function setAutoRebase(bool _autoRebase) external onlyOwner { autoRebase = _autoRebase; emit SetAutoRebase(_autoRebase, block.timestamp); } //set rebase frequency function setRebaseFrequency(uint256 _rebaseFrequency) external onlyOwner { require(_rebaseFrequency <= MAX_REBASE_FREQUENCY, 'Too high'); rebaseFrequency = _rebaseFrequency; emit SetRebaseFrequency(_rebaseFrequency, block.timestamp); } //set reward yield function setRewardYield( uint256 _rewardYield, uint256 _rewardYieldDenominator ) external { require(canSetRewardYield[msg.sender], 'Not allowed for reward yield'); REWARD_YIELD = _rewardYield; REWARD_YIELD_DENOMINATOR = _rewardYieldDenominator; emit SetRewardYield( _rewardYield, _rewardYieldDenominator, block.timestamp, msg.sender ); } //set swap threshold function setSwapThreshold(uint256 _value) external onlyOwner { swapThreshold = _value; } //enable fees on normal transfer function setFeesOnNormalTransfers(bool _enabled) external onlyOwner { feesOnNormalTransfers = _enabled; } //set next rebase time function setNextRebase(uint256 _nextRebase) external onlyOwner { require(_nextRebase > block.timestamp, 'can not be in past'); nextRebase = _nextRebase; emit SetNextRebase(_nextRebase, block.timestamp); } function setIsLiquidityEnabled(bool _value) external onlyOwner { isLiquidityEnabled = _value; emit SetIsLiquidityEnabled(_value); } function setMaxTransactionAmount(uint256 _maxSellTxn, uint256 _maxBuyTxn) external onlyOwner { require( _maxSellTxn > MIN_SELL_AMOUNT_RATE, 'Below minimum sell amount' ); require(_maxBuyTxn > MIN_BUY_AMOUNT_RATE, 'Below minimum buy amount'); maxSellTransactionAmount = _maxSellTxn; maxBuyTransactionAmount = _maxBuyTxn; emit SetMaxTransactionAmount(_maxSellTxn, _maxBuyTxn, block.timestamp); } function setWallDivisor(uint256 _wallDivisor, bool _isWall) external onlyOwner { wallDivisor = _wallDivisor; isWall = _isWall; emit SetWallDivisor(_wallDivisor, _isWall); } event SwapBack( uint256 contractTokenBalance, uint256 amountToLiquify, uint256 amountToRFV, uint256 amountToTreasury, uint256 amountToGalaxyBond ); event SwapAndLiquify( uint256 tokensSwapped, uint256 MATICReceived, uint256 tokensIntoLiqudity ); event SetFeeReceivers( address indexed _liquidityReceiver, address indexed _treasuryReceiver, address indexed _riskFreeValueReceiver, address _galaxyBondReceiver ); event SetPartyTime(bool indexed state, uint256 indexed time); event SetTaxBracketFeeMultiplier( uint256 indexed state, bool indexed _isTaxBracketEnabled, uint256 indexed time ); event ClearStuckBalance( uint256 indexed amount, address indexed receiver, uint256 indexed time ); event RescueToken( address indexed tokenAddress, address indexed sender, uint256 indexed tokens, uint256 time ); event SetAutoRebase(bool indexed value, uint256 indexed time); event SetTaxBracket(bool indexed value, uint256 indexed time); event SetRebaseFrequency(uint256 indexed frequency, uint256 indexed time); event SetRewardYield( uint256 indexed rewardYield, uint256 indexed frequency, uint256 indexed time, address setter ); event SetFeesOnNormalTransfers(bool indexed value, uint256 indexed time); event SetNextRebase(uint256 indexed value, uint256 indexed time); event SetMaxTransactionAmount( uint256 indexed sell, uint256 indexed buy, uint256 indexed time ); event SetWallDivisor(uint256 indexed _wallDivisor, bool indexed _isWall); event SetSwapBackSettings( bool indexed enabled, uint256 indexed num, uint256 indexed denum ); event SetFees( uint256 indexed _liquidityFee, uint256 indexed _riskFreeValue, uint256 indexed _treasuryFee, uint256 _sellFeeTreasuryAdded, uint256 _sellFeeRFVAdded, uint256 _burnFee, uint256 sellBurnFee, uint256 totalBuyFee, bool _isTaxBracketEnabledInMoveFee ); event LogRebase(uint256 indexed epoch, uint256 totalSupply); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event SetInitialDistribution(bool indexed value); event SetInvestRemovalDelay(uint256 indexed value); event SetMaxInvestRemovablePerPeriod(uint256 indexed value); event SetMoveBalance(bool indexed value); event SetIsLiquidityEnabled(bool indexed value); event SetPartyListDivisor(uint256 indexed value); event SetHourlyLimit(bool indexed value); event SetContractToChange(address indexed value); event SetSwapThreshold(uint256 indexed value); event SetTotalFeeExempt(address indexed addy, bool indexed value); event SetBuyFeeExempt(address indexed addy, bool indexed value); event SetSellFeeExempt(address indexed addy, bool indexed value); event SetRebaseWhitelist( address indexed addy, bool indexed value, uint256 indexed _type ); event SetSubContracts(address indexed pair, bool indexed value); event SetPartyAddresses(address indexed pair, bool indexed value); event SetSphereGamesAddresses(address indexed pair, bool indexed value); event GenericErrorEvent(string reason); event SetRouter(address indexed _address, address indexed _pair); event MoveBalance(address from, address to); }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":true,"internalType":"uint256","name":"time","type":"uint256"}],"name":"ClearStuckBalance","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"GenericErrorEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"epoch","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalSupply","type":"uint256"}],"name":"LogRebase","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"}],"name":"MoveBalance","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","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":"tokenAddress","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"RescueToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"value","type":"bool"},{"indexed":true,"internalType":"uint256","name":"time","type":"uint256"}],"name":"SetAutoRebase","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addy","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetBuyFeeExempt","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"value","type":"address"}],"name":"SetContractToChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_liquidityReceiver","type":"address"},{"indexed":true,"internalType":"address","name":"_treasuryReceiver","type":"address"},{"indexed":true,"internalType":"address","name":"_riskFreeValueReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"_galaxyBondReceiver","type":"address"}],"name":"SetFeeReceivers","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"_riskFreeValue","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_sellFeeTreasuryAdded","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_sellFeeRFVAdded","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_burnFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sellBurnFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalBuyFee","type":"uint256"},{"indexed":false,"internalType":"bool","name":"_isTaxBracketEnabledInMoveFee","type":"bool"}],"name":"SetFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"value","type":"bool"},{"indexed":true,"internalType":"uint256","name":"time","type":"uint256"}],"name":"SetFeesOnNormalTransfers","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetHourlyLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetInitialDistribution","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"value","type":"uint256"}],"name":"SetInvestRemovalDelay","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetIsLiquidityEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"value","type":"uint256"}],"name":"SetMaxInvestRemovablePerPeriod","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"sell","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"buy","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"time","type":"uint256"}],"name":"SetMaxTransactionAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetMoveBalance","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"time","type":"uint256"}],"name":"SetNextRebase","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetPartyAddresses","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"value","type":"uint256"}],"name":"SetPartyListDivisor","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"state","type":"bool"},{"indexed":true,"internalType":"uint256","name":"time","type":"uint256"}],"name":"SetPartyTime","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"frequency","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"time","type":"uint256"}],"name":"SetRebaseFrequency","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addy","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"},{"indexed":true,"internalType":"uint256","name":"_type","type":"uint256"}],"name":"SetRebaseWhitelist","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"rewardYield","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"frequency","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"time","type":"uint256"},{"indexed":false,"internalType":"address","name":"setter","type":"address"}],"name":"SetRewardYield","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_address","type":"address"},{"indexed":true,"internalType":"address","name":"_pair","type":"address"}],"name":"SetRouter","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addy","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetSellFeeExempt","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetSphereGamesAddresses","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetSubContracts","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"enabled","type":"bool"},{"indexed":true,"internalType":"uint256","name":"num","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"denum","type":"uint256"}],"name":"SetSwapBackSettings","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"value","type":"uint256"}],"name":"SetSwapThreshold","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"value","type":"bool"},{"indexed":true,"internalType":"uint256","name":"time","type":"uint256"}],"name":"SetTaxBracket","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"state","type":"uint256"},{"indexed":true,"internalType":"bool","name":"_isTaxBracketEnabled","type":"bool"},{"indexed":true,"internalType":"uint256","name":"time","type":"uint256"}],"name":"SetTaxBracketFeeMultiplier","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addy","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetTotalFeeExempt","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_wallDivisor","type":"uint256"},{"indexed":true,"internalType":"bool","name":"_isWall","type":"bool"}],"name":"SetWallDivisor","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"MATICReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"contractTokenBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountToLiquify","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountToRFV","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountToTreasury","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountToGalaxyBond","type":"uint256"}],"name":"SwapBack","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"}],"name":"TransferOwnerShip","type":"event"},{"inputs":[],"name":"INDEX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_disallowedToMove","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"_makerPairs","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_markerPairCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_partyAddy","type":"address"},{"internalType":"bool","name":"_value","type":"bool"},{"internalType":"uint256","name":"feeAmount","type":"uint256"}],"name":"addPartyAddies","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_sphereGamesAddy","type":"address"},{"internalType":"bool","name":"_value","type":"bool"}],"name":"addSphereGamesAddies","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_subContract","type":"address"},{"internalType":"bool","name":"_value","type":"bool"}],"name":"addSubContracts","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":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoRebase","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"gons","type":"uint256"}],"name":"balanceForGons","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"checkFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"convertTo","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"epochBuyPressure","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"epochCollectedBuyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"epochCollectedSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"epochSellPressure","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"galaxyBondReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"getBalanceContracts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getCurrentTaxBracket","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getLastPeriodWithdrawals","outputs":[{"internalType":"uint256","name":"totalWithdrawLastHour","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRewardYield","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTokensInLPCirculation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"getUserTotalOnDifferentContractsSphere","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"gonsForBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_router","type":"address"},{"internalType":"address","name":"_pair","type":"address"}],"name":"init","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initialDistributionFinished","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"investorInfoMap","outputs":[{"internalType":"uint256","name":"totalInvestableExchanged","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isLiquidityEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isMoveBalance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isSellHourlyLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isTaxBracket","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isTaxBracketEnabledInMoveFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isWall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualRebase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSync","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"markerPairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"}],"name":"moveBalance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextRebase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oldEpochBuyPressure","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oldEpochCollectedBuyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oldEpochCollectedSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oldEpochSellPressure","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"partyArray","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"partyArrayCheck","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"partyArrayFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"partyTime","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rebaseEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"rescueToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"riskFreeValueReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_autoRebase","type":"bool"}],"name":"setAutoRebase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"bool","name":"_value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_value","type":"address"}],"name":"setContractToChange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_liquidityReceiver","type":"address"},{"internalType":"address","name":"_treasuryReceiver","type":"address"},{"internalType":"address","name":"_riskFreeValueReceiver","type":"address"},{"internalType":"address","name":"_galaxyBondReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bool","name":"_value","type":"bool"},{"internalType":"uint256","name":"_type","type":"uint256"}],"name":"setFeeTypeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_riskFreeValueFee","type":"uint256"},{"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_buyGalaxyBondFee","type":"uint256"},{"internalType":"uint256","name":"_sellFeeTreasuryAdded","type":"uint256"},{"internalType":"uint256","name":"_sellFeeRFVAdded","type":"uint256"},{"internalType":"uint256","name":"_sellBurnFee","type":"uint256"},{"internalType":"uint256","name":"_sellGalaxyBond","type":"uint256"},{"internalType":"uint256","name":"_realFeePartyArray","type":"uint256"},{"internalType":"bool","name":"_isTaxBracketEnabledInMoveFee","type":"bool"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setFeesOnNormalTransfers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"setInitialDistributionFinished","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"setInvestRemovalDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"setIsLiquidityEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"setMaxInvestRemovablePerPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxSellTxn","type":"uint256"},{"internalType":"uint256","name":"_maxBuyTxn","type":"uint256"}],"name":"setMaxTransactionAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"setMoveBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_nextRebase","type":"uint256"}],"name":"setNextRebase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"setPartyListDivisor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"setPartyTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rebaseFrequency","type":"uint256"}],"name":"setRebaseFrequency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rewardYield","type":"uint256"},{"internalType":"uint256","name":"_rewardYieldDenominator","type":"uint256"}],"name":"setRewardYield","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_router","type":"address"},{"internalType":"address","name":"_pair","type":"address"}],"name":"setRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"setSellHourlyLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_num","type":"uint256"},{"internalType":"uint256","name":"_denom","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_taxBracketFeeMultiplier","type":"uint256"},{"internalType":"bool","name":"_isTaxBracketEnabled","type":"bool"}],"name":"setTaxBracketFeeMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_wallDivisor","type":"uint256"},{"internalType":"bool","name":"_isWall","type":"bool"}],"name":"setWallDivisor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bool","name":"_value","type":"bool"},{"internalType":"uint256","name":"_type","type":"uint256"}],"name":"setWhitelistSetters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"sphereGamesCheck","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"sphereGamesContracts","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"subContractCheck","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"subContracts","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxBracketMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"wallDivisor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600880546001600160701b0319166d0101000000010001000001000101179055662386f26fc100006017556000601a819055601b556103e86200004a6012600a62000483565b6200005b9064012a05f20062000498565b6200006990600019620004d0565b6200007790600019620004e7565b62000083919062000501565b601c55610e10601d556032601e556032601f556101ea6020556107086021556503962e7f4ce0602255603260235560006024556032602555601460265560006027556954b40b1f852bda000000602855601e6029556000602b556000602c556000602d556000602e556969e10de76676d08000006030556969e10de76676d08000006031556362311aa7603255600060335560006034556000603555600060365560006037556032603855602354602954601e5462000143919062000518565b6200014f919062000518565b60395560255460265460395462000167919062000518565b62000173919062000518565b603a556002603b55603c80546001600160a01b0319908116731a2ce410a034424b784d4b228f167a061b94cff417909155603d805482167320d61737f972eecb0af5f0a85ab358cd083dd56a908117909155603e8054831673826b8d2d523e7af40888754e3de64348c00b99f4179055603f80548316909117905560408054909116730d500b1d8e8ef31e21c99d1db9a6444d3adf12701790556a013da329b63364718000006043553480156200022957600080fd5b50604080518082018252600e81526d5370686572652046696e616e636560901b60208083019182528351808501909452600684526553504845524560d01b908401528151919291601291620002829160009190620002c8565b50815162000298906001906020850190620002c8565b506002805460ff929092166001600160a81b0319909216919091176101003302179055505060016003556200056f565b828054620002d69062000533565b90600052602060002090601f016020900481019282620002fa576000855562000345565b82601f106200031557805160ff191683800117855562000345565b8280016001018555821562000345579182015b828111156200034557825182559160200191906001019062000328565b506200035392915062000357565b5090565b5b8082111562000353576000815560010162000358565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620003c5578160001904821115620003a957620003a96200036e565b80851615620003b757918102915b93841c939080029062000389565b509250929050565b600082620003de575060016200047d565b81620003ed575060006200047d565b8160018114620004065760028114620004115762000431565b60019150506200047d565b60ff8411156200042557620004256200036e565b50506001821b6200047d565b5060208310610133831016604e8410600b841016171562000456575081810a6200047d565b62000462838362000384565b80600019048211156200047957620004796200036e565b0290505b92915050565b6000620004918383620003cd565b9392505050565b6000816000190483118215151615620004b557620004b56200036e565b500290565b634e487b7160e01b600052601260045260246000fd5b600082620004e257620004e2620004ba565b500690565b600082821015620004fc57620004fc6200036e565b500390565b600082620005135762000513620004ba565b500490565b600082198211156200052e576200052e6200036e565b500190565b600181811c908216806200054857607f821691505b6020821081036200056957634e487b7160e01b600052602260045260246000fd5b50919050565b615c6b806200057f6000396000f3fe6080604052600436106106865760003560e01c806377d947431161035f578063af9b800e116101d1578063deac8ba711610102578063f3a54f2c116100a0578063f887ea401161007a578063f887ea401461139c578063fcf23291146113bc578063ff63f147146113d1578063ff8ac17c146113f257600080fd5b8063f3a54f2c1461132f578063f6bbe5161461134f578063f703f36f1461136f57600080fd5b8063e49c26e3116100dc578063e49c26e3146112b9578063ef8cc78f146112d9578063f09a4016146112ef578063f2fde38b1461130f57600080fd5b8063deac8ba71461126d578063e080680414611283578063e15beb801461129957600080fd5b8063d0d1d3621161016f578063d439979011610149578063d4399790146111ae578063d6737a6e146111e7578063dcf4242414611207578063dd62ed3e1461122757600080fd5b8063d0d1d3621461114b578063d1fce2641461116b578063d2a66b111461118d57600080fd5b8063b9c95f8e116101ab578063b9c95f8e146110cf578063bc7e68a3146110e5578063c0da424c146110fb578063d08893581461112b57600080fd5b8063af9b800e1461105e578063b62496f51461107f578063b7426fb3146110af57600080fd5b80639ae7372d116102ab578063a457c2d711610249578063a9059cbb11610223578063a9059cbb14610fd8578063a9b38cb014610ff8578063acd738bc14611028578063ad570c091461103e57600080fd5b8063a457c2d714610f82578063a8aa1b3114610fa2578063a8bcc98f14610fc257600080fd5b80639d0014b1116102855780639d0014b114610f0c5780639d9241ec14610f2c578063a2b92d5614610f42578063a3c4e7d314610f6257600080fd5b80639ae7372d14610eae5780639b8d749514610ece5780639cf59d7f14610ee457600080fd5b806383823e1e116103185780639079f932116102f25780639079f93214610e385780639481205714610e5957806395d89b4114610e795780639a7a23d614610e8e57600080fd5b806383823e1e14610dd557806386fe511d14610df55780638da5cb5b14610e1557600080fd5b806377d9474314610d145780637965d56d14610d345780637a8ccfd914610d545780637d4b501714610d745780637ee029c414610d9457806380226a1214610db457600080fd5b806339509351116104f85780635aa821a91161044457806370a08231116103e2578063727dba53116103bc578063727dba5314610c9f578063753d02a114610cbf578063764d72bf14610cd457806376e90db514610cf457600080fd5b806370a0823114610c54578063715018a614610c74578063716cc28014610c8957600080fd5b806361a9d1b11161041e57806361a9d1b114610bf457806366eb378514610c095780636d351d1a14610c1e5780636ddd171314610c3357600080fd5b80635aa821a914610ba85780635f2a6d6914610bbe5780635fdd4ed514610bde57600080fd5b806345b10e12116104b15780634e66160c1161048b5780634e66160c14610b365780635569408614610b6657806357b535c014610b7c57806359b107b914610b9257600080fd5b806345b10e1214610ae0578063492b381e14610b005780634cd9ddf214610b1657600080fd5b80633950935114610a1f5780633c316fd514610a3f5780633c5c780014610a605780633c8e556d14610a8057806341d68b8f14610aa05780634460d3cf14610ac057600080fd5b80631489294a116105d257806326987b6011610570578063313ce5671161054a578063313ce5671461099057806335179d6b146109b25780633643f1d5146109d2578063368743be146109f257600080fd5b806326987b60146109505780632b112e49146109655780632df75cb11461097a57600080fd5b8063198b763e116105ac578063198b763e146108d05780631bd39674146108f057806323b872dd14610910578063264d26dd1461093057600080fd5b80631489294a1461087b57806315da01481461089b57806318160ddd146108bb57600080fd5b806307ebec271161063f5780630978310d116106195780630978310d146107eb5780630faacfe11461081b5780631276089b1461083b57806313b407ee1461085b57600080fd5b806307ebec271461078857806308b1fd8f146107ab578063095ea7b3146107cb57600080fd5b8063011bc9871461069257806301b16827146106b457806302259e9e146106d4578063031620c8146106fd57806304a17c5f1461072e57806306fdde031461076657600080fd5b3661068d57005b600080fd5b34801561069e57600080fd5b506106b26106ad36600461545d565b611413565b005b3480156106c057600080fd5b506106b26106cf366004615476565b6114bb565b3480156106e057600080fd5b506106ea60315481565b6040519081526020015b60405180910390f35b34801561070957600080fd5b5060085461071e90600160401b900460ff1681565b60405190151581526020016106f4565b34801561073a57600080fd5b50603f5461074e906001600160a01b031681565b6040516001600160a01b0390911681526020016106f4565b34801561077257600080fd5b5061077b611561565b6040516106f49190615498565b34801561079457600080fd5b5060085461071e9065010000000000900460ff1681565b3480156107b757600080fd5b50603d5461074e906001600160a01b031681565b3480156107d757600080fd5b5061071e6107e6366004615504565b6115f3565b3480156107f757600080fd5b5061071e61080636600461552e565b600f6020526000908152604090205460ff1681565b34801561082757600080fd5b506106ea61083636600461552e565b611660565b34801561084757600080fd5b506106b2610856366004615557565b6117d3565b34801561086757600080fd5b506106b2610876366004615574565b61184d565b34801561088757600080fd5b5060405461074e906001600160a01b031681565b3480156108a757600080fd5b506106b26108b63660046155ab565b611ae7565b3480156108c757600080fd5b506019546106ea565b3480156108dc57600080fd5b5061074e6108eb36600461545d565b611cee565b3480156108fc57600080fd5b506106ea61090b36600461545d565b611d18565b34801561091c57600080fd5b5061071e61092b3660046155ea565b611d28565b34801561093c57600080fd5b50603c5461074e906001600160a01b031681565b34801561095c57600080fd5b506106ea611de8565b34801561097157600080fd5b506106ea611dfa565b34801561098657600080fd5b506106ea602f5481565b34801561099c57600080fd5b5060025460405160ff90911681526020016106f4565b3480156109be57600080fd5b5061074e6109cd36600461545d565b611ebf565b3480156109de57600080fd5b506106b26109ed366004615557565b611ecf565b3480156109fe57600080fd5b506106ea610a0d36600461552e565b60146020526000908152604090205481565b348015610a2b57600080fd5b5061071e610a3a366004615504565b611f4a565b348015610a4b57600080fd5b5060085461071e90600160601b900460ff1681565b348015610a6c57600080fd5b506106b2610a7b366004615574565b611fd0565b348015610a8c57600080fd5b506106b2610a9b366004615626565b612226565b348015610aac57600080fd5b506106b2610abb36600461567a565b6122a5565b348015610acc57600080fd5b5061071e610adb36600461552e565b612389565b348015610aec57600080fd5b506106b2610afb3660046156ad565b6124f0565b348015610b0c57600080fd5b506106ea602c5481565b348015610b2257600080fd5b506106b2610b3136600461545d565b6125ca565b348015610b4257600080fd5b5061071e610b5136600461552e565b60136020526000908152604090205460ff1681565b348015610b7257600080fd5b506106ea60345481565b348015610b8857600080fd5b506106ea60375481565b348015610b9e57600080fd5b506106ea60395481565b348015610bb457600080fd5b506106ea60305481565b348015610bca57600080fd5b506106b2610bd936600461552e565b61266b565b348015610bea57600080fd5b506106ea60385481565b348015610c0057600080fd5b506106b26126e2565b348015610c1557600080fd5b506106b2612868565b348015610c2a57600080fd5b506106ea6128a1565b348015610c3f57600080fd5b5060085461071e90600160681b900460ff1681565b348015610c6057600080fd5b506106ea610c6f36600461552e565b6128b3565b348015610c8057600080fd5b506106b26128ed565b348015610c9557600080fd5b506106ea602a5481565b348015610cab57600080fd5b506106ea610cba36600461552e565b61296b565b348015610ccb57600080fd5b506106b2612a37565b348015610ce057600080fd5b506106b2610cef36600461552e565b612bb3565b348015610d0057600080fd5b506106b2610d0f36600461545d565b612c57565b348015610d2057600080fd5b5061074e610d2f36600461545d565b612d03565b348015610d4057600080fd5b506106ea610d4f36600461545d565b612d33565b348015610d6057600080fd5b506106b2610d6f36600461545d565b612d43565b348015610d8057600080fd5b50603e5461074e906001600160a01b031681565b348015610da057600080fd5b506106b2610daf3660046155ab565b612de5565b348015610dc057600080fd5b5060085461071e90600160381b900460ff1681565b348015610de157600080fd5b506106b2610df0366004615557565b612f31565b348015610e0157600080fd5b506106ea610e1036600461552e565b612fac565b348015610e2157600080fd5b5060025461010090046001600160a01b031661074e565b348015610e4457600080fd5b5060085461071e906301000000900460ff1681565b348015610e6557600080fd5b506106b2610e74366004615557565b612fcd565b348015610e8557600080fd5b5061077b61304a565b348015610e9a57600080fd5b506106b2610ea9366004615574565b613059565b348015610eba57600080fd5b506106b2610ec936600461545d565b613315565b348015610eda57600080fd5b506106ea60335481565b348015610ef057600080fd5b50602254601754604080519283526020830191909152016106f4565b348015610f1857600080fd5b506106b2610f2736600461545d565b6133bd565b348015610f3857600080fd5b506106ea603a5481565b348015610f4e57600080fd5b506106b2610f5d366004615557565b6133f1565b348015610f6e57600080fd5b506106ea610f7d36600461552e565b61346d565b348015610f8e57600080fd5b5061071e610f9d366004615504565b6134c8565b348015610fae57600080fd5b5060425461074e906001600160a01b031681565b348015610fce57600080fd5b506106ea603b5481565b348015610fe457600080fd5b5061071e610ff3366004615504565b6135af565b34801561100457600080fd5b5061071e61101336600461552e565b60126020526000908152604090205460ff1681565b34801561103457600080fd5b506106ea60355481565b34801561104a57600080fd5b506106b26110593660046156ad565b6135ee565b34801561106a57600080fd5b5060085461071e90600160301b900460ff1681565b34801561108b57600080fd5b5061071e61109a36600461552e565b60106020526000908152604090205460ff1681565b3480156110bb57600080fd5b5061071e6110ca36600461552e565b61366e565b3480156110db57600080fd5b506106ea602e5481565b3480156110f157600080fd5b506106ea60325481565b34801561110757600080fd5b5061071e61111636600461552e565b60116020526000908152604090205460ff1681565b34801561113757600080fd5b506106b26111463660046156d2565b6138f9565b34801561115757600080fd5b506106b26111663660046155ab565b6139c1565b34801561117757600080fd5b5060085461071e90640100000000900460ff1681565b34801561119957600080fd5b5060085461071e90600160501b900460ff1681565b3480156111ba57600080fd5b5061071e6111c936600461552e565b6001600160a01b03166000908152600c602052604090205460ff1690565b3480156111f357600080fd5b5061074e61120236600461545d565b613bc2565b34801561121357600080fd5b506106b2611222366004615476565b613bd2565b34801561123357600080fd5b506106ea61124236600461567a565b6001600160a01b03918216600090815260156020908152604080832093909416825291909152205490565b34801561127957600080fd5b506106ea60365481565b34801561128f57600080fd5b506106ea602d5481565b3480156112a557600080fd5b506106b26112b4366004615557565b613cf0565b3480156112c557600080fd5b506106b26112d4366004615707565b613d6b565b3480156112e557600080fd5b506106ea602b5481565b3480156112fb57600080fd5b506106b261130a36600461567a565b613fae565b34801561131b57600080fd5b506106b261132a36600461552e565b614211565b34801561133b57600080fd5b506106b261134a366004615557565b61427d565b34801561135b57600080fd5b5061074e61136a36600461545d565b6142bf565b34801561137b57600080fd5b506106ea61138a36600461552e565b60096020526000908152604090205481565b3480156113a857600080fd5b5060415461074e906001600160a01b031681565b3480156113c857600080fd5b506106ea6142cf565b3480156113dd57600080fd5b5060085461071e90600160481b900460ff1681565b3480156113fe57600080fd5b5060085461071e90600160581b900460ff1681565b60025461010090046001600160a01b0316331461144b5760405162461bcd60e51b815260040161144290615791565b60405180910390fd5b604b8111156114885760405162461bcd60e51b81526020600482015260096024820152686d617820706172747960b81b6044820152606401611442565b601f81905560405181907f99595bf6e2815a96807fe941420680afd549926424c257ec2c34de018f2f732290600090a250565b336000908152600e602052604090205460ff1661151a5760405162461bcd60e51b815260206004820152601c60248201527f4e6f7420616c6c6f77656420666f7220726577617264207969656c64000000006044820152606401611442565b602282905560178190556040513381524290829084907f8164f36e13b64f87a896ae3bb092f0ed3ea235f8a9192c6aecb51beabcea10d59060200160405180910390a45050565b606060008054611570906157b4565b80601f016020809104026020016040519081016040528092919081815260200182805461159c906157b4565b80156115e95780601f106115be576101008083540402835291602001916115e9565b820191906000526020600020905b8154815290600101906020018083116115cc57829003601f168201915b5050505050905090565b3360008181526015602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061164e9086815260200190565b60405180910390a35060015b92915050565b60008060005b6007548110156117175760078181548110611683576116836157e8565b60009182526020909120015460405163453d3db360e11b81526001600160a01b03868116600483015290911690638a7a7b6690602401602060405180830381865afa1580156116d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116fa91906157fe565b611704908361582d565b508061170f81615845565b915050611666565b5060005b6006548110156117cc5760068181548110611738576117386157e8565b6000918252602090912001546040516370a0823160e01b81526001600160a01b038681166004830152909116906370a0823190602401602060405180830381865afa15801561178b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117af91906157fe565b6117b9908361582d565b50806117c481615845565b91505061171b565b5092915050565b60025461010090046001600160a01b031633146118025760405162461bcd60e51b815260040161144290615791565b6008805464ff000000001916640100000000831515908102919091179091556040517fadd2ae1e48fad2610e967f44a01d455adca45c693dc959f9a0b5b6f807946f2390600090a250565b60025461010090046001600160a01b0316331461187c5760405162461bcd60e51b815260040161144290615791565b6001600160a01b03821660009081526012602052604090205481151560ff9091161515036118e05760405162461bcd60e51b815260206004820152601160248201527015985b1d5948185b1c9958591e481cd95d607a1b6044820152606401611442565b6001600160a01b0382166000908152601260205260409020805460ff1916821580159190911790915561195d57600680546001810182556000919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319166001600160a01b038416179055611aab565b6006546001106119a15760405162461bcd60e51b815260206004820152600f60248201526e2932b8bab4b932b21018903830b4b960891b6044820152606401611442565b60005b600654811015611aa957826001600160a01b0316600682815481106119cb576119cb6157e8565b6000918252602090912001546001600160a01b031603611a9757600680546119f59060019061585e565b81548110611a0557611a056157e8565b600091825260209091200154600680546001600160a01b039092169183908110611a3157611a316157e8565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506006805480611a7057611a70615875565b600082815260209020810160001990810180546001600160a01b0319169055019055611aa9565b80611aa181615845565b9150506119a4565b505b604051811515906001600160a01b038416907fb165f6ff487f30978c0ede582c4b90aea6317730c4ccca38529fbd11b74a2c3e90600090a35050565b60025461010090046001600160a01b03163314611b165760405162461bcd60e51b815260040161144290615791565b80600103611bb3576001600160a01b0383166000908152600c602052604090205482151560ff909116151503611b5e5760405162461bcd60e51b81526004016114429061588b565b6001600160a01b0383166000818152600c6020526040808220805460ff191686151590811790915590519092917f507b98c4fc0974cbaaade1c558d03191b924272e491fc34c645965b5c75420fa91a3505050565b80600203611c50576001600160a01b0383166000908152600a602052604090205482151560ff909116151503611bfb5760405162461bcd60e51b81526004016114429061588b565b6001600160a01b0383166000818152600a6020526040808220805460ff191686151590811790915590519092917f89e1f304a67b18800fe8e70e1be2fe04d7c4fd682d71141198828c143c41d9b891a3505050565b80600303611ce9576001600160a01b0383166000908152600b602052604090205482151560ff909116151503611c985760405162461bcd60e51b81526004016114429061588b565b6001600160a01b0383166000818152600b6020526040808220805460ff191686151590811790915590519092917fd73ba49bcc1c8c1e82b426c44467e431a9247b79f9528fac3ab2847c3202b98391a35b505050565b60068181548110611cfe57600080fd5b6000918252602090912001546001600160a01b0316905081565b60006018548261165a91906158b0565b6000826001600160a01b038116611d515760405162461bcd60e51b8152600401611442906158cf565b6001600160a01b038516600090815260156020908152604080832033845290915290205460001914611dd1576001600160a01b0385166000908152601560209081526040808320338452909152902054611dac90849061585e565b6001600160a01b03861660009081526015602090815260408083203384529091529020555b611ddc85858561432d565b50600195945050505050565b6000611df5602f54612d33565b905090565b601854603d546001600160a01b03166000908152601660205260408120547f0263c2b778d062355049effc2dece97bc6547ff8a88a3258daa512061c2153dd5461dead83527f290d80ce586bfe95e1ebf348e3ba109df813891ad867417e64d38c5a50473b5754929392611e706012600a6159e3565b611e7f9064012a05f2006158b0565b611e8b90600019615a05565b611e979060001961585e565b611ea1919061585e565b611eab919061585e565b611eb5919061585e565b611df59190615a19565b60058181548110611cfe57600080fd5b60025461010090046001600160a01b03163314611efe5760405162461bcd60e51b815260040161144290615791565b6008805466ff0000000000001916600160301b831515908102919091179091556040517f7155abe5d76e40e32b68c168e9dde4055d00e1ffdb30d0e6d265622716a1d92390600090a250565b3360009081526015602090815260408083206001600160a01b0386168452909152812054611f7990839061585e565b3360008181526015602090815260408083206001600160a01b038916808552908352928190208590555193845290927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910161164e565b60025461010090046001600160a01b03163314611fff5760405162461bcd60e51b815260040161144290615791565b6001600160a01b03821660009081526013602052604090205481151560ff9091161515036120635760405162461bcd60e51b815260206004820152601160248201527015985b1d5948185b1c9958591e481cd95d607a1b6044820152606401611442565b6001600160a01b0382166000908152601360205260409020805460ff191682158015919091179091556120e057600780546001810182556000919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319166001600160a01b0384161790556121ea565b60005b6007548110156121e857826001600160a01b03166007828154811061210a5761210a6157e8565b6000918252602090912001546001600160a01b0316036121d657600780546121349060019061585e565b81548110612144576121446157e8565b600091825260209091200154600780546001600160a01b039092169183908110612170576121706157e8565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060078054806121af576121af615875565b600082815260209020810160001990810180546001600160a01b03191690550190556121e8565b806121e081615845565b9150506120e3565b505b604051811515906001600160a01b038416907f8f1936ddb0e6b394e1edf1ac695592d1a059eecc4786f7083e71b11ec945e7ca90600090a35050565b60025461010090046001600160a01b031633146122555760405162461bcd60e51b815260040161144290615791565b603c80546001600160a01b039586166001600160a01b031991821617909155603d805494861694821694909417909355603e805492851692841692909217909155603f8054919093169116179055565b60025461010090046001600160a01b031633146122d45760405162461bcd60e51b815260040161144290615791565b604180546001600160a01b03199081166001600160a01b03858116918217909355604280549092168484161782553060008181526015602090815260408083209483529390528281206000199081905591815282812082905583548516815291909120555461234591166001613059565b806001600160a01b0316826001600160a01b03167f50bfd9c0b9815c386500292d8de123643c6c935ffd384a364381b3b11e281e5c60405160405180910390a35050565b60025460009061010090046001600160a01b031633146123bb5760405162461bcd60e51b815260040161144290615791565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015612402573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061242691906157fe565b905080336001600160a01b0316846001600160a01b03167fed3c8f48a6c3247e7a68382e752734feed4bf63004c064208e3117e35097dabb4260405161246e91815260200190565b60405180910390a460405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0384169063a9059cbb906044016020604051808303816000875af11580156124c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124e79190615a2d565b9150505b919050565b60025461010090046001600160a01b0316331461251f5760405162461bcd60e51b815260040161144290615791565b60328211156125705760405162461bcd60e51b815260206004820152601860248201527f6d617820627261636b65742066656520657863656564656400000000000000006044820152606401611442565b60388290556008805469ff0000000000000000001916600160481b8315159081029190911790915560405142919084907f0d9ee6cc1c2d2a5825fe816f3cfc6ab44f33303930004a3e26a3259616c9add890600090a45050565b60025461010090046001600160a01b031633146125f95760405162461bcd60e51b815260040161144290615791565b6107088111156126365760405162461bcd60e51b81526020600482015260086024820152670a8dede40d0d2ced60c31b6044820152606401611442565b6021819055604051429082907f9147f2d3ae1a14e9012c81c143c7c834a15f3afffcd29d3b35631aa0a3b0093e90600090a350565b60025461010090046001600160a01b0316331461269a5760405162461bcd60e51b815260040161144290615791565b604080546001600160a01b0319166001600160a01b038316908117825590517faab8973b5857f63f79e83682350a71c735f612a5f7620d42d249227023f9525490600090a250565b6002600354036127345760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611442565b6002600355336000908152600d602052604090205460ff166127895760405162461bcd60e51b815260206004820152600e60248201526d63616e206e6f742072656261736560901b6044820152606401611442565b60445460ff16156127c85760405162461bcd60e51b81526020600482015260096024820152682a393c9030b3b0b4b760b91b6044820152606401611442565b4260325411156128085760405162461bcd60e51b815260206004820152600b60248201526a4e6f7420696e2074696d6560a81b6044820152606401611442565b6000805b60175460225460195461281f91906158b0565b6128299190615a19565b915061283482614972565b508061283f81615a4a565b915050426032541080156128535750606481125b61280c5761285f612a37565b50506001600355565b60025461010090046001600160a01b031633146128975760405162461bcd60e51b815260040161144290615791565b61289f614ae1565b565b6000601854601c54611df59190615a19565b60006018546000036128c757506000919050565b6018546001600160a01b03831660009081526016602052604090205461165a9190615a19565b60025461010090046001600160a01b0316331461291c5760405162461bcd60e51b815260040161144290615791565b6002546040516101009091046001600160a01b0316907ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482090600090a260028054610100600160a81b0319169055565b6001600160a01b038116600090815260096020526040812060018101825b8154811015612a2f5760008282815481106129a6576129a66157e8565b9060005260206000209060020201604051806040016040529081600082015481526020016001820154815250509050601d54426129e3919061585e565b815110612a1c578282815481106129fc576129fc6157e8565b90600052602060002090600202016001015485612a19919061582d565b94505b5080612a2781615845565b915050612989565b505050919050565b60005b600454811015612bb05760048181548110612a5757612a576157e8565b60009182526020822001546040805160016209351760e01b0319815290516001600160a01b039092169263fff6cae99260048084019382900301818387803b158015612aa257600080fd5b505af1925050508015612ab3575060015b612b9e57612abf615a62565b806308c379a003612b925750612ad3615ab9565b80612ade5750612b94565b7f6bb22edb6252e9e04a83e4886d28bc5662efe624ec664e2d0e4b38854c3c2383604051612b4d9060208082526027908201527f6d616e75616c53796e6328293a205f6d616b657250616972732e73796e6328296040820152660811985a5b195960ca1b606082015260800190565b60405180910390a17f6bb22edb6252e9e04a83e4886d28bc5662efe624ec664e2d0e4b38854c3c238381604051612b849190615498565b60405180910390a150612b9e565b505b3d6000803e3d6000fd5b80612ba881615845565b915050612a3a565b50565b60025461010090046001600160a01b03163314612be25760405162461bcd60e51b815260040161144290615791565b60405147906001600160a01b0383169082156108fc029083906000818181858888f19350505050158015612c1a573d6000803e3d6000fd5b5042826001600160a01b0316827f764ac18b38788ceb5d273876574dd816d95e562605c44e30f5638e7f92ceef8860405160405180910390a45050565b60025461010090046001600160a01b03163314612c865760405162461bcd60e51b815260040161144290615791565b6a013da329b63364718000008111612cd05760405162461bcd60e51b815260206004820152600d60248201526c42656c6f77206d696e696d756d60981b6044820152606401611442565b604381905560405181907f3e2b28733d83c500897cb5d9f71e9286f059e81ba4ba63584b43a9278879ca4790600090a250565b600060048281548110612d1857612d186157e8565b6000918252602090912001546001600160a01b031692915050565b60006018548261165a9190615a19565b60025461010090046001600160a01b03163314612d725760405162461bcd60e51b815260040161144290615791565b611c208110612db25760405162461bcd60e51b815260206004820152600c60248201526b6f766572203220686f75727360a01b6044820152606401611442565b601d81905560405181907f5c630b842a78838557c54c519fb3fb1eedc9157777ef4e42388dcbf5dd1f80b390600090a250565b60025461010090046001600160a01b03163314612e145760405162461bcd60e51b815260040161144290615791565b80600103612e85576001600160a01b0383166000908152600d602052604090205482151560ff909116151503612e5c5760405162461bcd60e51b81526004016114429061588b565b6001600160a01b0383166000908152600d60205260409020805460ff1916831515179055612ef2565b80600203612ef2576001600160a01b0383166000908152600e602052604090205482151560ff909116151503612ecd5760405162461bcd60e51b81526004016114429061588b565b6001600160a01b0383166000908152600e60205260409020805460ff19168315151790555b80821515846001600160a01b03167f94c0aba5d4b641cd28ff4ae32d7c716fd7a3fee1a1b98e6f4d81bad3256ab2be60405160405180910390a4505050565b60025461010090046001600160a01b03163314612f605760405162461bcd60e51b815260040161144290615791565b6008805460ff60601b1916600160601b831515908102919091179091556040514291907f6e78862f553225378cfb6846053b9a466b9a47afcc225a2a3263ea536d991e4090600090a350565b600080612fb8836128b3565b9050612fc383611660565b6124e7908261582d565b60025461010090046001600160a01b03163314612ffc5760405162461bcd60e51b815260040161144290615791565b6008805468ff00000000000000001916600160401b831515908102919091179091556040517f10b5d8d4b73da981d3f4003317acb1c94eb8ecc35278cbb931228c3b3032dbae90600090a250565b606060018054611570906157b4565b60025461010090046001600160a01b031633146130885760405162461bcd60e51b815260040161144290615791565b6001600160a01b03821660009081526010602052604090205481151560ff9091161515036130e65760405162461bcd60e51b815260206004820152600b60248201526a185b1c9958591e481cd95d60aa1b6044820152606401611442565b6001600160a01b0382166000908152601060205260409020805460ff19168215801591909117909155613175576004805460018101825560009182527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b0319166001600160a01b038516179055602a80549161316b83615845565b91905055506132d9565b6004546001106131b95760405162461bcd60e51b815260206004820152600f60248201526e2932b8bab4b932b21018903830b4b960891b6044820152606401611442565b60005b6004548110156132d757826001600160a01b0316600482815481106131e3576131e36157e8565b6000918252602090912001546001600160a01b0316036132c5576004805461320d9060019061585e565b8154811061321d5761321d6157e8565b600091825260209091200154600480546001600160a01b039092169183908110613249576132496157e8565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600480548061328857613288615875565b600082815260208120820160001990810180546001600160a01b0319169055909101909155602a8054916132bb83615b43565b91905055506132d7565b806132cf81615845565b9150506131bc565b505b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b60025461010090046001600160a01b031633146133445760405162461bcd60e51b815260040161144290615791565b4281116133885760405162461bcd60e51b815260206004820152601260248201527118d85b881b9bdd081899481a5b881c185cdd60721b6044820152606401611442565b6032819055604051429082907f3a97bbcdf9724661e5a691bf707b0b97b7fb6814227e9ee3253016b1198e32e790600090a350565b60025461010090046001600160a01b031633146133ec5760405162461bcd60e51b815260040161144290615791565b602855565b60025461010090046001600160a01b031633146134205760405162461bcd60e51b815260040161144290615791565b6008805467ff000000000000001916600160381b831515908102919091179091556040517f5a0f55ed896b3fb4c4609bd54602a6dc0d5b4fbb710e0a47566ae502d7d79f7490600090a250565b60008061347983612fac565b905060006134856142cf565b6134908360646158b0565b61349a9190615a19565b90506000600a82106134ad57600a6134af565b815b9050603854816134bf91906158b0565b95945050505050565b3360009081526015602090815260408083206001600160a01b038616845290915281205480831061351c573360009081526015602090815260408083206001600160a01b038816845290915281205561354b565b613526838261585e565b3360009081526015602090815260408083206001600160a01b03891684529091529020555b3360008181526015602090815260408083206001600160a01b038916808552908352928190205490519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060019392505050565b6000826001600160a01b0381166135d85760405162461bcd60e51b8152600401611442906158cf565b6135e333858561432d565b506001949350505050565b60025461010090046001600160a01b0316331461361d5760405162461bcd60e51b815260040161144290615791565b603b8290556008805460ff60581b1916600160581b8315159081029190911790915560405183907f10145d369bab6fd20cd4cd57ed0fa0d6ebb131e9bb44c901ef1796cb333be7db90600090a35050565b6000816001600160a01b0381166136975760405162461bcd60e51b8152600401611442906158cf565b600854600160381b900460ff166136df5760405162461bcd60e51b815260206004820152600c60248201526b63616e206e6f74206d6f766560a01b6044820152606401611442565b600854640100000000900460ff166137255760405162461bcd60e51b81526020600482015260096024820152682a3930b2329037b33360b91b6044820152606401611442565b336000908152600f602052604090205460ff16156137735760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b6044820152606401611442565b600061377e336128b3565b116137b75760405162461bcd60e51b81526020600482015260096024820152684e6f20746f6b656e7360b81b6044820152606401611442565b60006137c233611660565b905080156138035760405162461bcd60e51b815260206004820152600e60248201526d6f746865722062616c616e63657360901b6044820152606401611442565b336000908152600f60209081526040808320805460ff191660011790556016909152902054613832818061585e565b33600090815260166020526040808220929092556001600160a01b0387168152205461385f90829061582d565b6001600160a01b0386166000818152601660205260409020919091556018543390600080516020615c168339815191529061389a9085615a19565b60405190815260200160405180910390a3604080513381526001600160a01b03871660208201527fb26ec1d3e73f558763eaa40e4dce759ce985575e28d56966bb2092847a786c74910160405180910390a16001935050505b50919050565b60025461010090046001600160a01b031633146139285760405162461bcd60e51b815260040161144290615791565b6008805460ff60681b1916600160681b85151502179055808261394d6012600a6159e3565b61395c9064012a05f2006158b0565b61396890600019615a05565b6139749060001961585e565b61397e91906158b0565b6139889190615a19565b601c5560405181908390851515907f512cfe1aedabdc06d12a680ace7434d88a9532c8853515536842f5ff52cbe55a90600090a4505050565b60025461010090046001600160a01b031633146139f05760405162461bcd60e51b815260040161144290615791565b6001600160a01b0383166000908152601160209081526040808320805460ff191686158015919091179091556014909252909120829055613a7b57600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b0319166001600160a01b038516179055613b85565b60005b600554811015613b8357836001600160a01b031660058281548110613aa557613aa56157e8565b6000918252602090912001546001600160a01b031603613b715760058054613acf9060019061585e565b81548110613adf57613adf6157e8565b600091825260209091200154600580546001600160a01b039092169183908110613b0b57613b0b6157e8565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506005805480613b4a57613b4a615875565b600082815260209020810160001990810180546001600160a01b0319169055019055613b83565b80613b7b81615845565b915050613a7e565b505b604051821515906001600160a01b038516907f6b76292a2c57cfaa171cd21b53bac8a6a622da6e9c08b9f63a79a50275ff538990600090a3505050565b60048181548110611cfe57600080fd5b60025461010090046001600160a01b03163314613c015760405162461bcd60e51b815260040161144290615791565b6969e10de76676d08000008211613c5a5760405162461bcd60e51b815260206004820152601960248201527f42656c6f77206d696e696d756d2073656c6c20616d6f756e74000000000000006044820152606401611442565b6969e10de76676d08000008111613cb35760405162461bcd60e51b815260206004820152601860248201527f42656c6f77206d696e696d756d2062757920616d6f756e7400000000000000006044820152606401611442565b603182905560308190556040514290829084907f25a1f4940c045b289fe17c2a70381f78360db0e2ad0993cd1f3ffd04d120ad5290600090a45050565b60025461010090046001600160a01b03163314613d1f5760405162461bcd60e51b815260040161144290615791565b6008805463ff00000019166301000000831515908102919091179091556040514291907f832ed7895e341f17afc036cc051864a91809bb5c898a2d5645323b97b6925ec990600090a350565b60025461010090046001600160a01b03163314613d9a5760405162461bcd60e51b815260040161144290615791565b8a601e819055508960238190555088602981905550856026819055508460258190555086601b8190555087601a819055508360248190555082602781905550816020819055506000602354601b54601a54602954601e54613dfb919061582d565b613e05919061582d565b613e0f919061582d565b613e19919061582d565b9050600060275460245460255460265485613e34919061582d565b613e3e919061582d565b613e48919061582d565b613e52919061582d565b905060fa8210613e935760405162461bcd60e51b815260206004820152600c60248201526b6d617820627579206665657360a01b6044820152606401611442565b60fa8110613ed35760405162461bcd60e51b815260206004820152600d60248201526c6d61782073656c6c206665657360981b6044820152606401611442565b6101eb60205410613f175760405162461bcd60e51b815260206004820152600e60248201526d6d6178207061727479206665657360901b6044820152606401611442565b6039829055603a8190556008805460ff60501b1916600160501b85151590810291909117909155602454604080518b8152602081018b90529081018d905260608101919091526080810184905260a08101919091528b908d908f907f36595b1e2bf5f63c84d6962205722de0133c54fdd79516c6f3741aba06ee7d969060c00160405180910390a450505050505050505050505050565b60025461010090046001600160a01b03163314613fdd5760405162461bcd60e51b815260040161144290615791565b60085462010000900460ff161561402c5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401611442565b604180546001600160a01b03199081166001600160a01b0385811691821790935560428054909216848416178255306000818152601560209081526040808320948352939052828120600019908190559181528281208290559254909316825290205561409b6012600a6159e3565b6140aa9064012a05f2006158b0565b6019556140b96012600a6159e3565b6140c89064012a05f2006158b0565b6140d490600019615a05565b6140e09060001961585e565b336000908152601660205260409020556019546140ff6012600a6159e3565b61410e9064012a05f2006158b0565b61411a90600019615a05565b6141269060001961585e565b6141309190615a19565b601855603d546001600160a01b039081166000908152600c60205260408082208054600160ff199182168117909255603e54851684528284208054821683179055603f54909416835281832080548516821790553083528183208054851682179055338352912080549092161790556141b0670de0b6b3a7640000611d18565b602f556141bf33600180612de5565b6141cc3360016002612de5565b6008805462ff00001916620100001790556019546040513391600091600080516020615c16833981519152916142059190815260200190565b60405180910390a35050565b60025461010090046001600160a01b031633146142405760405162461bcd60e51b815260040161144290615791565b6040516001600160a01b038216907fb1eb34684306bcea7f9ed508931dc13b5993c8fdd00fe65c2e4680ae2610a70190600090a2612bb081614f34565b60025461010090046001600160a01b031633146142ac5760405162461bcd60e51b815260040161144290615791565b6008805460ff1916911515919091179055565b60078181548110611cfe57600080fd5b60008060005b6004548110156138f35761430f600482815481106142f5576142f56157e8565b6000918252602090912001546001600160a01b03166128b3565b614319908361582d565b91508061432581615845565b9150506142d5565b6001600160a01b0383166000908152600c6020526040812054819060ff168061436e57506001600160a01b0384166000908152600c602052604090205460ff165b600854909150640100000000900460ff16806143875750805b6143bf5760405162461bcd60e51b81526020600482015260096024820152682a3930b2329037b33360b91b6044820152606401611442565b6001600160a01b03841660009081526010602052604090205460ff1680156143e5575080155b1561442c5760315483111561442c5760405162461bcd60e51b815260206004820152600d60248201526c151bdbc81b5d58da081cd95b1b609a1b6044820152606401611442565b6001600160a01b03851660009081526010602052604090205460ff168061446b57506001600160a01b03841660009081526010602052604090205460ff165b156144a857600854610100900460ff161561449857614488612a37565b6008805461ff00191690556144a8565b6008805461ff0019166101001790555b6001600160a01b03841660009081526010602052604090205460ff1680156144ce575080155b80156144f257506001600160a01b03851660009081526011602052604090205460ff165b80156145075750600854600160601b900460ff165b1561455757601f5460315461451c9190615a19565b8311156145575760405162461bcd60e51b81526020600482015260096024820152683830b93a3c903234bb60b91b6044820152606401611442565b6001600160a01b03851660009081526010602052604090205460ff16801561457d575080155b156145c3576030548311156145c35760405162461bcd60e51b815260206004820152600c60248201526b746f6f206d7563682062757960a01b6044820152606401611442565b6001600160a01b03841660009081526010602052604090205460ff1680156145e9575080155b80156145fe5750600854600160401b900460ff165b156146b4576001600160a01b038516600090815260096020526040812090600182019061462a8861296b565b604354614637919061585e565b9050808611156146785760405162461bcd60e51b815260206004820152600c60248201526b6d617820776974686472617760a01b6044820152606401611442565b50604080518082019091524281526020808201878152835460018181018655600095865292909420925160029094029092019283559051910155505b60445460ff16156146d2576146ca858585614fe6565b91505061496b565b6000601854846146e291906158b0565b90506146ec6150a3565b156146f9576146f9614ae1565b6001600160a01b03861660009081526016602052604090205461471d90829061585e565b6001600160a01b038716600090815260166020526040812091909155614743878761512b565b61474d5781614758565b6147588787846151d0565b6001600160a01b03871660009081526016602052604090205490915061477f90829061582d565b6001600160a01b03871660009081526016602052604090205560325442101580156147b357506008546301000000900460ff165b80156147d857506001600160a01b03871660009081526010602052604090205460ff16155b80156147fd57506001600160a01b03861660009081526010602052604090205460ff16155b156148385761480a6153bb565b614812612a37565b614838602b8054603355602c54603455600090819055602e8054603655602d5460355555565b6001600160a01b03871660009081526010602052604090205460ff16156148af576018546148669083615a19565b602b6000828254614877919061582d565b90915550506018546148899082615a19565b614893908361585e565b602c60008282546148a4919061582d565b909155506149219050565b6001600160a01b03861660009081526010602052604090205460ff1615614921576018546148dd9083615a19565b602e60008282546148ee919061582d565b90915550506018546149009082615a19565b61490a908361585e565b602d600082825461491b919061582d565b90915550505b856001600160a01b0316876001600160a01b0316600080516020615c16833981519152601854846149529190615a19565b60405190815260200160405180910390a3600193505050505b9392505050565b60004260325411156149b95760405162461bcd60e51b815260206004820152601060248201526f72656261736520746f6f206561726c7960801b6044820152606401611442565b6032546000839003614a0b57807f72725a3b1e5bd622d6bcd1339bb31279c351abe8f541ac7fd320f24e1b1641f26019546040516149f991815260200190565b60405180910390a25050601954919050565b6000831215614a3257614a1d83615b5a565b601954614a2a919061585e565b601955614a44565b82601954614a40919061582d565b6019555b6019546001600160801b031015614a61576001600160801b036019555b601954614a706012600a6159e3565b614a7f9064012a05f2006158b0565b614a8b90600019615a05565b614a979060001961585e565b614aa19190615a19565b601855614aad81615422565b807f72725a3b1e5bd622d6bcd1339bb31279c351abe8f541ac7fd320f24e1b1641f26019546040516149f991815260200190565b6044805460ff19166001179055600854600090600160301b900460ff16614b09576000614b0d565b601e545b90506000603a54603954614b21919061582d565b90506000614b2e306128b3565b90506000479050600083602454601a54614b48919061582d565b614b5290856158b0565b614b5c9190615a19565b9050614b6781615450565b6000600285614b7688876158b0565b614b809190615a19565b614b8a9190615a19565b9050600082614b99838761585e565b614ba3919061585e565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110614bdd57614bdd6157e8565b6001600160a01b039283166020918202929092010152604054825191169082906001908110614c0e57614c0e6157e8565b6001600160a01b03928316602091820292909201015260415460405163791ac94760e01b815291169063791ac94790614c54908590600090869030904290600401615b76565b600060405180830381600087803b158015614c6e57600080fd5b505af1158015614c82573d6000803e3d6000fd5b5050505060008547614c94919061585e565b90506000602454601a54614ca8919061582d565b614cb360028c615a19565b614cbd908b61585e565b614cc7919061585e565b90506000600282614cd88d866158b0565b614ce29190615a19565b614cec9190615a19565b9050600082602554602354614d01919061582d565b614d0b90866158b0565b614d159190615a19565b9050600083602754601b54614d2a919061582d565b614d3490876158b0565b614d3e9190615a19565b905060008183614d4e868961585e565b614d58919061585e565b614d62919061585e565b603d546040519192506000916001600160a01b039091169061753090849084818181858888f193505050503d8060008114614db9576040519150601f19603f3d011682016040523d82523d6000602084013e614dbe565b606091505b5050603e546040519192506001600160a01b0316906175309086906000818181858888f193505050503d8060008114614e13576040519150601f19603f3d011682016040523d82523d6000602084013e614e18565b606091505b5050603f546040519192506001600160a01b0316906175309085906000818181858888f193505050503d8060008114614e6d576040519150601f19603f3d011682016040523d82523d6000602084013e614e72565b606091505b5060009250508a159050614f1957604154603c5460405163f305d71960e01b8152306004820152602481018d905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af1158015614ef0573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190614f159190615be7565b5050505b50506044805460ff1916905550505050505050505050505050565b6001600160a01b038116614f7f5760405162461bcd60e51b815260206004820152601260248201527104f776e65722063616e206e6f7420626520360741b6044820152606401611442565b6002546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600280546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b60008060185483614ff791906158b0565b6001600160a01b03861660009081526016602052604090205490915061501e90829061585e565b6001600160a01b03808716600090815260166020526040808220939093559086168152205461504e90829061582d565b6001600160a01b038086166000818152601660205260409081902093909355915190871690600080516020615c16833981519152906150909087815260200190565b60405180910390a3506001949350505050565b3360009081526010602052604081205460ff161580156150c6575060445460ff16155b80156150d457506000602854115b80156150e95750600854600160681b900460ff165b801561510457506000603a54603954615102919061582d565b115b8015611df55750601854601c5461511b9190615a19565b615124306128b3565b1015905090565b6001600160a01b0382166000908152600c602052604081205460ff168061516a57506001600160a01b0382166000908152600c602052604090205460ff165b156151775750600061165a565b60085460ff161561518a5750600161165a565b6001600160a01b03831660009081526010602052604090205460ff16806151c957506001600160a01b03821660009081526010602052604090205460ff165b905061165a565b60395460085460009190600160581b900460ff16156151fc57603b546039546151f99190615a19565b90505b6001600160a01b0385166000908152600a602052604090205460ff1615615221575060005b6001600160a01b03841660009081526010602052604090205460ff16156152dc5750603a546001600160a01b03851660009081526011602052604090205460ff1680156152775750600854600160601b900460ff165b156152b7576001600160a01b0385166000908152601460205260409020548110156152b757506001600160a01b0384166000908152601460205260409020545b6001600160a01b0385166000908152600b602052604090205460ff16156152dc575060005b6001600160a01b03851660009081526010602052604090205460ff1661532457600854600160481b900460ff1615615324576153178561346d565b615321908261582d565b90505b60006103e861533383866158b0565b61533d9190615a19565b3060009081526016602052604090205490915061535b90829061582d565b306000818152601660205260409020919091556018546001600160a01b03881690600080516020615c16833981519152906153969085615a19565b60405190815260200160405180910390a36153b1818561585e565b9695505050505050565b604454600090819060ff1661541e575b6017546022546019546153de91906158b0565b6153e89190615a19565b91506153f382614972565b50806153fe81615a4a565b915050426032541080156154125750606481125b6153cb5761541e612a37565b5050565b60215461542f908261582d565b603281905550600160376000828254615448919061582d565b909155505050565b61541e3061dead8361432d565b60006020828403121561546f57600080fd5b5035919050565b6000806040838503121561548957600080fd5b50508035926020909101359150565b600060208083528351808285015260005b818110156154c5578581018301518582016040015282016154a9565b818111156154d7576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146124eb57600080fd5b6000806040838503121561551757600080fd5b615520836154ed565b946020939093013593505050565b60006020828403121561554057600080fd5b61496b826154ed565b8015158114612bb057600080fd5b60006020828403121561556957600080fd5b813561496b81615549565b6000806040838503121561558757600080fd5b615590836154ed565b915060208301356155a081615549565b809150509250929050565b6000806000606084860312156155c057600080fd5b6155c9846154ed565b925060208401356155d981615549565b929592945050506040919091013590565b6000806000606084860312156155ff57600080fd5b615608846154ed565b9250615616602085016154ed565b9150604084013590509250925092565b6000806000806080858703121561563c57600080fd5b615645856154ed565b9350615653602086016154ed565b9250615661604086016154ed565b915061566f606086016154ed565b905092959194509250565b6000806040838503121561568d57600080fd5b615696836154ed565b91506156a4602084016154ed565b90509250929050565b600080604083850312156156c057600080fd5b8235915060208301356155a081615549565b6000806000606084860312156156e757600080fd5b83356156f281615549565b95602085013595506040909401359392505050565b60008060008060008060008060008060006101608c8e03121561572957600080fd5b8b359a5060208c0135995060408c0135985060608c0135975060808c0135965060a08c0135955060c08c0135945060e08c013593506101008c013592506101208c013591506101408c013561577d81615549565b809150509295989b509295989b9093969950565b6020808252600990820152682737ba1037bbb732b960b91b604082015260600190565b600181811c908216806157c857607f821691505b6020821081036138f357634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121561581057600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b6000821982111561584057615840615817565b500190565b60006001820161585757615857615817565b5060010190565b60008282101561587057615870615817565b500390565b634e487b7160e01b600052603160045260246000fd5b6020808252600b908201526a139bdd0818da185b99d95960aa1b604082015260600190565b60008160001904831182151516156158ca576158ca615817565b500290565b6020808252601690820152751c9958da5c1a595b9d081a5cc81b9bdd081d985b1a5960521b604082015260600190565b600181815b8085111561593a57816000190482111561592057615920615817565b8085161561592d57918102915b93841c9390800290615904565b509250929050565b6000826159515750600161165a565b8161595e5750600061165a565b8160018114615974576002811461597e5761599a565b600191505061165a565b60ff84111561598f5761598f615817565b50506001821b61165a565b5060208310610133831016604e8410600b84101617156159bd575081810a61165a565b6159c783836158ff565b80600019048211156159db576159db615817565b029392505050565b600061496b8383615942565b634e487b7160e01b600052601260045260246000fd5b600082615a1457615a146159ef565b500690565b600082615a2857615a286159ef565b500490565b600060208284031215615a3f57600080fd5b815161496b81615549565b60006001600160ff1b01820161585757615857615817565b600060033d1115615a7b5760046000803e5060005160e01c5b90565b601f8201601f1916810167ffffffffffffffff81118282101715615ab257634e487b7160e01b600052604160045260246000fd5b6040525050565b600060443d1015615ac75790565b6040516003193d81016004833e81513d67ffffffffffffffff8160248401118184111715615af757505050505090565b8285019150815181811115615b0f5750505050505090565b843d8701016020828501011115615b295750505050505090565b615b3860208286010187615a7e565b509095945050505050565b600081615b5257615b52615817565b506000190190565b6000600160ff1b8201615b6f57615b6f615817565b5060000390565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015615bc65784516001600160a01b031683529383019391830191600101615ba1565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215615bfc57600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220d1e987e83da52eecdd60fa02f879aed872df61e40f3ead4d1090df42dae0211064736f6c634300080d0033
Deployed Bytecode
0x6080604052600436106106865760003560e01c806377d947431161035f578063af9b800e116101d1578063deac8ba711610102578063f3a54f2c116100a0578063f887ea401161007a578063f887ea401461139c578063fcf23291146113bc578063ff63f147146113d1578063ff8ac17c146113f257600080fd5b8063f3a54f2c1461132f578063f6bbe5161461134f578063f703f36f1461136f57600080fd5b8063e49c26e3116100dc578063e49c26e3146112b9578063ef8cc78f146112d9578063f09a4016146112ef578063f2fde38b1461130f57600080fd5b8063deac8ba71461126d578063e080680414611283578063e15beb801461129957600080fd5b8063d0d1d3621161016f578063d439979011610149578063d4399790146111ae578063d6737a6e146111e7578063dcf4242414611207578063dd62ed3e1461122757600080fd5b8063d0d1d3621461114b578063d1fce2641461116b578063d2a66b111461118d57600080fd5b8063b9c95f8e116101ab578063b9c95f8e146110cf578063bc7e68a3146110e5578063c0da424c146110fb578063d08893581461112b57600080fd5b8063af9b800e1461105e578063b62496f51461107f578063b7426fb3146110af57600080fd5b80639ae7372d116102ab578063a457c2d711610249578063a9059cbb11610223578063a9059cbb14610fd8578063a9b38cb014610ff8578063acd738bc14611028578063ad570c091461103e57600080fd5b8063a457c2d714610f82578063a8aa1b3114610fa2578063a8bcc98f14610fc257600080fd5b80639d0014b1116102855780639d0014b114610f0c5780639d9241ec14610f2c578063a2b92d5614610f42578063a3c4e7d314610f6257600080fd5b80639ae7372d14610eae5780639b8d749514610ece5780639cf59d7f14610ee457600080fd5b806383823e1e116103185780639079f932116102f25780639079f93214610e385780639481205714610e5957806395d89b4114610e795780639a7a23d614610e8e57600080fd5b806383823e1e14610dd557806386fe511d14610df55780638da5cb5b14610e1557600080fd5b806377d9474314610d145780637965d56d14610d345780637a8ccfd914610d545780637d4b501714610d745780637ee029c414610d9457806380226a1214610db457600080fd5b806339509351116104f85780635aa821a91161044457806370a08231116103e2578063727dba53116103bc578063727dba5314610c9f578063753d02a114610cbf578063764d72bf14610cd457806376e90db514610cf457600080fd5b806370a0823114610c54578063715018a614610c74578063716cc28014610c8957600080fd5b806361a9d1b11161041e57806361a9d1b114610bf457806366eb378514610c095780636d351d1a14610c1e5780636ddd171314610c3357600080fd5b80635aa821a914610ba85780635f2a6d6914610bbe5780635fdd4ed514610bde57600080fd5b806345b10e12116104b15780634e66160c1161048b5780634e66160c14610b365780635569408614610b6657806357b535c014610b7c57806359b107b914610b9257600080fd5b806345b10e1214610ae0578063492b381e14610b005780634cd9ddf214610b1657600080fd5b80633950935114610a1f5780633c316fd514610a3f5780633c5c780014610a605780633c8e556d14610a8057806341d68b8f14610aa05780634460d3cf14610ac057600080fd5b80631489294a116105d257806326987b6011610570578063313ce5671161054a578063313ce5671461099057806335179d6b146109b25780633643f1d5146109d2578063368743be146109f257600080fd5b806326987b60146109505780632b112e49146109655780632df75cb11461097a57600080fd5b8063198b763e116105ac578063198b763e146108d05780631bd39674146108f057806323b872dd14610910578063264d26dd1461093057600080fd5b80631489294a1461087b57806315da01481461089b57806318160ddd146108bb57600080fd5b806307ebec271161063f5780630978310d116106195780630978310d146107eb5780630faacfe11461081b5780631276089b1461083b57806313b407ee1461085b57600080fd5b806307ebec271461078857806308b1fd8f146107ab578063095ea7b3146107cb57600080fd5b8063011bc9871461069257806301b16827146106b457806302259e9e146106d4578063031620c8146106fd57806304a17c5f1461072e57806306fdde031461076657600080fd5b3661068d57005b600080fd5b34801561069e57600080fd5b506106b26106ad36600461545d565b611413565b005b3480156106c057600080fd5b506106b26106cf366004615476565b6114bb565b3480156106e057600080fd5b506106ea60315481565b6040519081526020015b60405180910390f35b34801561070957600080fd5b5060085461071e90600160401b900460ff1681565b60405190151581526020016106f4565b34801561073a57600080fd5b50603f5461074e906001600160a01b031681565b6040516001600160a01b0390911681526020016106f4565b34801561077257600080fd5b5061077b611561565b6040516106f49190615498565b34801561079457600080fd5b5060085461071e9065010000000000900460ff1681565b3480156107b757600080fd5b50603d5461074e906001600160a01b031681565b3480156107d757600080fd5b5061071e6107e6366004615504565b6115f3565b3480156107f757600080fd5b5061071e61080636600461552e565b600f6020526000908152604090205460ff1681565b34801561082757600080fd5b506106ea61083636600461552e565b611660565b34801561084757600080fd5b506106b2610856366004615557565b6117d3565b34801561086757600080fd5b506106b2610876366004615574565b61184d565b34801561088757600080fd5b5060405461074e906001600160a01b031681565b3480156108a757600080fd5b506106b26108b63660046155ab565b611ae7565b3480156108c757600080fd5b506019546106ea565b3480156108dc57600080fd5b5061074e6108eb36600461545d565b611cee565b3480156108fc57600080fd5b506106ea61090b36600461545d565b611d18565b34801561091c57600080fd5b5061071e61092b3660046155ea565b611d28565b34801561093c57600080fd5b50603c5461074e906001600160a01b031681565b34801561095c57600080fd5b506106ea611de8565b34801561097157600080fd5b506106ea611dfa565b34801561098657600080fd5b506106ea602f5481565b34801561099c57600080fd5b5060025460405160ff90911681526020016106f4565b3480156109be57600080fd5b5061074e6109cd36600461545d565b611ebf565b3480156109de57600080fd5b506106b26109ed366004615557565b611ecf565b3480156109fe57600080fd5b506106ea610a0d36600461552e565b60146020526000908152604090205481565b348015610a2b57600080fd5b5061071e610a3a366004615504565b611f4a565b348015610a4b57600080fd5b5060085461071e90600160601b900460ff1681565b348015610a6c57600080fd5b506106b2610a7b366004615574565b611fd0565b348015610a8c57600080fd5b506106b2610a9b366004615626565b612226565b348015610aac57600080fd5b506106b2610abb36600461567a565b6122a5565b348015610acc57600080fd5b5061071e610adb36600461552e565b612389565b348015610aec57600080fd5b506106b2610afb3660046156ad565b6124f0565b348015610b0c57600080fd5b506106ea602c5481565b348015610b2257600080fd5b506106b2610b3136600461545d565b6125ca565b348015610b4257600080fd5b5061071e610b5136600461552e565b60136020526000908152604090205460ff1681565b348015610b7257600080fd5b506106ea60345481565b348015610b8857600080fd5b506106ea60375481565b348015610b9e57600080fd5b506106ea60395481565b348015610bb457600080fd5b506106ea60305481565b348015610bca57600080fd5b506106b2610bd936600461552e565b61266b565b348015610bea57600080fd5b506106ea60385481565b348015610c0057600080fd5b506106b26126e2565b348015610c1557600080fd5b506106b2612868565b348015610c2a57600080fd5b506106ea6128a1565b348015610c3f57600080fd5b5060085461071e90600160681b900460ff1681565b348015610c6057600080fd5b506106ea610c6f36600461552e565b6128b3565b348015610c8057600080fd5b506106b26128ed565b348015610c9557600080fd5b506106ea602a5481565b348015610cab57600080fd5b506106ea610cba36600461552e565b61296b565b348015610ccb57600080fd5b506106b2612a37565b348015610ce057600080fd5b506106b2610cef36600461552e565b612bb3565b348015610d0057600080fd5b506106b2610d0f36600461545d565b612c57565b348015610d2057600080fd5b5061074e610d2f36600461545d565b612d03565b348015610d4057600080fd5b506106ea610d4f36600461545d565b612d33565b348015610d6057600080fd5b506106b2610d6f36600461545d565b612d43565b348015610d8057600080fd5b50603e5461074e906001600160a01b031681565b348015610da057600080fd5b506106b2610daf3660046155ab565b612de5565b348015610dc057600080fd5b5060085461071e90600160381b900460ff1681565b348015610de157600080fd5b506106b2610df0366004615557565b612f31565b348015610e0157600080fd5b506106ea610e1036600461552e565b612fac565b348015610e2157600080fd5b5060025461010090046001600160a01b031661074e565b348015610e4457600080fd5b5060085461071e906301000000900460ff1681565b348015610e6557600080fd5b506106b2610e74366004615557565b612fcd565b348015610e8557600080fd5b5061077b61304a565b348015610e9a57600080fd5b506106b2610ea9366004615574565b613059565b348015610eba57600080fd5b506106b2610ec936600461545d565b613315565b348015610eda57600080fd5b506106ea60335481565b348015610ef057600080fd5b50602254601754604080519283526020830191909152016106f4565b348015610f1857600080fd5b506106b2610f2736600461545d565b6133bd565b348015610f3857600080fd5b506106ea603a5481565b348015610f4e57600080fd5b506106b2610f5d366004615557565b6133f1565b348015610f6e57600080fd5b506106ea610f7d36600461552e565b61346d565b348015610f8e57600080fd5b5061071e610f9d366004615504565b6134c8565b348015610fae57600080fd5b5060425461074e906001600160a01b031681565b348015610fce57600080fd5b506106ea603b5481565b348015610fe457600080fd5b5061071e610ff3366004615504565b6135af565b34801561100457600080fd5b5061071e61101336600461552e565b60126020526000908152604090205460ff1681565b34801561103457600080fd5b506106ea60355481565b34801561104a57600080fd5b506106b26110593660046156ad565b6135ee565b34801561106a57600080fd5b5060085461071e90600160301b900460ff1681565b34801561108b57600080fd5b5061071e61109a36600461552e565b60106020526000908152604090205460ff1681565b3480156110bb57600080fd5b5061071e6110ca36600461552e565b61366e565b3480156110db57600080fd5b506106ea602e5481565b3480156110f157600080fd5b506106ea60325481565b34801561110757600080fd5b5061071e61111636600461552e565b60116020526000908152604090205460ff1681565b34801561113757600080fd5b506106b26111463660046156d2565b6138f9565b34801561115757600080fd5b506106b26111663660046155ab565b6139c1565b34801561117757600080fd5b5060085461071e90640100000000900460ff1681565b34801561119957600080fd5b5060085461071e90600160501b900460ff1681565b3480156111ba57600080fd5b5061071e6111c936600461552e565b6001600160a01b03166000908152600c602052604090205460ff1690565b3480156111f357600080fd5b5061074e61120236600461545d565b613bc2565b34801561121357600080fd5b506106b2611222366004615476565b613bd2565b34801561123357600080fd5b506106ea61124236600461567a565b6001600160a01b03918216600090815260156020908152604080832093909416825291909152205490565b34801561127957600080fd5b506106ea60365481565b34801561128f57600080fd5b506106ea602d5481565b3480156112a557600080fd5b506106b26112b4366004615557565b613cf0565b3480156112c557600080fd5b506106b26112d4366004615707565b613d6b565b3480156112e557600080fd5b506106ea602b5481565b3480156112fb57600080fd5b506106b261130a36600461567a565b613fae565b34801561131b57600080fd5b506106b261132a36600461552e565b614211565b34801561133b57600080fd5b506106b261134a366004615557565b61427d565b34801561135b57600080fd5b5061074e61136a36600461545d565b6142bf565b34801561137b57600080fd5b506106ea61138a36600461552e565b60096020526000908152604090205481565b3480156113a857600080fd5b5060415461074e906001600160a01b031681565b3480156113c857600080fd5b506106ea6142cf565b3480156113dd57600080fd5b5060085461071e90600160481b900460ff1681565b3480156113fe57600080fd5b5060085461071e90600160581b900460ff1681565b60025461010090046001600160a01b0316331461144b5760405162461bcd60e51b815260040161144290615791565b60405180910390fd5b604b8111156114885760405162461bcd60e51b81526020600482015260096024820152686d617820706172747960b81b6044820152606401611442565b601f81905560405181907f99595bf6e2815a96807fe941420680afd549926424c257ec2c34de018f2f732290600090a250565b336000908152600e602052604090205460ff1661151a5760405162461bcd60e51b815260206004820152601c60248201527f4e6f7420616c6c6f77656420666f7220726577617264207969656c64000000006044820152606401611442565b602282905560178190556040513381524290829084907f8164f36e13b64f87a896ae3bb092f0ed3ea235f8a9192c6aecb51beabcea10d59060200160405180910390a45050565b606060008054611570906157b4565b80601f016020809104026020016040519081016040528092919081815260200182805461159c906157b4565b80156115e95780601f106115be576101008083540402835291602001916115e9565b820191906000526020600020905b8154815290600101906020018083116115cc57829003601f168201915b5050505050905090565b3360008181526015602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061164e9086815260200190565b60405180910390a35060015b92915050565b60008060005b6007548110156117175760078181548110611683576116836157e8565b60009182526020909120015460405163453d3db360e11b81526001600160a01b03868116600483015290911690638a7a7b6690602401602060405180830381865afa1580156116d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116fa91906157fe565b611704908361582d565b508061170f81615845565b915050611666565b5060005b6006548110156117cc5760068181548110611738576117386157e8565b6000918252602090912001546040516370a0823160e01b81526001600160a01b038681166004830152909116906370a0823190602401602060405180830381865afa15801561178b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117af91906157fe565b6117b9908361582d565b50806117c481615845565b91505061171b565b5092915050565b60025461010090046001600160a01b031633146118025760405162461bcd60e51b815260040161144290615791565b6008805464ff000000001916640100000000831515908102919091179091556040517fadd2ae1e48fad2610e967f44a01d455adca45c693dc959f9a0b5b6f807946f2390600090a250565b60025461010090046001600160a01b0316331461187c5760405162461bcd60e51b815260040161144290615791565b6001600160a01b03821660009081526012602052604090205481151560ff9091161515036118e05760405162461bcd60e51b815260206004820152601160248201527015985b1d5948185b1c9958591e481cd95d607a1b6044820152606401611442565b6001600160a01b0382166000908152601260205260409020805460ff1916821580159190911790915561195d57600680546001810182556000919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319166001600160a01b038416179055611aab565b6006546001106119a15760405162461bcd60e51b815260206004820152600f60248201526e2932b8bab4b932b21018903830b4b960891b6044820152606401611442565b60005b600654811015611aa957826001600160a01b0316600682815481106119cb576119cb6157e8565b6000918252602090912001546001600160a01b031603611a9757600680546119f59060019061585e565b81548110611a0557611a056157e8565b600091825260209091200154600680546001600160a01b039092169183908110611a3157611a316157e8565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506006805480611a7057611a70615875565b600082815260209020810160001990810180546001600160a01b0319169055019055611aa9565b80611aa181615845565b9150506119a4565b505b604051811515906001600160a01b038416907fb165f6ff487f30978c0ede582c4b90aea6317730c4ccca38529fbd11b74a2c3e90600090a35050565b60025461010090046001600160a01b03163314611b165760405162461bcd60e51b815260040161144290615791565b80600103611bb3576001600160a01b0383166000908152600c602052604090205482151560ff909116151503611b5e5760405162461bcd60e51b81526004016114429061588b565b6001600160a01b0383166000818152600c6020526040808220805460ff191686151590811790915590519092917f507b98c4fc0974cbaaade1c558d03191b924272e491fc34c645965b5c75420fa91a3505050565b80600203611c50576001600160a01b0383166000908152600a602052604090205482151560ff909116151503611bfb5760405162461bcd60e51b81526004016114429061588b565b6001600160a01b0383166000818152600a6020526040808220805460ff191686151590811790915590519092917f89e1f304a67b18800fe8e70e1be2fe04d7c4fd682d71141198828c143c41d9b891a3505050565b80600303611ce9576001600160a01b0383166000908152600b602052604090205482151560ff909116151503611c985760405162461bcd60e51b81526004016114429061588b565b6001600160a01b0383166000818152600b6020526040808220805460ff191686151590811790915590519092917fd73ba49bcc1c8c1e82b426c44467e431a9247b79f9528fac3ab2847c3202b98391a35b505050565b60068181548110611cfe57600080fd5b6000918252602090912001546001600160a01b0316905081565b60006018548261165a91906158b0565b6000826001600160a01b038116611d515760405162461bcd60e51b8152600401611442906158cf565b6001600160a01b038516600090815260156020908152604080832033845290915290205460001914611dd1576001600160a01b0385166000908152601560209081526040808320338452909152902054611dac90849061585e565b6001600160a01b03861660009081526015602090815260408083203384529091529020555b611ddc85858561432d565b50600195945050505050565b6000611df5602f54612d33565b905090565b601854603d546001600160a01b03166000908152601660205260408120547f0263c2b778d062355049effc2dece97bc6547ff8a88a3258daa512061c2153dd5461dead83527f290d80ce586bfe95e1ebf348e3ba109df813891ad867417e64d38c5a50473b5754929392611e706012600a6159e3565b611e7f9064012a05f2006158b0565b611e8b90600019615a05565b611e979060001961585e565b611ea1919061585e565b611eab919061585e565b611eb5919061585e565b611df59190615a19565b60058181548110611cfe57600080fd5b60025461010090046001600160a01b03163314611efe5760405162461bcd60e51b815260040161144290615791565b6008805466ff0000000000001916600160301b831515908102919091179091556040517f7155abe5d76e40e32b68c168e9dde4055d00e1ffdb30d0e6d265622716a1d92390600090a250565b3360009081526015602090815260408083206001600160a01b0386168452909152812054611f7990839061585e565b3360008181526015602090815260408083206001600160a01b038916808552908352928190208590555193845290927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910161164e565b60025461010090046001600160a01b03163314611fff5760405162461bcd60e51b815260040161144290615791565b6001600160a01b03821660009081526013602052604090205481151560ff9091161515036120635760405162461bcd60e51b815260206004820152601160248201527015985b1d5948185b1c9958591e481cd95d607a1b6044820152606401611442565b6001600160a01b0382166000908152601360205260409020805460ff191682158015919091179091556120e057600780546001810182556000919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319166001600160a01b0384161790556121ea565b60005b6007548110156121e857826001600160a01b03166007828154811061210a5761210a6157e8565b6000918252602090912001546001600160a01b0316036121d657600780546121349060019061585e565b81548110612144576121446157e8565b600091825260209091200154600780546001600160a01b039092169183908110612170576121706157e8565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060078054806121af576121af615875565b600082815260209020810160001990810180546001600160a01b03191690550190556121e8565b806121e081615845565b9150506120e3565b505b604051811515906001600160a01b038416907f8f1936ddb0e6b394e1edf1ac695592d1a059eecc4786f7083e71b11ec945e7ca90600090a35050565b60025461010090046001600160a01b031633146122555760405162461bcd60e51b815260040161144290615791565b603c80546001600160a01b039586166001600160a01b031991821617909155603d805494861694821694909417909355603e805492851692841692909217909155603f8054919093169116179055565b60025461010090046001600160a01b031633146122d45760405162461bcd60e51b815260040161144290615791565b604180546001600160a01b03199081166001600160a01b03858116918217909355604280549092168484161782553060008181526015602090815260408083209483529390528281206000199081905591815282812082905583548516815291909120555461234591166001613059565b806001600160a01b0316826001600160a01b03167f50bfd9c0b9815c386500292d8de123643c6c935ffd384a364381b3b11e281e5c60405160405180910390a35050565b60025460009061010090046001600160a01b031633146123bb5760405162461bcd60e51b815260040161144290615791565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015612402573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061242691906157fe565b905080336001600160a01b0316846001600160a01b03167fed3c8f48a6c3247e7a68382e752734feed4bf63004c064208e3117e35097dabb4260405161246e91815260200190565b60405180910390a460405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0384169063a9059cbb906044016020604051808303816000875af11580156124c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124e79190615a2d565b9150505b919050565b60025461010090046001600160a01b0316331461251f5760405162461bcd60e51b815260040161144290615791565b60328211156125705760405162461bcd60e51b815260206004820152601860248201527f6d617820627261636b65742066656520657863656564656400000000000000006044820152606401611442565b60388290556008805469ff0000000000000000001916600160481b8315159081029190911790915560405142919084907f0d9ee6cc1c2d2a5825fe816f3cfc6ab44f33303930004a3e26a3259616c9add890600090a45050565b60025461010090046001600160a01b031633146125f95760405162461bcd60e51b815260040161144290615791565b6107088111156126365760405162461bcd60e51b81526020600482015260086024820152670a8dede40d0d2ced60c31b6044820152606401611442565b6021819055604051429082907f9147f2d3ae1a14e9012c81c143c7c834a15f3afffcd29d3b35631aa0a3b0093e90600090a350565b60025461010090046001600160a01b0316331461269a5760405162461bcd60e51b815260040161144290615791565b604080546001600160a01b0319166001600160a01b038316908117825590517faab8973b5857f63f79e83682350a71c735f612a5f7620d42d249227023f9525490600090a250565b6002600354036127345760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611442565b6002600355336000908152600d602052604090205460ff166127895760405162461bcd60e51b815260206004820152600e60248201526d63616e206e6f742072656261736560901b6044820152606401611442565b60445460ff16156127c85760405162461bcd60e51b81526020600482015260096024820152682a393c9030b3b0b4b760b91b6044820152606401611442565b4260325411156128085760405162461bcd60e51b815260206004820152600b60248201526a4e6f7420696e2074696d6560a81b6044820152606401611442565b6000805b60175460225460195461281f91906158b0565b6128299190615a19565b915061283482614972565b508061283f81615a4a565b915050426032541080156128535750606481125b61280c5761285f612a37565b50506001600355565b60025461010090046001600160a01b031633146128975760405162461bcd60e51b815260040161144290615791565b61289f614ae1565b565b6000601854601c54611df59190615a19565b60006018546000036128c757506000919050565b6018546001600160a01b03831660009081526016602052604090205461165a9190615a19565b60025461010090046001600160a01b0316331461291c5760405162461bcd60e51b815260040161144290615791565b6002546040516101009091046001600160a01b0316907ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482090600090a260028054610100600160a81b0319169055565b6001600160a01b038116600090815260096020526040812060018101825b8154811015612a2f5760008282815481106129a6576129a66157e8565b9060005260206000209060020201604051806040016040529081600082015481526020016001820154815250509050601d54426129e3919061585e565b815110612a1c578282815481106129fc576129fc6157e8565b90600052602060002090600202016001015485612a19919061582d565b94505b5080612a2781615845565b915050612989565b505050919050565b60005b600454811015612bb05760048181548110612a5757612a576157e8565b60009182526020822001546040805160016209351760e01b0319815290516001600160a01b039092169263fff6cae99260048084019382900301818387803b158015612aa257600080fd5b505af1925050508015612ab3575060015b612b9e57612abf615a62565b806308c379a003612b925750612ad3615ab9565b80612ade5750612b94565b7f6bb22edb6252e9e04a83e4886d28bc5662efe624ec664e2d0e4b38854c3c2383604051612b4d9060208082526027908201527f6d616e75616c53796e6328293a205f6d616b657250616972732e73796e6328296040820152660811985a5b195960ca1b606082015260800190565b60405180910390a17f6bb22edb6252e9e04a83e4886d28bc5662efe624ec664e2d0e4b38854c3c238381604051612b849190615498565b60405180910390a150612b9e565b505b3d6000803e3d6000fd5b80612ba881615845565b915050612a3a565b50565b60025461010090046001600160a01b03163314612be25760405162461bcd60e51b815260040161144290615791565b60405147906001600160a01b0383169082156108fc029083906000818181858888f19350505050158015612c1a573d6000803e3d6000fd5b5042826001600160a01b0316827f764ac18b38788ceb5d273876574dd816d95e562605c44e30f5638e7f92ceef8860405160405180910390a45050565b60025461010090046001600160a01b03163314612c865760405162461bcd60e51b815260040161144290615791565b6a013da329b63364718000008111612cd05760405162461bcd60e51b815260206004820152600d60248201526c42656c6f77206d696e696d756d60981b6044820152606401611442565b604381905560405181907f3e2b28733d83c500897cb5d9f71e9286f059e81ba4ba63584b43a9278879ca4790600090a250565b600060048281548110612d1857612d186157e8565b6000918252602090912001546001600160a01b031692915050565b60006018548261165a9190615a19565b60025461010090046001600160a01b03163314612d725760405162461bcd60e51b815260040161144290615791565b611c208110612db25760405162461bcd60e51b815260206004820152600c60248201526b6f766572203220686f75727360a01b6044820152606401611442565b601d81905560405181907f5c630b842a78838557c54c519fb3fb1eedc9157777ef4e42388dcbf5dd1f80b390600090a250565b60025461010090046001600160a01b03163314612e145760405162461bcd60e51b815260040161144290615791565b80600103612e85576001600160a01b0383166000908152600d602052604090205482151560ff909116151503612e5c5760405162461bcd60e51b81526004016114429061588b565b6001600160a01b0383166000908152600d60205260409020805460ff1916831515179055612ef2565b80600203612ef2576001600160a01b0383166000908152600e602052604090205482151560ff909116151503612ecd5760405162461bcd60e51b81526004016114429061588b565b6001600160a01b0383166000908152600e60205260409020805460ff19168315151790555b80821515846001600160a01b03167f94c0aba5d4b641cd28ff4ae32d7c716fd7a3fee1a1b98e6f4d81bad3256ab2be60405160405180910390a4505050565b60025461010090046001600160a01b03163314612f605760405162461bcd60e51b815260040161144290615791565b6008805460ff60601b1916600160601b831515908102919091179091556040514291907f6e78862f553225378cfb6846053b9a466b9a47afcc225a2a3263ea536d991e4090600090a350565b600080612fb8836128b3565b9050612fc383611660565b6124e7908261582d565b60025461010090046001600160a01b03163314612ffc5760405162461bcd60e51b815260040161144290615791565b6008805468ff00000000000000001916600160401b831515908102919091179091556040517f10b5d8d4b73da981d3f4003317acb1c94eb8ecc35278cbb931228c3b3032dbae90600090a250565b606060018054611570906157b4565b60025461010090046001600160a01b031633146130885760405162461bcd60e51b815260040161144290615791565b6001600160a01b03821660009081526010602052604090205481151560ff9091161515036130e65760405162461bcd60e51b815260206004820152600b60248201526a185b1c9958591e481cd95d60aa1b6044820152606401611442565b6001600160a01b0382166000908152601060205260409020805460ff19168215801591909117909155613175576004805460018101825560009182527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b0319166001600160a01b038516179055602a80549161316b83615845565b91905055506132d9565b6004546001106131b95760405162461bcd60e51b815260206004820152600f60248201526e2932b8bab4b932b21018903830b4b960891b6044820152606401611442565b60005b6004548110156132d757826001600160a01b0316600482815481106131e3576131e36157e8565b6000918252602090912001546001600160a01b0316036132c5576004805461320d9060019061585e565b8154811061321d5761321d6157e8565b600091825260209091200154600480546001600160a01b039092169183908110613249576132496157e8565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600480548061328857613288615875565b600082815260208120820160001990810180546001600160a01b0319169055909101909155602a8054916132bb83615b43565b91905055506132d7565b806132cf81615845565b9150506131bc565b505b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b60025461010090046001600160a01b031633146133445760405162461bcd60e51b815260040161144290615791565b4281116133885760405162461bcd60e51b815260206004820152601260248201527118d85b881b9bdd081899481a5b881c185cdd60721b6044820152606401611442565b6032819055604051429082907f3a97bbcdf9724661e5a691bf707b0b97b7fb6814227e9ee3253016b1198e32e790600090a350565b60025461010090046001600160a01b031633146133ec5760405162461bcd60e51b815260040161144290615791565b602855565b60025461010090046001600160a01b031633146134205760405162461bcd60e51b815260040161144290615791565b6008805467ff000000000000001916600160381b831515908102919091179091556040517f5a0f55ed896b3fb4c4609bd54602a6dc0d5b4fbb710e0a47566ae502d7d79f7490600090a250565b60008061347983612fac565b905060006134856142cf565b6134908360646158b0565b61349a9190615a19565b90506000600a82106134ad57600a6134af565b815b9050603854816134bf91906158b0565b95945050505050565b3360009081526015602090815260408083206001600160a01b038616845290915281205480831061351c573360009081526015602090815260408083206001600160a01b038816845290915281205561354b565b613526838261585e565b3360009081526015602090815260408083206001600160a01b03891684529091529020555b3360008181526015602090815260408083206001600160a01b038916808552908352928190205490519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060019392505050565b6000826001600160a01b0381166135d85760405162461bcd60e51b8152600401611442906158cf565b6135e333858561432d565b506001949350505050565b60025461010090046001600160a01b0316331461361d5760405162461bcd60e51b815260040161144290615791565b603b8290556008805460ff60581b1916600160581b8315159081029190911790915560405183907f10145d369bab6fd20cd4cd57ed0fa0d6ebb131e9bb44c901ef1796cb333be7db90600090a35050565b6000816001600160a01b0381166136975760405162461bcd60e51b8152600401611442906158cf565b600854600160381b900460ff166136df5760405162461bcd60e51b815260206004820152600c60248201526b63616e206e6f74206d6f766560a01b6044820152606401611442565b600854640100000000900460ff166137255760405162461bcd60e51b81526020600482015260096024820152682a3930b2329037b33360b91b6044820152606401611442565b336000908152600f602052604090205460ff16156137735760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b6044820152606401611442565b600061377e336128b3565b116137b75760405162461bcd60e51b81526020600482015260096024820152684e6f20746f6b656e7360b81b6044820152606401611442565b60006137c233611660565b905080156138035760405162461bcd60e51b815260206004820152600e60248201526d6f746865722062616c616e63657360901b6044820152606401611442565b336000908152600f60209081526040808320805460ff191660011790556016909152902054613832818061585e565b33600090815260166020526040808220929092556001600160a01b0387168152205461385f90829061582d565b6001600160a01b0386166000818152601660205260409020919091556018543390600080516020615c168339815191529061389a9085615a19565b60405190815260200160405180910390a3604080513381526001600160a01b03871660208201527fb26ec1d3e73f558763eaa40e4dce759ce985575e28d56966bb2092847a786c74910160405180910390a16001935050505b50919050565b60025461010090046001600160a01b031633146139285760405162461bcd60e51b815260040161144290615791565b6008805460ff60681b1916600160681b85151502179055808261394d6012600a6159e3565b61395c9064012a05f2006158b0565b61396890600019615a05565b6139749060001961585e565b61397e91906158b0565b6139889190615a19565b601c5560405181908390851515907f512cfe1aedabdc06d12a680ace7434d88a9532c8853515536842f5ff52cbe55a90600090a4505050565b60025461010090046001600160a01b031633146139f05760405162461bcd60e51b815260040161144290615791565b6001600160a01b0383166000908152601160209081526040808320805460ff191686158015919091179091556014909252909120829055613a7b57600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b0319166001600160a01b038516179055613b85565b60005b600554811015613b8357836001600160a01b031660058281548110613aa557613aa56157e8565b6000918252602090912001546001600160a01b031603613b715760058054613acf9060019061585e565b81548110613adf57613adf6157e8565b600091825260209091200154600580546001600160a01b039092169183908110613b0b57613b0b6157e8565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506005805480613b4a57613b4a615875565b600082815260209020810160001990810180546001600160a01b0319169055019055613b83565b80613b7b81615845565b915050613a7e565b505b604051821515906001600160a01b038516907f6b76292a2c57cfaa171cd21b53bac8a6a622da6e9c08b9f63a79a50275ff538990600090a3505050565b60048181548110611cfe57600080fd5b60025461010090046001600160a01b03163314613c015760405162461bcd60e51b815260040161144290615791565b6969e10de76676d08000008211613c5a5760405162461bcd60e51b815260206004820152601960248201527f42656c6f77206d696e696d756d2073656c6c20616d6f756e74000000000000006044820152606401611442565b6969e10de76676d08000008111613cb35760405162461bcd60e51b815260206004820152601860248201527f42656c6f77206d696e696d756d2062757920616d6f756e7400000000000000006044820152606401611442565b603182905560308190556040514290829084907f25a1f4940c045b289fe17c2a70381f78360db0e2ad0993cd1f3ffd04d120ad5290600090a45050565b60025461010090046001600160a01b03163314613d1f5760405162461bcd60e51b815260040161144290615791565b6008805463ff00000019166301000000831515908102919091179091556040514291907f832ed7895e341f17afc036cc051864a91809bb5c898a2d5645323b97b6925ec990600090a350565b60025461010090046001600160a01b03163314613d9a5760405162461bcd60e51b815260040161144290615791565b8a601e819055508960238190555088602981905550856026819055508460258190555086601b8190555087601a819055508360248190555082602781905550816020819055506000602354601b54601a54602954601e54613dfb919061582d565b613e05919061582d565b613e0f919061582d565b613e19919061582d565b9050600060275460245460255460265485613e34919061582d565b613e3e919061582d565b613e48919061582d565b613e52919061582d565b905060fa8210613e935760405162461bcd60e51b815260206004820152600c60248201526b6d617820627579206665657360a01b6044820152606401611442565b60fa8110613ed35760405162461bcd60e51b815260206004820152600d60248201526c6d61782073656c6c206665657360981b6044820152606401611442565b6101eb60205410613f175760405162461bcd60e51b815260206004820152600e60248201526d6d6178207061727479206665657360901b6044820152606401611442565b6039829055603a8190556008805460ff60501b1916600160501b85151590810291909117909155602454604080518b8152602081018b90529081018d905260608101919091526080810184905260a08101919091528b908d908f907f36595b1e2bf5f63c84d6962205722de0133c54fdd79516c6f3741aba06ee7d969060c00160405180910390a450505050505050505050505050565b60025461010090046001600160a01b03163314613fdd5760405162461bcd60e51b815260040161144290615791565b60085462010000900460ff161561402c5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401611442565b604180546001600160a01b03199081166001600160a01b0385811691821790935560428054909216848416178255306000818152601560209081526040808320948352939052828120600019908190559181528281208290559254909316825290205561409b6012600a6159e3565b6140aa9064012a05f2006158b0565b6019556140b96012600a6159e3565b6140c89064012a05f2006158b0565b6140d490600019615a05565b6140e09060001961585e565b336000908152601660205260409020556019546140ff6012600a6159e3565b61410e9064012a05f2006158b0565b61411a90600019615a05565b6141269060001961585e565b6141309190615a19565b601855603d546001600160a01b039081166000908152600c60205260408082208054600160ff199182168117909255603e54851684528284208054821683179055603f54909416835281832080548516821790553083528183208054851682179055338352912080549092161790556141b0670de0b6b3a7640000611d18565b602f556141bf33600180612de5565b6141cc3360016002612de5565b6008805462ff00001916620100001790556019546040513391600091600080516020615c16833981519152916142059190815260200190565b60405180910390a35050565b60025461010090046001600160a01b031633146142405760405162461bcd60e51b815260040161144290615791565b6040516001600160a01b038216907fb1eb34684306bcea7f9ed508931dc13b5993c8fdd00fe65c2e4680ae2610a70190600090a2612bb081614f34565b60025461010090046001600160a01b031633146142ac5760405162461bcd60e51b815260040161144290615791565b6008805460ff1916911515919091179055565b60078181548110611cfe57600080fd5b60008060005b6004548110156138f35761430f600482815481106142f5576142f56157e8565b6000918252602090912001546001600160a01b03166128b3565b614319908361582d565b91508061432581615845565b9150506142d5565b6001600160a01b0383166000908152600c6020526040812054819060ff168061436e57506001600160a01b0384166000908152600c602052604090205460ff165b600854909150640100000000900460ff16806143875750805b6143bf5760405162461bcd60e51b81526020600482015260096024820152682a3930b2329037b33360b91b6044820152606401611442565b6001600160a01b03841660009081526010602052604090205460ff1680156143e5575080155b1561442c5760315483111561442c5760405162461bcd60e51b815260206004820152600d60248201526c151bdbc81b5d58da081cd95b1b609a1b6044820152606401611442565b6001600160a01b03851660009081526010602052604090205460ff168061446b57506001600160a01b03841660009081526010602052604090205460ff165b156144a857600854610100900460ff161561449857614488612a37565b6008805461ff00191690556144a8565b6008805461ff0019166101001790555b6001600160a01b03841660009081526010602052604090205460ff1680156144ce575080155b80156144f257506001600160a01b03851660009081526011602052604090205460ff165b80156145075750600854600160601b900460ff165b1561455757601f5460315461451c9190615a19565b8311156145575760405162461bcd60e51b81526020600482015260096024820152683830b93a3c903234bb60b91b6044820152606401611442565b6001600160a01b03851660009081526010602052604090205460ff16801561457d575080155b156145c3576030548311156145c35760405162461bcd60e51b815260206004820152600c60248201526b746f6f206d7563682062757960a01b6044820152606401611442565b6001600160a01b03841660009081526010602052604090205460ff1680156145e9575080155b80156145fe5750600854600160401b900460ff165b156146b4576001600160a01b038516600090815260096020526040812090600182019061462a8861296b565b604354614637919061585e565b9050808611156146785760405162461bcd60e51b815260206004820152600c60248201526b6d617820776974686472617760a01b6044820152606401611442565b50604080518082019091524281526020808201878152835460018181018655600095865292909420925160029094029092019283559051910155505b60445460ff16156146d2576146ca858585614fe6565b91505061496b565b6000601854846146e291906158b0565b90506146ec6150a3565b156146f9576146f9614ae1565b6001600160a01b03861660009081526016602052604090205461471d90829061585e565b6001600160a01b038716600090815260166020526040812091909155614743878761512b565b61474d5781614758565b6147588787846151d0565b6001600160a01b03871660009081526016602052604090205490915061477f90829061582d565b6001600160a01b03871660009081526016602052604090205560325442101580156147b357506008546301000000900460ff165b80156147d857506001600160a01b03871660009081526010602052604090205460ff16155b80156147fd57506001600160a01b03861660009081526010602052604090205460ff16155b156148385761480a6153bb565b614812612a37565b614838602b8054603355602c54603455600090819055602e8054603655602d5460355555565b6001600160a01b03871660009081526010602052604090205460ff16156148af576018546148669083615a19565b602b6000828254614877919061582d565b90915550506018546148899082615a19565b614893908361585e565b602c60008282546148a4919061582d565b909155506149219050565b6001600160a01b03861660009081526010602052604090205460ff1615614921576018546148dd9083615a19565b602e60008282546148ee919061582d565b90915550506018546149009082615a19565b61490a908361585e565b602d600082825461491b919061582d565b90915550505b856001600160a01b0316876001600160a01b0316600080516020615c16833981519152601854846149529190615a19565b60405190815260200160405180910390a3600193505050505b9392505050565b60004260325411156149b95760405162461bcd60e51b815260206004820152601060248201526f72656261736520746f6f206561726c7960801b6044820152606401611442565b6032546000839003614a0b57807f72725a3b1e5bd622d6bcd1339bb31279c351abe8f541ac7fd320f24e1b1641f26019546040516149f991815260200190565b60405180910390a25050601954919050565b6000831215614a3257614a1d83615b5a565b601954614a2a919061585e565b601955614a44565b82601954614a40919061582d565b6019555b6019546001600160801b031015614a61576001600160801b036019555b601954614a706012600a6159e3565b614a7f9064012a05f2006158b0565b614a8b90600019615a05565b614a979060001961585e565b614aa19190615a19565b601855614aad81615422565b807f72725a3b1e5bd622d6bcd1339bb31279c351abe8f541ac7fd320f24e1b1641f26019546040516149f991815260200190565b6044805460ff19166001179055600854600090600160301b900460ff16614b09576000614b0d565b601e545b90506000603a54603954614b21919061582d565b90506000614b2e306128b3565b90506000479050600083602454601a54614b48919061582d565b614b5290856158b0565b614b5c9190615a19565b9050614b6781615450565b6000600285614b7688876158b0565b614b809190615a19565b614b8a9190615a19565b9050600082614b99838761585e565b614ba3919061585e565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110614bdd57614bdd6157e8565b6001600160a01b039283166020918202929092010152604054825191169082906001908110614c0e57614c0e6157e8565b6001600160a01b03928316602091820292909201015260415460405163791ac94760e01b815291169063791ac94790614c54908590600090869030904290600401615b76565b600060405180830381600087803b158015614c6e57600080fd5b505af1158015614c82573d6000803e3d6000fd5b5050505060008547614c94919061585e565b90506000602454601a54614ca8919061582d565b614cb360028c615a19565b614cbd908b61585e565b614cc7919061585e565b90506000600282614cd88d866158b0565b614ce29190615a19565b614cec9190615a19565b9050600082602554602354614d01919061582d565b614d0b90866158b0565b614d159190615a19565b9050600083602754601b54614d2a919061582d565b614d3490876158b0565b614d3e9190615a19565b905060008183614d4e868961585e565b614d58919061585e565b614d62919061585e565b603d546040519192506000916001600160a01b039091169061753090849084818181858888f193505050503d8060008114614db9576040519150601f19603f3d011682016040523d82523d6000602084013e614dbe565b606091505b5050603e546040519192506001600160a01b0316906175309086906000818181858888f193505050503d8060008114614e13576040519150601f19603f3d011682016040523d82523d6000602084013e614e18565b606091505b5050603f546040519192506001600160a01b0316906175309085906000818181858888f193505050503d8060008114614e6d576040519150601f19603f3d011682016040523d82523d6000602084013e614e72565b606091505b5060009250508a159050614f1957604154603c5460405163f305d71960e01b8152306004820152602481018d905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af1158015614ef0573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190614f159190615be7565b5050505b50506044805460ff1916905550505050505050505050505050565b6001600160a01b038116614f7f5760405162461bcd60e51b815260206004820152601260248201527104f776e65722063616e206e6f7420626520360741b6044820152606401611442565b6002546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600280546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b60008060185483614ff791906158b0565b6001600160a01b03861660009081526016602052604090205490915061501e90829061585e565b6001600160a01b03808716600090815260166020526040808220939093559086168152205461504e90829061582d565b6001600160a01b038086166000818152601660205260409081902093909355915190871690600080516020615c16833981519152906150909087815260200190565b60405180910390a3506001949350505050565b3360009081526010602052604081205460ff161580156150c6575060445460ff16155b80156150d457506000602854115b80156150e95750600854600160681b900460ff165b801561510457506000603a54603954615102919061582d565b115b8015611df55750601854601c5461511b9190615a19565b615124306128b3565b1015905090565b6001600160a01b0382166000908152600c602052604081205460ff168061516a57506001600160a01b0382166000908152600c602052604090205460ff165b156151775750600061165a565b60085460ff161561518a5750600161165a565b6001600160a01b03831660009081526010602052604090205460ff16806151c957506001600160a01b03821660009081526010602052604090205460ff165b905061165a565b60395460085460009190600160581b900460ff16156151fc57603b546039546151f99190615a19565b90505b6001600160a01b0385166000908152600a602052604090205460ff1615615221575060005b6001600160a01b03841660009081526010602052604090205460ff16156152dc5750603a546001600160a01b03851660009081526011602052604090205460ff1680156152775750600854600160601b900460ff165b156152b7576001600160a01b0385166000908152601460205260409020548110156152b757506001600160a01b0384166000908152601460205260409020545b6001600160a01b0385166000908152600b602052604090205460ff16156152dc575060005b6001600160a01b03851660009081526010602052604090205460ff1661532457600854600160481b900460ff1615615324576153178561346d565b615321908261582d565b90505b60006103e861533383866158b0565b61533d9190615a19565b3060009081526016602052604090205490915061535b90829061582d565b306000818152601660205260409020919091556018546001600160a01b03881690600080516020615c16833981519152906153969085615a19565b60405190815260200160405180910390a36153b1818561585e565b9695505050505050565b604454600090819060ff1661541e575b6017546022546019546153de91906158b0565b6153e89190615a19565b91506153f382614972565b50806153fe81615a4a565b915050426032541080156154125750606481125b6153cb5761541e612a37565b5050565b60215461542f908261582d565b603281905550600160376000828254615448919061582d565b909155505050565b61541e3061dead8361432d565b60006020828403121561546f57600080fd5b5035919050565b6000806040838503121561548957600080fd5b50508035926020909101359150565b600060208083528351808285015260005b818110156154c5578581018301518582016040015282016154a9565b818111156154d7576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146124eb57600080fd5b6000806040838503121561551757600080fd5b615520836154ed565b946020939093013593505050565b60006020828403121561554057600080fd5b61496b826154ed565b8015158114612bb057600080fd5b60006020828403121561556957600080fd5b813561496b81615549565b6000806040838503121561558757600080fd5b615590836154ed565b915060208301356155a081615549565b809150509250929050565b6000806000606084860312156155c057600080fd5b6155c9846154ed565b925060208401356155d981615549565b929592945050506040919091013590565b6000806000606084860312156155ff57600080fd5b615608846154ed565b9250615616602085016154ed565b9150604084013590509250925092565b6000806000806080858703121561563c57600080fd5b615645856154ed565b9350615653602086016154ed565b9250615661604086016154ed565b915061566f606086016154ed565b905092959194509250565b6000806040838503121561568d57600080fd5b615696836154ed565b91506156a4602084016154ed565b90509250929050565b600080604083850312156156c057600080fd5b8235915060208301356155a081615549565b6000806000606084860312156156e757600080fd5b83356156f281615549565b95602085013595506040909401359392505050565b60008060008060008060008060008060006101608c8e03121561572957600080fd5b8b359a5060208c0135995060408c0135985060608c0135975060808c0135965060a08c0135955060c08c0135945060e08c013593506101008c013592506101208c013591506101408c013561577d81615549565b809150509295989b509295989b9093969950565b6020808252600990820152682737ba1037bbb732b960b91b604082015260600190565b600181811c908216806157c857607f821691505b6020821081036138f357634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121561581057600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b6000821982111561584057615840615817565b500190565b60006001820161585757615857615817565b5060010190565b60008282101561587057615870615817565b500390565b634e487b7160e01b600052603160045260246000fd5b6020808252600b908201526a139bdd0818da185b99d95960aa1b604082015260600190565b60008160001904831182151516156158ca576158ca615817565b500290565b6020808252601690820152751c9958da5c1a595b9d081a5cc81b9bdd081d985b1a5960521b604082015260600190565b600181815b8085111561593a57816000190482111561592057615920615817565b8085161561592d57918102915b93841c9390800290615904565b509250929050565b6000826159515750600161165a565b8161595e5750600061165a565b8160018114615974576002811461597e5761599a565b600191505061165a565b60ff84111561598f5761598f615817565b50506001821b61165a565b5060208310610133831016604e8410600b84101617156159bd575081810a61165a565b6159c783836158ff565b80600019048211156159db576159db615817565b029392505050565b600061496b8383615942565b634e487b7160e01b600052601260045260246000fd5b600082615a1457615a146159ef565b500690565b600082615a2857615a286159ef565b500490565b600060208284031215615a3f57600080fd5b815161496b81615549565b60006001600160ff1b01820161585757615857615817565b600060033d1115615a7b5760046000803e5060005160e01c5b90565b601f8201601f1916810167ffffffffffffffff81118282101715615ab257634e487b7160e01b600052604160045260246000fd5b6040525050565b600060443d1015615ac75790565b6040516003193d81016004833e81513d67ffffffffffffffff8160248401118184111715615af757505050505090565b8285019150815181811115615b0f5750505050505090565b843d8701016020828501011115615b295750505050505090565b615b3860208286010187615a7e565b509095945050505050565b600081615b5257615b52615817565b506000190190565b6000600160ff1b8201615b6f57615b6f615817565b5060000390565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015615bc65784516001600160a01b031683529383019391830191600101615ba1565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215615bfc57600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220d1e987e83da52eecdd60fa02f879aed872df61e40f3ead4d1090df42dae0211064736f6c634300080d0033
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.