More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 341 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 18423415 | 414 days ago | IN | 0 ETH | 0.00058536 | ||||
Approve | 18263345 | 436 days ago | IN | 0 ETH | 0.00053672 | ||||
Approve | 17971909 | 477 days ago | IN | 0 ETH | 0.00267889 | ||||
Approve | 17960241 | 478 days ago | IN | 0 ETH | 0.0005913 | ||||
Approve | 17957871 | 479 days ago | IN | 0 ETH | 0.00176901 | ||||
Unstuck Rewards | 17956664 | 479 days ago | IN | 0 ETH | 0.00088919 | ||||
Approve | 17954853 | 479 days ago | IN | 0 ETH | 0.00038816 | ||||
Approve | 17949853 | 480 days ago | IN | 0 ETH | 0.00074439 | ||||
Approve | 17946693 | 480 days ago | IN | 0 ETH | 0.00090654 | ||||
Approve | 17943650 | 481 days ago | IN | 0 ETH | 0.00156782 | ||||
Approve | 17942136 | 481 days ago | IN | 0 ETH | 0.00116052 | ||||
Approve | 17930853 | 483 days ago | IN | 0 ETH | 0.00147535 | ||||
Approve | 17929437 | 483 days ago | IN | 0 ETH | 0.00138909 | ||||
Approve | 17927935 | 483 days ago | IN | 0 ETH | 0.00156369 | ||||
Approve | 17927833 | 483 days ago | IN | 0 ETH | 0.00149011 | ||||
Approve | 17926958 | 483 days ago | IN | 0 ETH | 0.00128616 | ||||
Approve | 17925528 | 483 days ago | IN | 0 ETH | 0.00098511 | ||||
Approve | 17923908 | 484 days ago | IN | 0 ETH | 0.00050762 | ||||
Approve | 17923797 | 484 days ago | IN | 0 ETH | 0.00115746 | ||||
Approve | 17923623 | 484 days ago | IN | 0 ETH | 0.00100342 | ||||
Approve | 17923605 | 484 days ago | IN | 0 ETH | 0.00096556 | ||||
Approve | 17922203 | 484 days ago | IN | 0 ETH | 0.00321498 | ||||
Approve | 17921957 | 484 days ago | IN | 0 ETH | 0.00185739 | ||||
Approve | 17921777 | 484 days ago | IN | 0 ETH | 0.00151279 | ||||
Approve | 17920488 | 484 days ago | IN | 0 ETH | 0.00137279 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
17957874 | 479 days ago | 0.00190059 ETH | ||||
17957874 | 479 days ago | 0.00570177 ETH | ||||
17957874 | 479 days ago | 0.00380118 ETH | ||||
17957874 | 479 days ago | 0.01140354 ETH | ||||
17943653 | 481 days ago | 0.00210621 ETH | ||||
17943653 | 481 days ago | 0.00631865 ETH | ||||
17943653 | 481 days ago | 0.00421243 ETH | ||||
17943653 | 481 days ago | 0.0126373 ETH | ||||
17928752 | 483 days ago | 0.00223341 ETH | ||||
17928752 | 483 days ago | 0.00670023 ETH | ||||
17928752 | 483 days ago | 0.00446682 ETH | ||||
17928752 | 483 days ago | 0.01340047 ETH | ||||
17927150 | 483 days ago | 0.00241808 ETH | ||||
17927150 | 483 days ago | 0.00725424 ETH | ||||
17927150 | 483 days ago | 0.00483616 ETH | ||||
17927150 | 483 days ago | 0.01450848 ETH | ||||
17925879 | 483 days ago | 0.00259508 ETH | ||||
17925879 | 483 days ago | 0.00778525 ETH | ||||
17925879 | 483 days ago | 0.00519017 ETH | ||||
17925879 | 483 days ago | 0.01557051 ETH | ||||
17923913 | 484 days ago | 0.00286518 ETH | ||||
17923913 | 484 days ago | 0.00859554 ETH | ||||
17923913 | 484 days ago | 0.00573036 ETH | ||||
17923913 | 484 days ago | 0.01719108 ETH | ||||
17922806 | 484 days ago | 0.00313147 ETH |
Loading...
Loading
Contract Name:
MiladyLotto
Compiler Version
v0.8.12+commit.f00d7308
Optimization Enabled:
Yes with 999 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT /* https://t.me/miladylottoerc DEV: https://t.me/campermon */ pragma solidity ^0.8.12; import {Context} from "@openzeppelin/contracts/utils/Context.sol"; import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import {SafeMath} from "@openzeppelin/contracts/utils/math/SafeMath.sol"; import {Ownable2Step} from "@openzeppelin/contracts/access/Ownable2Step.sol"; import {DividendDistributor} from "./Libraries/DividendDistributor.sol"; import {console} from "hardhat/console.sol"; interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function factory() external pure returns (address); /* solhint-disable-next-line func-name-mixedcase */ function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); } interface ILiqPair { function getReserves() external view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast); } contract MiladyLotto is Context, IERC20, Ownable2Step { using SafeMath for uint256; address DEAD = 0x000000000000000000000000000000000000dEaD; address ZERO = 0x0000000000000000000000000000000000000000; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 public _buyTax = 6; uint256 public _sellTax = 6; // Tax distribution uint8 public _taxTreasury = 2; uint8 public _taxJackpot = 3; uint8 public _taxRewards = 1; address payable public _taxWallet; //treasury address payable public _jackpotWallet; //jackpot //address payable public _rewardsCA; DividendDistributor private _dividendDistributor; uint8 private constant _DECIMALS = 9; uint256 private constant _SUPPLY = 100000 * 10 ** _DECIMALS; string private constant _NAME = "Milady Lotto"; string private constant _SYMBOL = "$MLotto"; uint256 public _maxTxAmount = _SUPPLY.div(100); //1% uint256 public _maxWalletSize = _SUPPLY.div(50); //1% uint256 public _taxSwapThresholdDenom = 200;//_SUPPLY.div(200); //0.5% uint256 public _maxTaxSwapDenom = 100;//_SUPPLY.div(100); //1% bool public limitsEnabled = true; mapping(address => bool) public _exemptLimitsTaxes; mapping(address => bool) public _isDividendExempt; // Whitelist // bool public whitelistEnabled = true; // mapping(address => bool) public _whitelisted; ILiqPair public liqPairTokenWeth; ILiqPair public liqPairWethUsdc = ILiqPair(0xB4e16d0168e52d35CaCD2c6185b44281Ec28C9Dc); IUniswapV2Router02 private uniswapV2Router; address private uniswapV2RouterAdr = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; address private uniswapV2Pair; bool private tradingOpen; bool private inSwap = false; bool private swapEnabled = false; modifier lockTheSwap() { inSwap = true; _; inSwap = false; } constructor() { _taxWallet = payable(_msgSender()); _jackpotWallet = payable(_msgSender()); _balances[_msgSender()] = _SUPPLY; _exemptLimitsTaxes[_msgSender()] = true; _exemptLimitsTaxes[address(this)] = true; //_whitelisted[_msgSender()] = true; _dividendDistributor = new DividendDistributor(); _isDividendExempt[address(this)] = true; _isDividendExempt[DEAD] = true; _isDividendExempt[ZERO] = true; _approve(address(this), uniswapV2RouterAdr, type(uint256).max); uniswapV2Router = IUniswapV2Router02(uniswapV2RouterAdr); uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH()); emit Transfer(address(0), _msgSender(), _SUPPLY); } function name() public pure returns (string memory) { return _NAME; } function symbol() public pure returns (string memory) { return _SYMBOL; } function decimals() public pure returns (uint8) { return _DECIMALS; } function totalSupply() public pure override returns (uint256) { return _SUPPLY; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance") ); return true; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer(address from, address to, uint256 amount) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); // Whitelist check // // if(whitelistEnabled && to != uniswapV2Pair) { // require(_whitelisted[to], "Not whitelisted"); // } uint256 taxAmount = 0; if(!_exemptLimitsTaxes[to] && !_exemptLimitsTaxes[from]) { // Tx limit, wallet limit // if (limitsEnabled) { if (to != uniswapV2Pair) { uint256 heldTokens = balanceOf(to); require( (heldTokens + amount) <= _maxWalletSize, "Total Holding is currently limited, you can not buy that much." ); require(amount <= _maxTxAmount, "TX Limit Exceeded"); } } // Buy tax // if(from == uniswapV2Pair) { taxAmount = amount.mul(_buyTax).div(100); } // Sell tax // if (to == uniswapV2Pair) { taxAmount = amount.mul(_sellTax).div(100); } // Swap and send fee // (uint256 taxSwapThreshold, uint256 maxTaxSwap) = getSwapSettings(); uint256 contractTokenBalance = balanceOf(address(this)); if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance > taxSwapThreshold) { //swapTokensForEth(min(amount, min(contractTokenBalance, maxTaxSwap))); swapTokensForEth(min(contractTokenBalance, maxTaxSwap)); uint256 contractETHBalance = address(this).balance; if (contractETHBalance > 0) { sendETHToFee(address(this).balance); } } // Apply tax // if (taxAmount > 0) { _balances[address(this)] = _balances[address(this)].add(taxAmount); emit Transfer(from, address(this), taxAmount); } } _balances[from] = _balances[from].sub(amount); _balances[to] = _balances[to].add(amount.sub(taxAmount)); emit Transfer(from, to, amount.sub(taxAmount)); // Dividend tracker // if(!_isDividendExempt[from]) { try _dividendDistributor.setShare(from, _balances[from]) {} catch {} } if(!_isDividendExempt[to]) { try _dividendDistributor.setShare(to, _balances[to]) {} catch {} } } function getSwapSettings() public view returns(uint256, uint256) { uint256 liqPairBalance = balanceOf(uniswapV2Pair); return(liqPairBalance.div(_taxSwapThresholdDenom), liqPairBalance.div(_maxTaxSwapDenom)); } function min(uint256 a, uint256 b) private pure returns (uint256) { return (a > b) ? b : a; } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { if(tokenAmount == 0) return; address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); //console.log("Swapping %s tokens", tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } /** *@notice Send eth to tax wallets */ function sendETHToFee(uint256 amount) private { bool result = _taxWallet.send(amount.mul(_taxTreasury).div(_buyTax)); result = _jackpotWallet.send(amount.mul(_taxJackpot).div(_buyTax)); try _dividendDistributor.deposit{value:amount.mul(_taxRewards).div(_buyTax)}() {} catch{} } function claimDividend() external { _dividendDistributor.claimDividend(msg.sender); } function getUnpaidEarnings(address _holder) external view returns(uint256){ return _dividendDistributor.getUnpaidEarnings(_holder); } function divDistributorBalance() external view returns(uint256) { return address(_dividendDistributor).balance; } // Get WETH price function getWETHprice(uint8 _decimalsPrecision) public view returns(uint256) { (uint256 usdcAmount, uint256 wethAmount,) = liqPairWethUsdc.getReserves(); usdcAmount = usdcAmount.mul(10 ** 12); // 10 ** (WETH decimals - USDC decimals) usdcAmount = usdcAmount.mul(10 ** _decimalsPrecision); return usdcAmount.div(wethAmount); } // Get token price function getTokenPrice(uint8 _decimalsPrecision) public view returns(uint256) { (uint256 wethAmount, uint256 tokenAmount,) = liqPairTokenWeth.getReserves(); //WETH/TOKEN wethAmount = wethAmount.div(10 ** 9); // 10 ** (TOKEN decimals - WETH decimals) uint256 wethAmountDollars = wethAmount.mul(getWETHprice(_decimalsPrecision)); //we want the amount in dollars return wethAmountDollars.div(tokenAmount); } // #region ADMIN function openTrading() external payable onlyOwner { require(!tradingOpen, "trading is already open"); uniswapV2Router.addLiquidityETH{value: msg.value}( address(this), balanceOf(address(this)), 0, 0, owner(), block.timestamp ); IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max); swapEnabled = true; tradingOpen = true; _isDividendExempt[uniswapV2Pair] = true; liqPairTokenWeth = ILiqPair(uniswapV2Pair); } function AddWalletExemptLimitsTaxes(address _wallet, bool exempt) external onlyOwner { _exemptLimitsTaxes[_wallet] = exempt; } // function enableDisableWhitelist(bool _enable) external onlyOwner { // whitelistEnabled = _enable; // } // function whitelistAddress(address _adr, bool _enable) external onlyOwner { // _whitelisted[_adr] = _enable; // } function setJackpotWallet(address _adr) external onlyOwner { _jackpotWallet = payable(_adr); } function setTreasuryWallet(address _adr) external onlyOwner { _taxWallet = payable(_adr); } function enableLimits(bool enable) external onlyOwner { limitsEnabled = enable; } function unstuckETH() external { require(msg.sender == _taxWallet, "Only tax wallet can unstuck eth"); payable(msg.sender).transfer(address(this).balance); } // function unstuckToken() external { // require(msg.sender == _taxWallet); // _transfer(address(this), msg.sender, balanceOf(address(this))); // } function unstuckRewards() external { require(msg.sender == _taxWallet, "Only tax wallet can unstuck rewards"); _dividendDistributor.unstuckToken(msg.sender); } function manualSwap() external { require(msg.sender == _taxWallet, "Only tax wallet can run swap manually"); uint256 tokenBalance = balanceOf(address(this)); if (tokenBalance > 0) { swapTokensForEth(tokenBalance); } uint256 ethBalance = address(this).balance; if (ethBalance > 0) { sendETHToFee(ethBalance); } } function reduceTeamFee() external { require(msg.sender == _taxWallet, "Only tax wallet can reduce fee"); require(_taxTreasury > 0, "Team fee was already removed"); _taxTreasury--; _taxRewards++; } // #endregion /* solhint-disable-next-line no-empty-blocks */ receive() external payable {} }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol) pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable2Step.sol) pragma solidity ^0.8.0; import "./Ownable.sol"; /** * @dev Contract module which provides access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership} and {acceptOwnership}. * * This module is used through inheritance. It will make available all functions * from parent (Ownable). */ abstract contract Ownable2Step is Ownable { address private _pendingOwner; event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner); /** * @dev Returns the address of the pending owner. */ function pendingOwner() public view virtual returns (address) { return _pendingOwner; } /** * @dev Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual override onlyOwner { _pendingOwner = newOwner; emit OwnershipTransferStarted(owner(), newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`) and deletes any pending owner. * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual override { delete _pendingOwner; super._transferOwnership(newOwner); } /** * @dev The new owner accepts the ownership transfer. */ function acceptOwnership() public virtual { address sender = _msgSender(); require(pendingOwner() == sender, "Ownable2Step: caller is not the new owner"); _transferOwnership(sender); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address from, address to, uint256 amount) external returns (bool); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.9.0) (utils/math/SafeMath.sol) pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the subtraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.9; import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import {SafeMath} from "@openzeppelin/contracts/utils/math/SafeMath.sol"; import {IDividendDistributor} from './IDividendDistributor.sol'; import {console} from "hardhat/console.sol"; contract DividendDistributor is IDividendDistributor { using SafeMath for uint256; address _token; struct Share { uint256 amount; uint256 totalExcluded; uint256 totalRealised; } uint256 private balanceBefore = 0; address[] shareholders; mapping (address => uint256) shareholderIndexes; mapping (address => uint256) shareholderClaims; mapping (address => Share) public shares; uint256 public totalShares; uint256 public totalDividends; uint256 public totalDistributed; uint256 public dividendsPerShare; uint256 public dividendsPerShareAccuracyFactor = 10 ** 36; uint256 currentIndex; bool initialized; modifier initialization() { require(!initialized); _; initialized = true; } modifier onlyToken() { require(msg.sender == _token); _; } constructor () { _token = msg.sender; } function setShare(address shareholder, uint256 amount) external override onlyToken { // if(shares[shareholder].amount > 0) { // distributeDividend(shareholder); // } if(amount > 0 && shares[shareholder].amount == 0){ addShareholder(shareholder); }else if(amount == 0 && shares[shareholder].amount > 0){ removeShareholder(shareholder); } totalShares = totalShares.sub(shares[shareholder].amount).add(amount); shares[shareholder].amount = amount; //shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount); } function deposit() external payable override onlyToken { uint256 amount = address(this).balance.sub(balanceBefore); balanceBefore = amount; totalDividends = totalDividends.add(amount); dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares)); } function distributeDividend(address shareholder) internal { if(shares[shareholder].amount == 0){ return; } uint256 amount = getUnpaidEarnings(shareholder); if(amount > 0){ totalDistributed = totalDistributed.add(amount); payable(shareholder).transfer(amount); shareholderClaims[shareholder] = block.timestamp; shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount); shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount); } } function claimDividend(address shareholder) external onlyToken{ distributeDividend(shareholder); } function getUnpaidEarnings(address shareholder) public view returns (uint256) { //console.log("Share amount of %s: %s", shareholder, shares[shareholder].amount); if(shares[shareholder].amount == 0){ return 0; } uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount); uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded; //console.log("Dividends of %s: %s", shareholder, shareholderTotalDividends); //console.log("Excluded of %s: %s", shareholder, shareholderTotalExcluded); if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; } return shareholderTotalDividends.sub(shareholderTotalExcluded); } function getCumulativeDividends(uint256 share) internal view returns (uint256) { return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor); } function addShareholder(address shareholder) internal { shareholderIndexes[shareholder] = shareholders.length; shareholders.push(shareholder); } function removeShareholder(address shareholder) internal { shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1]; shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder]; shareholders.pop(); } function unstuckToken(address _receiver) external override onlyToken { payable(_receiver).transfer(address(this).balance); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.9; interface IDividendDistributor { function claimDividend(address shareholder) external; function setShare(address shareholder, uint256 amount) external; function deposit() external payable; function unstuckToken(address _receiver) external; }
// SPDX-License-Identifier: MIT pragma solidity >= 0.4.22 <0.9.0; library console { address constant CONSOLE_ADDRESS = 0x000000000000000000636F6e736F6c652e6c6f67; function _sendLogPayload(bytes memory payload) private view { address consoleAddress = CONSOLE_ADDRESS; /// @solidity memory-safe-assembly assembly { pop(staticcall(gas(), consoleAddress, add(payload, 32), mload(payload), 0, 0)) } } function log() internal view { _sendLogPayload(abi.encodeWithSignature("log()")); } function logInt(int256 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(int256)", p0)); } function logUint(uint256 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256)", p0)); } function logString(string memory p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(string)", p0)); } function logBool(bool p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool)", p0)); } function logAddress(address p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(address)", p0)); } function logBytes(bytes memory p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes)", p0)); } function logBytes1(bytes1 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes1)", p0)); } function logBytes2(bytes2 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes2)", p0)); } function logBytes3(bytes3 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes3)", p0)); } function logBytes4(bytes4 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes4)", p0)); } function logBytes5(bytes5 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes5)", p0)); } function logBytes6(bytes6 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes6)", p0)); } function logBytes7(bytes7 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes7)", p0)); } function logBytes8(bytes8 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes8)", p0)); } function logBytes9(bytes9 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes9)", p0)); } function logBytes10(bytes10 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes10)", p0)); } function logBytes11(bytes11 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes11)", p0)); } function logBytes12(bytes12 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes12)", p0)); } function logBytes13(bytes13 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes13)", p0)); } function logBytes14(bytes14 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes14)", p0)); } function logBytes15(bytes15 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes15)", p0)); } function logBytes16(bytes16 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes16)", p0)); } function logBytes17(bytes17 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes17)", p0)); } function logBytes18(bytes18 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes18)", p0)); } function logBytes19(bytes19 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes19)", p0)); } function logBytes20(bytes20 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes20)", p0)); } function logBytes21(bytes21 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes21)", p0)); } function logBytes22(bytes22 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes22)", p0)); } function logBytes23(bytes23 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes23)", p0)); } function logBytes24(bytes24 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes24)", p0)); } function logBytes25(bytes25 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes25)", p0)); } function logBytes26(bytes26 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes26)", p0)); } function logBytes27(bytes27 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes27)", p0)); } function logBytes28(bytes28 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes28)", p0)); } function logBytes29(bytes29 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes29)", p0)); } function logBytes30(bytes30 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes30)", p0)); } function logBytes31(bytes31 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes31)", p0)); } function logBytes32(bytes32 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes32)", p0)); } function log(uint256 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256)", p0)); } function log(string memory p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(string)", p0)); } function log(bool p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool)", p0)); } function log(address p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(address)", p0)); } function log(uint256 p0, uint256 p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256)", p0, p1)); } function log(uint256 p0, string memory p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string)", p0, p1)); } function log(uint256 p0, bool p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool)", p0, p1)); } function log(uint256 p0, address p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address)", p0, p1)); } function log(string memory p0, uint256 p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256)", p0, p1)); } function log(string memory p0, string memory p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string)", p0, p1)); } function log(string memory p0, bool p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool)", p0, p1)); } function log(string memory p0, address p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address)", p0, p1)); } function log(bool p0, uint256 p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256)", p0, p1)); } function log(bool p0, string memory p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string)", p0, p1)); } function log(bool p0, bool p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool)", p0, p1)); } function log(bool p0, address p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address)", p0, p1)); } function log(address p0, uint256 p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256)", p0, p1)); } function log(address p0, string memory p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string)", p0, p1)); } function log(address p0, bool p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool)", p0, p1)); } function log(address p0, address p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address)", p0, p1)); } function log(uint256 p0, uint256 p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256)", p0, p1, p2)); } function log(uint256 p0, uint256 p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string)", p0, p1, p2)); } function log(uint256 p0, uint256 p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool)", p0, p1, p2)); } function log(uint256 p0, uint256 p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address)", p0, p1, p2)); } function log(uint256 p0, string memory p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256)", p0, p1, p2)); } function log(uint256 p0, string memory p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,string)", p0, p1, p2)); } function log(uint256 p0, string memory p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool)", p0, p1, p2)); } function log(uint256 p0, string memory p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,address)", p0, p1, p2)); } function log(uint256 p0, bool p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256)", p0, p1, p2)); } function log(uint256 p0, bool p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string)", p0, p1, p2)); } function log(uint256 p0, bool p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool)", p0, p1, p2)); } function log(uint256 p0, bool p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address)", p0, p1, p2)); } function log(uint256 p0, address p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256)", p0, p1, p2)); } function log(uint256 p0, address p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,string)", p0, p1, p2)); } function log(uint256 p0, address p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool)", p0, p1, p2)); } function log(uint256 p0, address p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,address)", p0, p1, p2)); } function log(string memory p0, uint256 p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256)", p0, p1, p2)); } function log(string memory p0, uint256 p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,string)", p0, p1, p2)); } function log(string memory p0, uint256 p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool)", p0, p1, p2)); } function log(string memory p0, uint256 p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,address)", p0, p1, p2)); } function log(string memory p0, string memory p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,uint256)", p0, p1, p2)); } function log(string memory p0, string memory p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,string)", p0, p1, p2)); } function log(string memory p0, string memory p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,bool)", p0, p1, p2)); } function log(string memory p0, string memory p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,address)", p0, p1, p2)); } function log(string memory p0, bool p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256)", p0, p1, p2)); } function log(string memory p0, bool p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,string)", p0, p1, p2)); } function log(string memory p0, bool p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool)", p0, p1, p2)); } function log(string memory p0, bool p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,address)", p0, p1, p2)); } function log(string memory p0, address p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,uint256)", p0, p1, p2)); } function log(string memory p0, address p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,string)", p0, p1, p2)); } function log(string memory p0, address p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,bool)", p0, p1, p2)); } function log(string memory p0, address p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,address)", p0, p1, p2)); } function log(bool p0, uint256 p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256)", p0, p1, p2)); } function log(bool p0, uint256 p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string)", p0, p1, p2)); } function log(bool p0, uint256 p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool)", p0, p1, p2)); } function log(bool p0, uint256 p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address)", p0, p1, p2)); } function log(bool p0, string memory p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256)", p0, p1, p2)); } function log(bool p0, string memory p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,string)", p0, p1, p2)); } function log(bool p0, string memory p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool)", p0, p1, p2)); } function log(bool p0, string memory p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,address)", p0, p1, p2)); } function log(bool p0, bool p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256)", p0, p1, p2)); } function log(bool p0, bool p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string)", p0, p1, p2)); } function log(bool p0, bool p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool)", p0, p1, p2)); } function log(bool p0, bool p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address)", p0, p1, p2)); } function log(bool p0, address p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256)", p0, p1, p2)); } function log(bool p0, address p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,string)", p0, p1, p2)); } function log(bool p0, address p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool)", p0, p1, p2)); } function log(bool p0, address p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,address)", p0, p1, p2)); } function log(address p0, uint256 p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256)", p0, p1, p2)); } function log(address p0, uint256 p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,string)", p0, p1, p2)); } function log(address p0, uint256 p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool)", p0, p1, p2)); } function log(address p0, uint256 p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,address)", p0, p1, p2)); } function log(address p0, string memory p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,uint256)", p0, p1, p2)); } function log(address p0, string memory p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,string)", p0, p1, p2)); } function log(address p0, string memory p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,bool)", p0, p1, p2)); } function log(address p0, string memory p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,address)", p0, p1, p2)); } function log(address p0, bool p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256)", p0, p1, p2)); } function log(address p0, bool p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,string)", p0, p1, p2)); } function log(address p0, bool p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool)", p0, p1, p2)); } function log(address p0, bool p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,address)", p0, p1, p2)); } function log(address p0, address p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,uint256)", p0, p1, p2)); } function log(address p0, address p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,string)", p0, p1, p2)); } function log(address p0, address p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,bool)", p0, p1, p2)); } function log(address p0, address p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,address)", p0, p1, p2)); } function log(uint256 p0, uint256 p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256,string)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256,bool)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256,address)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string,string)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string,bool)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string,address)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool,string)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool,bool)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool,address)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address,string)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address,bool)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address,address)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256,string)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256,bool)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256,address)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,string,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,string,string)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,string,bool)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,string,address)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool,string)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool,bool)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool,address)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,address,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,address,string)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,address,bool)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,address,address)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256,string)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256,bool)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256,address)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string,string)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string,bool)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string,address)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool,string)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool,bool)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool,address)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address,string)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address,bool)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address,address)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256,string)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256,bool)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256,address)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,string,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,string,string)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,string,bool)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,string,address)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool,string)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool,bool)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool,address)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,address,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,address,string)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,address,bool)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,address,address)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256,uint256)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256,string)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256,bool)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256,address)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,string,uint256)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,string,string)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,string,bool)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,string,address)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool,uint256)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool,string)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool,bool)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool,address)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,address,uint256)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,address,string)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,address,bool)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,address,address)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,uint256,uint256)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,uint256,string)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,uint256,bool)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,uint256,address)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,string,uint256)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,string,string)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,string,bool)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,string,address)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,uint256)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,string)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,bool)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,address)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,address,uint256)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,address,string)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,address,bool)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,address,address)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256,uint256)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256,string)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256,bool)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256,address)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,uint256)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,string)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,bool)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,address)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,uint256)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,string)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,bool)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,address)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,uint256)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,string)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,bool)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,address)", p0, p1, p2, p3)); } function log(string memory p0, address p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,uint256,uint256)", p0, p1, p2, p3)); } function log(string memory p0, address p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,uint256,string)", p0, p1, p2, p3)); } function log(string memory p0, address p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,uint256,bool)", p0, p1, p2, p3)); } function log(string memory p0, address p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,uint256,address)", p0, p1, p2, p3)); } function log(string memory p0, address p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,string,uint256)", p0, p1, p2, p3)); } function log(string memory p0, address p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,string,string)", p0, p1, p2, p3)); } function log(string memory p0, address p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,string,bool)", p0, p1, p2, p3)); } function log(string memory p0, address p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,string,address)", p0, p1, p2, p3)); } function log(string memory p0, address p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,uint256)", p0, p1, p2, p3)); } function log(string memory p0, address p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,string)", p0, p1, p2, p3)); } function log(string memory p0, address p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,bool)", p0, p1, p2, p3)); } function log(string memory p0, address p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,address)", p0, p1, p2, p3)); } function log(string memory p0, address p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,address,uint256)", p0, p1, p2, p3)); } function log(string memory p0, address p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,address,string)", p0, p1, p2, p3)); } function log(string memory p0, address p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,address,bool)", p0, p1, p2, p3)); } function log(string memory p0, address p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,address,address)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256,uint256)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256,string)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256,bool)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256,address)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string,uint256)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string,string)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string,bool)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string,address)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool,uint256)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool,string)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool,bool)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool,address)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address,uint256)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address,string)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address,bool)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address,address)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256,uint256)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256,string)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256,bool)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256,address)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,uint256)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,string)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,bool)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,address)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,uint256)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,string)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,bool)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,address)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,uint256)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,string)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,bool)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,address)", p0, p1, p2, p3)); } function log(bool p0, bool p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256,uint256)", p0, p1, p2, p3)); } function log(bool p0, bool p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256,string)", p0, p1, p2, p3)); } function log(bool p0, bool p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256,bool)", p0, p1, p2, p3)); } function log(bool p0, bool p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256,address)", p0, p1, p2, p3)); } function log(bool p0, bool p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,uint256)", p0, p1, p2, p3)); } function log(bool p0, bool p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,string)", p0, p1, p2, p3)); } function log(bool p0, bool p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,bool)", p0, p1, p2, p3)); } function log(bool p0, bool p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,address)", p0, p1, p2, p3)); } function log(bool p0, bool p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,uint256)", p0, p1, p2, p3)); } function log(bool p0, bool p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,string)", p0, p1, p2, p3)); } function log(bool p0, bool p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,bool)", p0, p1, p2, p3)); } function log(bool p0, bool p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,address)", p0, p1, p2, p3)); } function log(bool p0, bool p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,uint256)", p0, p1, p2, p3)); } function log(bool p0, bool p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,string)", p0, p1, p2, p3)); } function log(bool p0, bool p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,bool)", p0, p1, p2, p3)); } function log(bool p0, bool p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,address)", p0, p1, p2, p3)); } function log(bool p0, address p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256,uint256)", p0, p1, p2, p3)); } function log(bool p0, address p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256,string)", p0, p1, p2, p3)); } function log(bool p0, address p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256,bool)", p0, p1, p2, p3)); } function log(bool p0, address p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256,address)", p0, p1, p2, p3)); } function log(bool p0, address p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,uint256)", p0, p1, p2, p3)); } function log(bool p0, address p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,string)", p0, p1, p2, p3)); } function log(bool p0, address p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,bool)", p0, p1, p2, p3)); } function log(bool p0, address p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,address)", p0, p1, p2, p3)); } function log(bool p0, address p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,uint256)", p0, p1, p2, p3)); } function log(bool p0, address p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,string)", p0, p1, p2, p3)); } function log(bool p0, address p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,bool)", p0, p1, p2, p3)); } function log(bool p0, address p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,address)", p0, p1, p2, p3)); } function log(bool p0, address p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,uint256)", p0, p1, p2, p3)); } function log(bool p0, address p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,string)", p0, p1, p2, p3)); } function log(bool p0, address p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,bool)", p0, p1, p2, p3)); } function log(bool p0, address p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,address)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256,uint256)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256,string)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256,bool)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256,address)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,string,uint256)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,string,string)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,string,bool)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,string,address)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool,uint256)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool,string)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool,bool)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool,address)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,address,uint256)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,address,string)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,address,bool)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,address,address)", p0, p1, p2, p3)); } function log(address p0, string memory p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,uint256,uint256)", p0, p1, p2, p3)); } function log(address p0, string memory p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,uint256,string)", p0, p1, p2, p3)); } function log(address p0, string memory p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,uint256,bool)", p0, p1, p2, p3)); } function log(address p0, string memory p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,uint256,address)", p0, p1, p2, p3)); } function log(address p0, string memory p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,string,uint256)", p0, p1, p2, p3)); } function log(address p0, string memory p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,string,string)", p0, p1, p2, p3)); } function log(address p0, string memory p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,string,bool)", p0, p1, p2, p3)); } function log(address p0, string memory p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,string,address)", p0, p1, p2, p3)); } function log(address p0, string memory p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,uint256)", p0, p1, p2, p3)); } function log(address p0, string memory p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,string)", p0, p1, p2, p3)); } function log(address p0, string memory p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,bool)", p0, p1, p2, p3)); } function log(address p0, string memory p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,address)", p0, p1, p2, p3)); } function log(address p0, string memory p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,address,uint256)", p0, p1, p2, p3)); } function log(address p0, string memory p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,address,string)", p0, p1, p2, p3)); } function log(address p0, string memory p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,address,bool)", p0, p1, p2, p3)); } function log(address p0, string memory p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,address,address)", p0, p1, p2, p3)); } function log(address p0, bool p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256,uint256)", p0, p1, p2, p3)); } function log(address p0, bool p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256,string)", p0, p1, p2, p3)); } function log(address p0, bool p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256,bool)", p0, p1, p2, p3)); } function log(address p0, bool p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256,address)", p0, p1, p2, p3)); } function log(address p0, bool p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,uint256)", p0, p1, p2, p3)); } function log(address p0, bool p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,string)", p0, p1, p2, p3)); } function log(address p0, bool p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,bool)", p0, p1, p2, p3)); } function log(address p0, bool p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,address)", p0, p1, p2, p3)); } function log(address p0, bool p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,uint256)", p0, p1, p2, p3)); } function log(address p0, bool p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,string)", p0, p1, p2, p3)); } function log(address p0, bool p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,bool)", p0, p1, p2, p3)); } function log(address p0, bool p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,address)", p0, p1, p2, p3)); } function log(address p0, bool p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,uint256)", p0, p1, p2, p3)); } function log(address p0, bool p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,string)", p0, p1, p2, p3)); } function log(address p0, bool p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,bool)", p0, p1, p2, p3)); } function log(address p0, bool p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,address)", p0, p1, p2, p3)); } function log(address p0, address p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,uint256,uint256)", p0, p1, p2, p3)); } function log(address p0, address p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,uint256,string)", p0, p1, p2, p3)); } function log(address p0, address p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,uint256,bool)", p0, p1, p2, p3)); } function log(address p0, address p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,uint256,address)", p0, p1, p2, p3)); } function log(address p0, address p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,string,uint256)", p0, p1, p2, p3)); } function log(address p0, address p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,string,string)", p0, p1, p2, p3)); } function log(address p0, address p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,string,bool)", p0, p1, p2, p3)); } function log(address p0, address p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,string,address)", p0, p1, p2, p3)); } function log(address p0, address p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,uint256)", p0, p1, p2, p3)); } function log(address p0, address p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,string)", p0, p1, p2, p3)); } function log(address p0, address p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,bool)", p0, p1, p2, p3)); } function log(address p0, address p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,address)", p0, p1, p2, p3)); } function log(address p0, address p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,address,uint256)", p0, p1, p2, p3)); } function log(address p0, address p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,address,string)", p0, p1, p2, p3)); } function log(address p0, address p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,address,bool)", p0, p1, p2, p3)); } function log(address p0, address p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,address,address)", p0, p1, p2, p3)); } }
{ "evmVersion": "istanbul", "optimizer": { "enabled": true, "runs": 999 }, "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":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"AddWalletExemptLimitsTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_exemptLimitsTaxes","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_jackpotWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTaxSwapDenom","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxJackpot","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxRewards","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThresholdDenom","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxTreasury","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"divDistributorBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"}],"name":"enableLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getSwapSettings","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"_decimalsPrecision","type":"uint8"}],"name":"getTokenPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_holder","type":"address"}],"name":"getUnpaidEarnings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"_decimalsPrecision","type":"uint8"}],"name":"getWETHprice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liqPairTokenWeth","outputs":[{"internalType":"contract ILiqPair","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liqPairWethUsdc","outputs":[{"internalType":"contract ILiqPair","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reduceTeamFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"}],"name":"setJackpotWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"}],"name":"setTreasuryWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unstuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unstuckRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526002805461dead6001600160a01b03199182161790915560038054909116905560068080556007556008805462ffffff191662010302179055620000746064620000516009600a62000724565b6200006090620186a062000735565b6200044660201b620013f51790919060201c565b600b556200008b6032620000516009600a62000724565b600c5560c8600d556064600e55600f805460ff19166001179055601380546001600160a01b031990811673b4e16d0168e52d35cacd2c6185b44281ec28c9dc1790915560158054909116737a250d5630b4cf539739df2c5dacb4c659f2488d1790556016805461ffff60a81b191690553480156200010857600080fd5b5062000114336200045d565b600880546301000000600160b81b03191663010000003390810291909117909155600980546001600160a01b03191690911781556200015590600a62000724565b6200016490620186a062000735565b33600090815260046020908152604080832093909355601090528181208054600160ff19918216811790925530835291839020805490921617905551620001ab9062000603565b604051809103906000f080158015620001c8573d6000803e3d6000fd5b50600a80546001600160a01b0319166001600160a01b0392831617905530600081815260116020526040808220805460ff1990811660019081179092556002548616845282842080548216831790556003548616845291909220805490911690911790556015546200023e921660001962000487565b601554601480546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156200029b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c1919062000757565b6001600160a01b031663c9c6539630601460009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000324573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034a919062000757565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000398573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003be919062000757565b601680546001600160a01b0319166001600160a01b0392909216919091179055620003e63390565b6001600160a01b031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620004206009600a62000724565b6200042f90620186a062000735565b60405190815260200160405180910390a3620007ac565b600062000454828462000789565b90505b92915050565b600180546001600160a01b03191690556200048481620005b3602090811b6200140817901c565b50565b6001600160a01b038316620004ef5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620005525760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401620004e6565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6108d88062002c6783390190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620006685781600019048211156200064c576200064c62000611565b808516156200065a57918102915b93841c93908002906200062c565b509250929050565b600082620006815750600162000457565b81620006905750600062000457565b8160018114620006a95760028114620006b457620006d4565b600191505062000457565b60ff841115620006c857620006c862000611565b50506001821b62000457565b5060208310610133831016604e8410600b8410161715620006f9575081810a62000457565b62000705838362000627565b80600019048211156200071c576200071c62000611565b029392505050565b60006200045460ff84168362000670565b600081600019048311821515161562000752576200075262000611565b500290565b6000602082840312156200076a57600080fd5b81516001600160a01b03811681146200078257600080fd5b9392505050565b600082620007a757634e487b7160e01b600052601260045260246000fd5b500490565b6124ab80620007bc6000396000f3fe6080604052600436106102f55760003560e01c806382bcedb51161018f578063c9567bf9116100e1578063da0334121161008a578063e30c397811610064578063e30c397814610891578063f0fc6bca146108af578063f2fde38b146108c457600080fd5b8063da0334121461080b578063dc2e19bb1461082b578063dd62ed3e1461084b57600080fd5b8063d0ef56c7116100bb578063d0ef56c7146107b7578063d79750ef146107d6578063d89e8c1c146107eb57600080fd5b8063c9567bf914610769578063ca9ec19914610771578063cc4c2e791461078757600080fd5b8063965b8b9811610143578063a8602fea1161011d578063a8602fea14610714578063a9059cbb14610734578063c440a2561461075457600080fd5b8063965b8b98146106be578063a42d70ae146106de578063a5cdee05146106f457600080fd5b80638da5cb5b116101745780638da5cb5b146106445780638f9a55c01461066257806395d89b411461067857600080fd5b806382bcedb514610605578063878f8ff71461061a57600080fd5b806342a110951161024857806370a08231116101fc578063766f286e116101d6578063766f286e146105aa57806379ba5097146105da5780637d1db4a5146105ef57600080fd5b806370a0823114610545578063715018a61461057b578063765821621461059057600080fd5b806368ec19bf1161022d57806368ec19bf146104e85780636db038a6146104fe5780636f268a991461051e57600080fd5b806342a11095146104bd57806351bc3c85146104d357600080fd5b80631e6a1fff116102aa578063313ce56711610284578063313ce5671461046d5780633582ad231461048157806342012bb81461049b57600080fd5b80631e6a1fff146103fb57806323b872dd1461042d57806328fd31981461044d57600080fd5b8063095ea7b3116102db578063095ea7b31461038d57806317af1241146103bd57806318160ddd146103e657600080fd5b8062012a831461030157806306fdde031461033e57600080fd5b366102fc57005b600080fd5b34801561030d57600080fd5b50600954610321906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561034a57600080fd5b5060408051808201909152600c81527f4d696c616479204c6f74746f000000000000000000000000000000000000000060208201525b6040516103359190611f73565b34801561039957600080fd5b506103ad6103a8366004611fdd565b6108e4565b6040519015158152602001610335565b3480156103c957600080fd5b50600a546001600160a01b0316315b604051908152602001610335565b3480156103f257600080fd5b506103d86108fb565b34801561040757600080fd5b5060085461041b9062010000900460ff1681565b60405160ff9091168152602001610335565b34801561043957600080fd5b506103ad610448366004612009565b61091b565b34801561045957600080fd5b506103d861046836600461204a565b610984565b34801561047957600080fd5b50600961041b565b34801561048d57600080fd5b50600f546103ad9060ff1681565b3480156104a757600080fd5b506104bb6104b6366004612075565b610a0c565b005b3480156104c957600080fd5b506103d860065481565b3480156104df57600080fd5b506104bb610a3f565b3480156104f457600080fd5b506103d8600e5481565b34801561050a57600080fd5b506103d86105193660046120ae565b610afe565b34801561052a57600080fd5b5060085461032190630100000090046001600160a01b031681565b34801561055157600080fd5b506103d861056036600461204a565b6001600160a01b031660009081526004602052604090205490565b34801561058757600080fd5b506104bb610bcc565b34801561059c57600080fd5b5060085461041b9060ff1681565b3480156105b657600080fd5b506103ad6105c536600461204a565b60106020526000908152604090205460ff1681565b3480156105e657600080fd5b506104bb610be0565b3480156105fb57600080fd5b506103d8600b5481565b34801561061157600080fd5b506104bb610c6e565b34801561062657600080fd5b5061062f610cfb565b60408051928352602083019190915201610335565b34801561065057600080fd5b506000546001600160a01b0316610321565b34801561066e57600080fd5b506103d8600c5481565b34801561068457600080fd5b5060408051808201909152600781527f244d4c6f74746f000000000000000000000000000000000000000000000000006020820152610380565b3480156106ca57600080fd5b50601354610321906001600160a01b031681565b3480156106ea57600080fd5b506103d8600d5481565b34801561070057600080fd5b506104bb61070f3660046120d1565b610d44565b34801561072057600080fd5b506104bb61072f36600461204a565b610d5f565b34801561074057600080fd5b506103ad61074f366004611fdd565b610da8565b34801561076057600080fd5b506104bb610db5565b6104bb610ece565b34801561077d57600080fd5b506103d860075481565b34801561079357600080fd5b506103ad6107a236600461204a565b60116020526000908152604090205460ff1681565b3480156107c357600080fd5b5060085461041b90610100900460ff1681565b3480156107e257600080fd5b506104bb611143565b3480156107f757600080fd5b506103d86108063660046120ae565b611243565b34801561081757600080fd5b506104bb61082636600461204a565b611311565b34801561083757600080fd5b50601254610321906001600160a01b031681565b34801561085757600080fd5b506103d86108663660046120ee565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561089d57600080fd5b506001546001600160a01b0316610321565b3480156108bb57600080fd5b506104bb61133b565b3480156108d057600080fd5b506104bb6108df36600461204a565b611384565b60006108f1338484611458565b5060015b92915050565b60006109096009600a612216565b61091690620186a0612225565b905090565b60006109288484846115b0565b61097a84336109758560405180606001604052806028815260200161244e602891396001600160a01b038a1660009081526005602090815260408083203384529091529020549190611bf0565b611458565b5060019392505050565b600a546040517f28fd31980000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015260009216906328fd319890602401602060405180830381865afa1580156109e8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f59190612244565b610a14611c1c565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b600854630100000090046001600160a01b03163314610acb5760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79207461782077616c6c65742063616e2072756e2073776170206d616e60448201527f75616c6c7900000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b306000908152600460205260409020548015610aea57610aea81611c76565b478015610afa57610afa81611e14565b5050565b6000806000601360009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a9190612280565b506dffffffffffffffffffffffffffff9182169350169050610ba18264e8d4a51000611f21565b9150610bb8610bb185600a612216565b8390611f21565b9150610bc482826113f5565b949350505050565b610bd4611c1c565b610bde6000611f2d565b565b60015433906001600160a01b03168114610c625760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e657200000000000000000000000000000000000000000000006064820152608401610ac2565b610c6b81611f2d565b50565b600854630100000090046001600160a01b03163314610ccf5760405162461bcd60e51b815260206004820152601f60248201527f4f6e6c79207461782077616c6c65742063616e20756e737475636b20657468006044820152606401610ac2565b60405133904780156108fc02916000818181858888f19350505050158015610c6b573d6000803e3d6000fd5b6016546001600160a01b03166000908152600460205260408120548190610d2d600d54826113f590919063ffffffff16565b600e54610d3b9083906113f5565b92509250509091565b610d4c611c1c565b600f805460ff1916911515919091179055565b610d67611c1c565b600880546001600160a01b039092166301000000027fffffffffffffffffff0000000000000000000000000000000000000000ffffff909216919091179055565b60006108f13384846115b0565b600854630100000090046001600160a01b03163314610e165760405162461bcd60e51b815260206004820152601e60248201527f4f6e6c79207461782077616c6c65742063616e207265647563652066656500006044820152606401610ac2565b60085460ff16610e685760405162461bcd60e51b815260206004820152601c60248201527f5465616d206665652077617320616c72656164792072656d6f766564000000006044820152606401610ac2565b6008805460ff16906000610e7b836122d0565b91906101000a81548160ff021916908360ff160217905550506008600281819054906101000a900460ff1680929190610eb3906122ed565b91906101000a81548160ff021916908360ff16021790555050565b610ed6611c1c565b60165474010000000000000000000000000000000000000000900460ff1615610f415760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610ac2565b6014546001600160a01b031663f305d7193430610f73816001600160a01b031660009081526004602052604090205490565b600080610f886000546001600160a01b031690565b60405160e088901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015611008573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061102d919061230d565b50506016546014546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af115801561109f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c3919061233b565b50601680547601000100000000000000000000000000000000000000007fffffffffffffffffff00ff00ffffffffffffffffffffffffffffffffffffffff82161782556001600160a01b039081166000908152601160205260409020805460ff191660011790559054601280546001600160a01b03191691909216179055565b600854630100000090046001600160a01b031633146111ca5760405162461bcd60e51b815260206004820152602360248201527f4f6e6c79207461782077616c6c65742063616e20756e737475636b207265776160448201527f72647300000000000000000000000000000000000000000000000000000000006064820152608401610ac2565b600a546040517fd15ab09c0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b039091169063d15ab09c906024015b600060405180830381600087803b15801561122957600080fd5b505af115801561123d573d6000803e3d6000fd5b50505050565b6000806000601260009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561129b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112bf9190612280565b506dffffffffffffffffffffffffffff91821693501690506112e582633b9aca006113f5565b915060006112fc6112f586610afe565b8490611f21565b905061130881836113f5565b95945050505050565b611319611c1c565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b600a546040517f15f7e05e0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b03909116906315f7e05e9060240161120f565b61138c611c1c565b600180546001600160a01b0383166001600160a01b031990911681179091556113bd6000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60006114018284612358565b9392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383166114d35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610ac2565b6001600160a01b03821661154f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610ac2565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661162c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610ac2565b6001600160a01b0382166116a85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610ac2565b6000811161171e5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610ac2565b6001600160a01b03821660009081526010602052604081205460ff1615801561176057506001600160a01b03841660009081526010602052604090205460ff16155b15611a0257600f5460ff1615611873576016546001600160a01b03848116911614611873576001600160a01b038316600090815260046020526040902054600c546117ab848361237a565b111561181f5760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401610ac2565b600b548311156118715760405162461bcd60e51b815260206004820152601160248201527f5458204c696d69742045786365656465640000000000000000000000000000006044820152606401610ac2565b505b6016546001600160a01b03858116911614156118ac576118a960646118a360065485611f2190919063ffffffff16565b906113f5565b90505b6016546001600160a01b03848116911614156118df576118dc60646118a360075485611f2190919063ffffffff16565b90505b6000806118ea610cfb565b3060009081526004602052604090205460165492945090925090600160a81b900460ff1615801561192857506016546001600160a01b038781169116145b80156119505750601654760100000000000000000000000000000000000000000000900460ff165b801561195b57508281115b156119845761197261196d8284611f46565b611c76565b4780156119825761198247611e14565b505b83156119fe57306000908152600460205260409020546119a49085611f5b565b30600081815260046020526040908190209290925590516001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119f59088815260200190565b60405180910390a35b5050505b6001600160a01b038416600090815260046020526040902054611a259083611f67565b6001600160a01b038516600090815260046020526040902055611a6a611a4b8383611f67565b6001600160a01b03851660009081526004602052604090205490611f5b565b6001600160a01b0380851660008181526004602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611ab48585611f67565b60405190815260200160405180910390a36001600160a01b03841660009081526011602052604090205460ff16611b5757600a546001600160a01b03858116600081815260046020819052604091829020549151630a5b654b60e11b81529081019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015611b4457600080fd5b505af1925050508015611b55575060015b505b6001600160a01b03831660009081526011602052604090205460ff1661123d57600a546001600160a01b03848116600081815260046020819052604091829020549151630a5b654b60e11b81529081019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015611bd657600080fd5b505af1925050508015611be7575060015b61123d5761123d565b60008184841115611c145760405162461bcd60e51b8152600401610ac29190611f73565b505050900390565b6000546001600160a01b03163314610bde5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ac2565b6016805460ff60a81b1916600160a81b17905580611c9357611e04565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611cc857611cc8612392565b6001600160a01b03928316602091820292909201810191909152601454604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015611d3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d5e91906123a8565b81600181518110611d7157611d71612392565b6001600160a01b0392831660209182029290920101526014546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac94790611dd09085906000908690309042906004016123c5565b600060405180830381600087803b158015611dea57600080fd5b505af1158015611dfe573d6000803e3d6000fd5b50505050505b506016805460ff60a81b19169055565b6008546006546000916001600160a01b036301000000820416916108fc91611e4591906118a390879060ff16611f21565b6040518115909202916000818181858888f16009546006546008549297506001600160a01b0390911695506108fc9450611e8f935091506118a3908790610100900460ff16611f21565b6040518115909202916000818181858888f1600a546006546008549297506001600160a01b03909116955063d0e30db09450611edc935091506118a390879062010000900460ff16611f21565b6040518263ffffffff1660e01b81526004016000604051808303818588803b158015611f0757600080fd5b505af193505050508015611f19575060015b610afa575050565b60006114018284612225565b600180546001600160a01b0319169055610c6b81611408565b6000818311611f555782611401565b50919050565b6000611401828461237a565b60006114018284612436565b600060208083528351808285015260005b81811015611fa057858101830151858201604001528201611f84565b81811115611fb2576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610c6b57600080fd5b60008060408385031215611ff057600080fd5b8235611ffb81611fc8565b946020939093013593505050565b60008060006060848603121561201e57600080fd5b833561202981611fc8565b9250602084013561203981611fc8565b929592945050506040919091013590565b60006020828403121561205c57600080fd5b813561140181611fc8565b8015158114610c6b57600080fd5b6000806040838503121561208857600080fd5b823561209381611fc8565b915060208301356120a381612067565b809150509250929050565b6000602082840312156120c057600080fd5b813560ff8116811461140157600080fd5b6000602082840312156120e357600080fd5b813561140181612067565b6000806040838503121561210157600080fd5b823561210c81611fc8565b915060208301356120a381611fc8565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561216d5781600019048211156121535761215361211c565b8085161561216057918102915b93841c9390800290612137565b509250929050565b600082612184575060016108f5565b81612191575060006108f5565b81600181146121a757600281146121b1576121cd565b60019150506108f5565b60ff8411156121c2576121c261211c565b50506001821b6108f5565b5060208310610133831016604e8410600b84101617156121f0575081810a6108f5565b6121fa8383612132565b806000190482111561220e5761220e61211c565b029392505050565b600061140160ff841683612175565b600081600019048311821515161561223f5761223f61211c565b500290565b60006020828403121561225657600080fd5b5051919050565b80516dffffffffffffffffffffffffffff8116811461227b57600080fd5b919050565b60008060006060848603121561229557600080fd5b61229e8461225d565b92506122ac6020850161225d565b9150604084015163ffffffff811681146122c557600080fd5b809150509250925092565b600060ff8216806122e3576122e361211c565b6000190192915050565b600060ff821660ff8114156123045761230461211c565b60010192915050565b60008060006060848603121561232257600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121561234d57600080fd5b815161140181612067565b60008261237557634e487b7160e01b600052601260045260246000fd5b500490565b6000821982111561238d5761238d61211c565b500190565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156123ba57600080fd5b815161140181611fc8565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124155784516001600160a01b0316835293830193918301916001016123f0565b50506001600160a01b03969096166060850152505050608001529392505050565b6000828210156124485761244861211c565b50039056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212205d834f27fe394a89bb2f4ebb9f62e7c555513bcf07bab10158ea3635d238010264736f6c634300080c0033608060405260006001556ec097ce7bc90715b34b9f1000000000600a5534801561002857600080fd5b50600080546001600160a01b0319163317905561088e8061004a6000396000f3fe6080604052600436106100bc5760003560e01c8063997664d711610074578063d15ab09c1161004e578063d15ab09c146101d7578063e2d2e219146101f7578063efca2eed1461020d57600080fd5b8063997664d714610162578063ce7c2ac214610178578063d0e30db0146101cf57600080fd5b806315f7e05e116100a557806315f7e05e1461010c57806328fd31981461012c5780633a98ef391461014c57600080fd5b806311ce023d146100c157806314b6ca96146100ea575b600080fd5b3480156100cd57600080fd5b506100d7600a5481565b6040519081526020015b60405180910390f35b3480156100f657600080fd5b5061010a610105366004610761565b610223565b005b34801561011857600080fd5b5061010a61012736600461078b565b610356565b34801561013857600080fd5b506100d761014736600461078b565b610379565b34801561015857600080fd5b506100d760065481565b34801561016e57600080fd5b506100d760075481565b34801561018457600080fd5b506101b461019336600461078b565b60056020526000908152604090208054600182015460029092015490919083565b604080519384526020840192909252908201526060016100e1565b61010a610402565b3480156101e357600080fd5b5061010a6101f236600461078b565b610475565b34801561020357600080fd5b506100d760095481565b34801561021957600080fd5b506100d760085481565b6000546001600160a01b0316331461023a57600080fd5b60008111801561026057506001600160a01b038216600090815260056020526040902054155b156102d357600280546001600160a01b0384166000818152600360205260408120839055600183018455929092527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace01805473ffffffffffffffffffffffffffffffffffffffff19169091179055610306565b801580156102f857506001600160a01b03821660009081526005602052604090205415155b1561030657610306826104c5565b6001600160a01b038216600090815260056020526040902054600654610337918391610331916105f4565b90610607565b6006556001600160a01b03909116600090815260056020526040902055565b6000546001600160a01b0316331461036d57600080fd5b61037681610613565b50565b6001600160a01b03811660009081526005602052604081205461039e57506000919050565b6001600160a01b0382166000908152600560205260408120546103c09061070a565b6001600160a01b0384166000908152600560205260409020600101549091508082116103f0575060009392505050565b6103fa82826105f4565b949350505050565b6000546001600160a01b0316331461041957600080fd5b6000610430600154476105f490919063ffffffff16565b60018190556007549091506104459082610607565b600755600654600a5461046f9161046691610460908561072d565b90610739565b60095490610607565b60095550565b6000546001600160a01b0316331461048c57600080fd5b6040516001600160a01b038216904780156108fc02916000818181858888f193505050501580156104c1573d6000803e3d6000fd5b5050565b600280546104d5906001906107bc565b815481106104e5576104e56107d3565b60009182526020808320909101546001600160a01b0384811684526003909252604090922054600280549290931692918110610523576105236107d3565b6000918252602080832091909101805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0394851617905591831681526003918290526040812054600280549193929161057c906001906107bc565b8154811061058c5761058c6107d3565b60009182526020808320909101546001600160a01b0316835282019290925260400190205560028054806105c2576105c26107e9565b6000828152602090208101600019908101805473ffffffffffffffffffffffffffffffffffffffff1916905501905550565b600061060082846107bc565b9392505050565b600061060082846107ff565b6001600160a01b0381166000908152600560205260409020546106335750565b600061063e82610379565b905080156104c1576008546106539082610607565b6008556040516001600160a01b0383169082156108fc029083906000818181858888f1935050505015801561068c573d6000803e3d6000fd5b506001600160a01b038216600090815260046020908152604080832042905560059091529020600201546106c09082610607565b6001600160a01b03831660009081526005602052604090206002810191909155546106ea9061070a565b6001600160a01b0383166000908152600560205260409020600101555050565b6000610727600a546104606009548561072d90919063ffffffff16565b92915050565b60006106008284610817565b60006106008284610836565b80356001600160a01b038116811461075c57600080fd5b919050565b6000806040838503121561077457600080fd5b61077d83610745565b946020939093013593505050565b60006020828403121561079d57600080fd5b61060082610745565b634e487b7160e01b600052601160045260246000fd5b6000828210156107ce576107ce6107a6565b500390565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b60008219821115610812576108126107a6565b500190565b6000816000190483118215151615610831576108316107a6565b500290565b60008261085357634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220caf5aae672d888752b2c28a23b7cc5f7b1925666283c9edbe89c8f8d768a0ee064736f6c634300080c0033
Deployed Bytecode
0x6080604052600436106102f55760003560e01c806382bcedb51161018f578063c9567bf9116100e1578063da0334121161008a578063e30c397811610064578063e30c397814610891578063f0fc6bca146108af578063f2fde38b146108c457600080fd5b8063da0334121461080b578063dc2e19bb1461082b578063dd62ed3e1461084b57600080fd5b8063d0ef56c7116100bb578063d0ef56c7146107b7578063d79750ef146107d6578063d89e8c1c146107eb57600080fd5b8063c9567bf914610769578063ca9ec19914610771578063cc4c2e791461078757600080fd5b8063965b8b9811610143578063a8602fea1161011d578063a8602fea14610714578063a9059cbb14610734578063c440a2561461075457600080fd5b8063965b8b98146106be578063a42d70ae146106de578063a5cdee05146106f457600080fd5b80638da5cb5b116101745780638da5cb5b146106445780638f9a55c01461066257806395d89b411461067857600080fd5b806382bcedb514610605578063878f8ff71461061a57600080fd5b806342a110951161024857806370a08231116101fc578063766f286e116101d6578063766f286e146105aa57806379ba5097146105da5780637d1db4a5146105ef57600080fd5b806370a0823114610545578063715018a61461057b578063765821621461059057600080fd5b806368ec19bf1161022d57806368ec19bf146104e85780636db038a6146104fe5780636f268a991461051e57600080fd5b806342a11095146104bd57806351bc3c85146104d357600080fd5b80631e6a1fff116102aa578063313ce56711610284578063313ce5671461046d5780633582ad231461048157806342012bb81461049b57600080fd5b80631e6a1fff146103fb57806323b872dd1461042d57806328fd31981461044d57600080fd5b8063095ea7b3116102db578063095ea7b31461038d57806317af1241146103bd57806318160ddd146103e657600080fd5b8062012a831461030157806306fdde031461033e57600080fd5b366102fc57005b600080fd5b34801561030d57600080fd5b50600954610321906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561034a57600080fd5b5060408051808201909152600c81527f4d696c616479204c6f74746f000000000000000000000000000000000000000060208201525b6040516103359190611f73565b34801561039957600080fd5b506103ad6103a8366004611fdd565b6108e4565b6040519015158152602001610335565b3480156103c957600080fd5b50600a546001600160a01b0316315b604051908152602001610335565b3480156103f257600080fd5b506103d86108fb565b34801561040757600080fd5b5060085461041b9062010000900460ff1681565b60405160ff9091168152602001610335565b34801561043957600080fd5b506103ad610448366004612009565b61091b565b34801561045957600080fd5b506103d861046836600461204a565b610984565b34801561047957600080fd5b50600961041b565b34801561048d57600080fd5b50600f546103ad9060ff1681565b3480156104a757600080fd5b506104bb6104b6366004612075565b610a0c565b005b3480156104c957600080fd5b506103d860065481565b3480156104df57600080fd5b506104bb610a3f565b3480156104f457600080fd5b506103d8600e5481565b34801561050a57600080fd5b506103d86105193660046120ae565b610afe565b34801561052a57600080fd5b5060085461032190630100000090046001600160a01b031681565b34801561055157600080fd5b506103d861056036600461204a565b6001600160a01b031660009081526004602052604090205490565b34801561058757600080fd5b506104bb610bcc565b34801561059c57600080fd5b5060085461041b9060ff1681565b3480156105b657600080fd5b506103ad6105c536600461204a565b60106020526000908152604090205460ff1681565b3480156105e657600080fd5b506104bb610be0565b3480156105fb57600080fd5b506103d8600b5481565b34801561061157600080fd5b506104bb610c6e565b34801561062657600080fd5b5061062f610cfb565b60408051928352602083019190915201610335565b34801561065057600080fd5b506000546001600160a01b0316610321565b34801561066e57600080fd5b506103d8600c5481565b34801561068457600080fd5b5060408051808201909152600781527f244d4c6f74746f000000000000000000000000000000000000000000000000006020820152610380565b3480156106ca57600080fd5b50601354610321906001600160a01b031681565b3480156106ea57600080fd5b506103d8600d5481565b34801561070057600080fd5b506104bb61070f3660046120d1565b610d44565b34801561072057600080fd5b506104bb61072f36600461204a565b610d5f565b34801561074057600080fd5b506103ad61074f366004611fdd565b610da8565b34801561076057600080fd5b506104bb610db5565b6104bb610ece565b34801561077d57600080fd5b506103d860075481565b34801561079357600080fd5b506103ad6107a236600461204a565b60116020526000908152604090205460ff1681565b3480156107c357600080fd5b5060085461041b90610100900460ff1681565b3480156107e257600080fd5b506104bb611143565b3480156107f757600080fd5b506103d86108063660046120ae565b611243565b34801561081757600080fd5b506104bb61082636600461204a565b611311565b34801561083757600080fd5b50601254610321906001600160a01b031681565b34801561085757600080fd5b506103d86108663660046120ee565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561089d57600080fd5b506001546001600160a01b0316610321565b3480156108bb57600080fd5b506104bb61133b565b3480156108d057600080fd5b506104bb6108df36600461204a565b611384565b60006108f1338484611458565b5060015b92915050565b60006109096009600a612216565b61091690620186a0612225565b905090565b60006109288484846115b0565b61097a84336109758560405180606001604052806028815260200161244e602891396001600160a01b038a1660009081526005602090815260408083203384529091529020549190611bf0565b611458565b5060019392505050565b600a546040517f28fd31980000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015260009216906328fd319890602401602060405180830381865afa1580156109e8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f59190612244565b610a14611c1c565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b600854630100000090046001600160a01b03163314610acb5760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79207461782077616c6c65742063616e2072756e2073776170206d616e60448201527f75616c6c7900000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b306000908152600460205260409020548015610aea57610aea81611c76565b478015610afa57610afa81611e14565b5050565b6000806000601360009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a9190612280565b506dffffffffffffffffffffffffffff9182169350169050610ba18264e8d4a51000611f21565b9150610bb8610bb185600a612216565b8390611f21565b9150610bc482826113f5565b949350505050565b610bd4611c1c565b610bde6000611f2d565b565b60015433906001600160a01b03168114610c625760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e657200000000000000000000000000000000000000000000006064820152608401610ac2565b610c6b81611f2d565b50565b600854630100000090046001600160a01b03163314610ccf5760405162461bcd60e51b815260206004820152601f60248201527f4f6e6c79207461782077616c6c65742063616e20756e737475636b20657468006044820152606401610ac2565b60405133904780156108fc02916000818181858888f19350505050158015610c6b573d6000803e3d6000fd5b6016546001600160a01b03166000908152600460205260408120548190610d2d600d54826113f590919063ffffffff16565b600e54610d3b9083906113f5565b92509250509091565b610d4c611c1c565b600f805460ff1916911515919091179055565b610d67611c1c565b600880546001600160a01b039092166301000000027fffffffffffffffffff0000000000000000000000000000000000000000ffffff909216919091179055565b60006108f13384846115b0565b600854630100000090046001600160a01b03163314610e165760405162461bcd60e51b815260206004820152601e60248201527f4f6e6c79207461782077616c6c65742063616e207265647563652066656500006044820152606401610ac2565b60085460ff16610e685760405162461bcd60e51b815260206004820152601c60248201527f5465616d206665652077617320616c72656164792072656d6f766564000000006044820152606401610ac2565b6008805460ff16906000610e7b836122d0565b91906101000a81548160ff021916908360ff160217905550506008600281819054906101000a900460ff1680929190610eb3906122ed565b91906101000a81548160ff021916908360ff16021790555050565b610ed6611c1c565b60165474010000000000000000000000000000000000000000900460ff1615610f415760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610ac2565b6014546001600160a01b031663f305d7193430610f73816001600160a01b031660009081526004602052604090205490565b600080610f886000546001600160a01b031690565b60405160e088901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015611008573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061102d919061230d565b50506016546014546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af115801561109f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c3919061233b565b50601680547601000100000000000000000000000000000000000000007fffffffffffffffffff00ff00ffffffffffffffffffffffffffffffffffffffff82161782556001600160a01b039081166000908152601160205260409020805460ff191660011790559054601280546001600160a01b03191691909216179055565b600854630100000090046001600160a01b031633146111ca5760405162461bcd60e51b815260206004820152602360248201527f4f6e6c79207461782077616c6c65742063616e20756e737475636b207265776160448201527f72647300000000000000000000000000000000000000000000000000000000006064820152608401610ac2565b600a546040517fd15ab09c0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b039091169063d15ab09c906024015b600060405180830381600087803b15801561122957600080fd5b505af115801561123d573d6000803e3d6000fd5b50505050565b6000806000601260009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561129b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112bf9190612280565b506dffffffffffffffffffffffffffff91821693501690506112e582633b9aca006113f5565b915060006112fc6112f586610afe565b8490611f21565b905061130881836113f5565b95945050505050565b611319611c1c565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b600a546040517f15f7e05e0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b03909116906315f7e05e9060240161120f565b61138c611c1c565b600180546001600160a01b0383166001600160a01b031990911681179091556113bd6000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60006114018284612358565b9392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383166114d35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610ac2565b6001600160a01b03821661154f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610ac2565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661162c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610ac2565b6001600160a01b0382166116a85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610ac2565b6000811161171e5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610ac2565b6001600160a01b03821660009081526010602052604081205460ff1615801561176057506001600160a01b03841660009081526010602052604090205460ff16155b15611a0257600f5460ff1615611873576016546001600160a01b03848116911614611873576001600160a01b038316600090815260046020526040902054600c546117ab848361237a565b111561181f5760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401610ac2565b600b548311156118715760405162461bcd60e51b815260206004820152601160248201527f5458204c696d69742045786365656465640000000000000000000000000000006044820152606401610ac2565b505b6016546001600160a01b03858116911614156118ac576118a960646118a360065485611f2190919063ffffffff16565b906113f5565b90505b6016546001600160a01b03848116911614156118df576118dc60646118a360075485611f2190919063ffffffff16565b90505b6000806118ea610cfb565b3060009081526004602052604090205460165492945090925090600160a81b900460ff1615801561192857506016546001600160a01b038781169116145b80156119505750601654760100000000000000000000000000000000000000000000900460ff165b801561195b57508281115b156119845761197261196d8284611f46565b611c76565b4780156119825761198247611e14565b505b83156119fe57306000908152600460205260409020546119a49085611f5b565b30600081815260046020526040908190209290925590516001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119f59088815260200190565b60405180910390a35b5050505b6001600160a01b038416600090815260046020526040902054611a259083611f67565b6001600160a01b038516600090815260046020526040902055611a6a611a4b8383611f67565b6001600160a01b03851660009081526004602052604090205490611f5b565b6001600160a01b0380851660008181526004602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611ab48585611f67565b60405190815260200160405180910390a36001600160a01b03841660009081526011602052604090205460ff16611b5757600a546001600160a01b03858116600081815260046020819052604091829020549151630a5b654b60e11b81529081019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015611b4457600080fd5b505af1925050508015611b55575060015b505b6001600160a01b03831660009081526011602052604090205460ff1661123d57600a546001600160a01b03848116600081815260046020819052604091829020549151630a5b654b60e11b81529081019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015611bd657600080fd5b505af1925050508015611be7575060015b61123d5761123d565b60008184841115611c145760405162461bcd60e51b8152600401610ac29190611f73565b505050900390565b6000546001600160a01b03163314610bde5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ac2565b6016805460ff60a81b1916600160a81b17905580611c9357611e04565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611cc857611cc8612392565b6001600160a01b03928316602091820292909201810191909152601454604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015611d3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d5e91906123a8565b81600181518110611d7157611d71612392565b6001600160a01b0392831660209182029290920101526014546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac94790611dd09085906000908690309042906004016123c5565b600060405180830381600087803b158015611dea57600080fd5b505af1158015611dfe573d6000803e3d6000fd5b50505050505b506016805460ff60a81b19169055565b6008546006546000916001600160a01b036301000000820416916108fc91611e4591906118a390879060ff16611f21565b6040518115909202916000818181858888f16009546006546008549297506001600160a01b0390911695506108fc9450611e8f935091506118a3908790610100900460ff16611f21565b6040518115909202916000818181858888f1600a546006546008549297506001600160a01b03909116955063d0e30db09450611edc935091506118a390879062010000900460ff16611f21565b6040518263ffffffff1660e01b81526004016000604051808303818588803b158015611f0757600080fd5b505af193505050508015611f19575060015b610afa575050565b60006114018284612225565b600180546001600160a01b0319169055610c6b81611408565b6000818311611f555782611401565b50919050565b6000611401828461237a565b60006114018284612436565b600060208083528351808285015260005b81811015611fa057858101830151858201604001528201611f84565b81811115611fb2576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610c6b57600080fd5b60008060408385031215611ff057600080fd5b8235611ffb81611fc8565b946020939093013593505050565b60008060006060848603121561201e57600080fd5b833561202981611fc8565b9250602084013561203981611fc8565b929592945050506040919091013590565b60006020828403121561205c57600080fd5b813561140181611fc8565b8015158114610c6b57600080fd5b6000806040838503121561208857600080fd5b823561209381611fc8565b915060208301356120a381612067565b809150509250929050565b6000602082840312156120c057600080fd5b813560ff8116811461140157600080fd5b6000602082840312156120e357600080fd5b813561140181612067565b6000806040838503121561210157600080fd5b823561210c81611fc8565b915060208301356120a381611fc8565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561216d5781600019048211156121535761215361211c565b8085161561216057918102915b93841c9390800290612137565b509250929050565b600082612184575060016108f5565b81612191575060006108f5565b81600181146121a757600281146121b1576121cd565b60019150506108f5565b60ff8411156121c2576121c261211c565b50506001821b6108f5565b5060208310610133831016604e8410600b84101617156121f0575081810a6108f5565b6121fa8383612132565b806000190482111561220e5761220e61211c565b029392505050565b600061140160ff841683612175565b600081600019048311821515161561223f5761223f61211c565b500290565b60006020828403121561225657600080fd5b5051919050565b80516dffffffffffffffffffffffffffff8116811461227b57600080fd5b919050565b60008060006060848603121561229557600080fd5b61229e8461225d565b92506122ac6020850161225d565b9150604084015163ffffffff811681146122c557600080fd5b809150509250925092565b600060ff8216806122e3576122e361211c565b6000190192915050565b600060ff821660ff8114156123045761230461211c565b60010192915050565b60008060006060848603121561232257600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121561234d57600080fd5b815161140181612067565b60008261237557634e487b7160e01b600052601260045260246000fd5b500490565b6000821982111561238d5761238d61211c565b500190565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156123ba57600080fd5b815161140181611fc8565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124155784516001600160a01b0316835293830193918301916001016123f0565b50506001600160a01b03969096166060850152505050608001529392505050565b6000828210156124485761244861211c565b50039056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212205d834f27fe394a89bb2f4ebb9f62e7c555513bcf07bab10158ea3635d238010264736f6c634300080c0033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $3,809.12 | 0.00190059 | $7.24 |
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.