More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 10 from a total of 10 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set Max Tx Amoun... | 15492390 | 787 days ago | IN | 0 ETH | 0.00121707 | ||||
Approve | 15492383 | 787 days ago | IN | 0 ETH | 0.00217436 | ||||
Approve | 15492370 | 787 days ago | IN | 0 ETH | 0.00243072 | ||||
Approve | 15492362 | 787 days ago | IN | 0 ETH | 0.00145411 | ||||
Approve | 15492340 | 787 days ago | IN | 0 ETH | 0.00105561 | ||||
Approve | 15492340 | 787 days ago | IN | 0 ETH | 0.00105561 | ||||
Approve | 15492340 | 787 days ago | IN | 0 ETH | 0.00114881 | ||||
Open Trade | 15492338 | 787 days ago | IN | 0 ETH | 0.0005974 | ||||
Approve | 15492319 | 787 days ago | IN | 0 ETH | 0.00101133 | ||||
0x60a06040 | 15492313 | 787 days ago | IN | 0 ETH | 0.10515082 |
Loading...
Loading
Contract Name:
HexDogelon
Compiler Version
v0.8.15+commit.e14f2714
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-09-07 */ // SPDX-License-Identifier: Unlicensed pragma solidity 0.8.15; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. * * 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; } } /** * @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. */ contract Ownable is Context { address private _owner; address private _previousOwner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } } /** * @dev Implementation of the {IERC20} interface. */ contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } /** * @dev Moves `amount` of tokens from `sender` to `recipient`. */ function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. */ function _createInitialTotalSupply(address account, uint256 amount) internal virtual { require(account != address(0)); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { 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); } /** * @dev Hook that is called before any transfer of tokens */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. */ function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SignedSafeMath` is no longer needed starting with Solidity 0.8. The compiler * now has built in overflow checking. */ library SignedSafeMath { /** * @dev Returns the multiplication of two signed integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(int256 a, int256 b) internal pure returns (int256) { return a * b; } /** * @dev Returns the integer division of two signed integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(int256 a, int256 b) internal pure returns (int256) { return a / b; } /** * @dev Returns the subtraction of two signed integers, reverting on * overflow. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(int256 a, int256 b) internal pure returns (int256) { return a - b; } /** * @dev Returns the addition of two signed integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(int256 a, int256 b) internal pure returns (int256) { return a + b; } } // 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 no longer needed starting with Solidity 0.8. 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 substraction 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; } } } /** * @dev Wrappers over Solidity's uintXX/intXX casting operators with added overflow * checks. */ library SafeCast { /** * @dev Returns the downcasted uint224 from uint256, reverting on * overflow (when the input is greater than largest uint224). * * Counterpart to Solidity's `uint224` operator. * * Requirements: * * - input must fit into 224 bits */ function toUint224(uint256 value) internal pure returns (uint224) { require(value <= type(uint224).max, "SafeCast: value doesn't fit in 224 bits"); return uint224(value); } /** * @dev Returns the downcasted uint128 from uint256, reverting on * overflow (when the input is greater than largest uint128). * * Counterpart to Solidity's `uint128` operator. * * Requirements: * * - input must fit into 128 bits */ function toUint128(uint256 value) internal pure returns (uint128) { require(value <= type(uint128).max, "SafeCast: value doesn't fit in 128 bits"); return uint128(value); } /** * @dev Returns the downcasted uint96 from uint256, reverting on * overflow (when the input is greater than largest uint96). * * Counterpart to Solidity's `uint96` operator. * * Requirements: * * - input must fit into 96 bits */ function toUint96(uint256 value) internal pure returns (uint96) { require(value <= type(uint96).max, "SafeCast: value doesn't fit in 96 bits"); return uint96(value); } /** * @dev Returns the downcasted uint64 from uint256, reverting on * overflow (when the input is greater than largest uint64). * * Counterpart to Solidity's `uint64` operator. * * Requirements: * * - input must fit into 64 bits */ function toUint64(uint256 value) internal pure returns (uint64) { require(value <= type(uint64).max, "SafeCast: value doesn't fit in 64 bits"); return uint64(value); } /** * @dev Returns the downcasted uint32 from uint256, reverting on * overflow (when the input is greater than largest uint32). * * Counterpart to Solidity's `uint32` operator. * * Requirements: * * - input must fit into 32 bits */ function toUint32(uint256 value) internal pure returns (uint32) { require(value <= type(uint32).max, "SafeCast: value doesn't fit in 32 bits"); return uint32(value); } /** * @dev Returns the downcasted uint16 from uint256, reverting on * overflow (when the input is greater than largest uint16). * * Counterpart to Solidity's `uint16` operator. * * Requirements: * * - input must fit into 16 bits */ function toUint16(uint256 value) internal pure returns (uint16) { require(value <= type(uint16).max, "SafeCast: value doesn't fit in 16 bits"); return uint16(value); } /** * @dev Returns the downcasted uint8 from uint256, reverting on * overflow (when the input is greater than largest uint8). * * Counterpart to Solidity's `uint8` operator. * * Requirements: * * - input must fit into 8 bits. */ function toUint8(uint256 value) internal pure returns (uint8) { require(value <= type(uint8).max, "SafeCast: value doesn't fit in 8 bits"); return uint8(value); } /** * @dev Converts a signed int256 into an unsigned uint256. * * Requirements: * * - input must be greater than or equal to 0. */ function toUint256(int256 value) internal pure returns (uint256) { require(value >= 0, "SafeCast: value must be positive"); return uint256(value); } /** * @dev Returns the downcasted int128 from int256, reverting on * overflow (when the input is less than smallest int128 or * greater than largest int128). * * Counterpart to Solidity's `int128` operator. * * Requirements: * * - input must fit into 128 bits * * _Available since v3.1._ */ function toInt128(int256 value) internal pure returns (int128) { require(value >= type(int128).min && value <= type(int128).max, "SafeCast: value doesn't fit in 128 bits"); return int128(value); } /** * @dev Returns the downcasted int64 from int256, reverting on * overflow (when the input is less than smallest int64 or * greater than largest int64). * * Counterpart to Solidity's `int64` operator. * * Requirements: * * - input must fit into 64 bits * * _Available since v3.1._ */ function toInt64(int256 value) internal pure returns (int64) { require(value >= type(int64).min && value <= type(int64).max, "SafeCast: value doesn't fit in 64 bits"); return int64(value); } /** * @dev Returns the downcasted int32 from int256, reverting on * overflow (when the input is less than smallest int32 or * greater than largest int32). * * Counterpart to Solidity's `int32` operator. * * Requirements: * * - input must fit into 32 bits * * _Available since v3.1._ */ function toInt32(int256 value) internal pure returns (int32) { require(value >= type(int32).min && value <= type(int32).max, "SafeCast: value doesn't fit in 32 bits"); return int32(value); } /** * @dev Returns the downcasted int16 from int256, reverting on * overflow (when the input is less than smallest int16 or * greater than largest int16). * * Counterpart to Solidity's `int16` operator. * * Requirements: * * - input must fit into 16 bits * * _Available since v3.1._ */ function toInt16(int256 value) internal pure returns (int16) { require(value >= type(int16).min && value <= type(int16).max, "SafeCast: value doesn't fit in 16 bits"); return int16(value); } /** * @dev Returns the downcasted int8 from int256, reverting on * overflow (when the input is less than smallest int8 or * greater than largest int8). * * Counterpart to Solidity's `int8` operator. * * Requirements: * * - input must fit into 8 bits. * * _Available since v3.1._ */ function toInt8(int256 value) internal pure returns (int8) { require(value >= type(int8).min && value <= type(int8).max, "SafeCast: value doesn't fit in 8 bits"); return int8(value); } /** * @dev Converts an unsigned uint256 into a signed int256. * * Requirements: * * - input must be less than or equal to maxInt256. */ function toInt256(uint256 value) internal pure returns (int256) { // Note: Unsafe cast below is okay because `type(int256).max` is guaranteed to be positive require(value <= uint256(type(int256).max), "SafeCast: value doesn't fit in an int256"); return int256(value); } } contract HexDogelon is ERC20, Ownable { using SafeMath for uint256; bool private inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; bool private isOpen = false; uint256 public liquidityFee = 1; uint256 public marketingFee = 1; uint256 public devFee = 1; uint256 public sellLiquidityFee = 1; uint256 public sellMarketingFee = 1; uint256 public sellDevFee = 1; uint256 public maxTransactionAmount = 1000000000 * (10**18); uint256 public maxWalletToken = 2000000000 * (10**18); uint256 public swapTokensAtAmount = 500000 * (10**18); IUniswapV2Router02 public uniswapV2Router; address public immutable uniswapV2Pair; mapping(address => bool) public _isBlacklisted; address payable public marketingWallet = payable(0x3943f8F65182e24164a6Bf5620165AEbEE7502AD); address payable public devWallet = payable(0xD42380Ae66CeAadd27627055f510c2Bdac36a1e7); // exlcude from fees and max transaction amount mapping (address => bool) private _isExcludedFromFees; modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } event SwapAndLiquify(uint256 tokensIntoLiqudity, uint256 ethReceived); event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapETHForTokens(uint256 amountIn, address[] path); event ExcludeFromFees(address indexed account, bool isExcluded); constructor() ERC20("Hex Dogelon", "HEXDOGELON") { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // Create a uniswap pair for this new token address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = _uniswapV2Pair; // exclude from paying fees and max transaction amount excludeFromFees(owner(), true); excludeFromFees(marketingWallet, true); excludeFromFees(devWallet, true); excludeFromFees(address(this), true); /* an internal function that is only called here, and CANNOT be called ever again */ _createInitialTotalSupply(owner(), 1000000000 * (10**18)); } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); bool excludedAccount = _isExcludedFromFees[from] || _isExcludedFromFees[to]; require(isOpen || excludedAccount, "trading is not yet Open"); require(!_isBlacklisted[from] && !_isBlacklisted[to], 'Blacklisted address'); if(amount == 0) { super._transfer(from, to, 0); return; } if(from==uniswapV2Pair && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]){ uint256 contractBalanceRecepient = balanceOf(to); require(contractBalanceRecepient + amount <= maxWalletToken, "Exceeds maximum wallet token amount."); } if(to==uniswapV2Pair && !excludedAccount) { require(amount <= maxTransactionAmount, "amount exceeds the maxTransactionAmount."); } uint256 contractTokenBalance = balanceOf(address(this)); bool overMinTokenBalance = contractTokenBalance >= swapTokensAtAmount; if(overMinTokenBalance && !inSwapAndLiquify && to==uniswapV2Pair && swapAndLiquifyEnabled) { contractTokenBalance = swapTokensAtAmount; swapAndLiquify(contractTokenBalance); } // if any account belongs to _isExcludedFromFee account then remove the fee if(!excludedAccount) { uint256 fees; if(from==uniswapV2Pair) { fees = amount.mul(liquidityFee.add(marketingFee).add(devFee)).div(100); } if(to==uniswapV2Pair) { fees = amount.mul(sellLiquidityFee.add(sellMarketingFee).add(sellDevFee)).div(100); } amount = amount.sub(fees); if(fees > 0) { super._transfer(from, address(this), fees); } } super._transfer(from, to, amount); } function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap { uint256 tokensForLiquidity = contractTokenBalance.mul(sellLiquidityFee).div(sellMarketingFee.add(sellLiquidityFee).add(sellDevFee)); // split the Liquidity token balance into halves uint256 half = tokensForLiquidity.div(2); uint256 otherHalf = tokensForLiquidity.sub(half); // capture the contract's current ETH balance. // this is so that we can capture exactly the amount of ETH that the // swap creates, and not make the liquidity event include any ETH that // has been manually sent to the contract uint256 initialBalance = address(this).balance; // swap tokens for ETH swapTokensForEth(half); // how much ETH did we just swap into? uint256 newBalance = address(this).balance.sub(initialBalance); // add liquidity to uniswap addLiquidity(otherHalf, newBalance); // swap and Send eth to wallets swapTokensForEth(contractTokenBalance.sub(tokensForLiquidity)); devWallet.transfer(address(this).balance.mul(sellDevFee).div(sellMarketingFee.add(sellDevFee))); marketingWallet.transfer(address(this).balance); emit SwapAndLiquify(half, newBalance); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); if(allowance(address(this), address(uniswapV2Router)) < tokenAmount) { _approve(address(this), address(uniswapV2Router), ~uint256(0)); } // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } function excludeFromFees(address account, bool excluded) public onlyOwner { require(_isExcludedFromFees[account] != excluded, "Account is already the value of 'excluded'"); _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } function openTrade() external onlyOwner { isOpen = true; } function setMaxWalletLimit(uint256 _newLimit) public onlyOwner { maxWalletToken = _newLimit; require(maxWalletToken >= totalSupply().div(200), "value too low"); } function setMaxTxAmount(uint256 _maxTx) public onlyOwner { maxTransactionAmount = _maxTx; require(maxTransactionAmount >= totalSupply().div(1000000000), "value too low"); } function updateBuyFees(uint256 _liquidityFee, uint256 _marketingFee, uint256 _devFee) public onlyOwner { require(_liquidityFee.add(_marketingFee).add(_devFee) <= 15, "tax too high"); liquidityFee = _liquidityFee; marketingFee = _marketingFee; devFee = _devFee; } function updateSellFees(uint256 _liquidityFee, uint256 _marketingFee, uint256 _devFee) public onlyOwner { require(_liquidityFee.add(_marketingFee).add(_devFee) <= 15, "tax too high"); sellLiquidityFee = _liquidityFee; sellMarketingFee = _marketingFee; sellDevFee = _devFee; } function updateWallets(address payable _marketingWallet, address payable _devWallet) public onlyOwner { marketingWallet = _marketingWallet; devWallet = _devWallet; } function setSwapTokensAtAmouunt(uint256 _newAmount) public onlyOwner { swapTokensAtAmount = _newAmount; } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } function blacklistAddress(address account, bool value) external onlyOwner{ _isBlacklisted[account] = value; } receive() external payable { } }
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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","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":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","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":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"blacklistAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTx","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newLimit","type":"uint256"}],"name":"setMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newAmount","type":"uint256"}],"name":"setSwapTokensAtAmouunt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_marketingWallet","type":"address"},{"internalType":"address payable","name":"_devWallet","type":"address"}],"name":"updateWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a06040526006805461ffff60a81b1916600160a81b1790556001600781905560088190556009819055600a819055600b819055600c556b033b2e3c9fd0803ce8000000600d556b06765c793fa10079d0000000600e556969e10de76676d0800000600f55601280546001600160a01b0319908116733943f8f65182e24164a6bf5620165aebee7502ad179091556013805490911673d42380ae66ceaadd27627055f510c2bdac36a1e7179055348015620000b957600080fd5b506040518060400160405280600b81526020016a2432bc102237b3b2b637b760a91b8152506040518060400160405280600a8152602001692422ac2227a3a2a627a760b11b815250816003908162000112919062000635565b50600462000121828262000635565b505050600062000136620003a360201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000204919062000701565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000252573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000278919062000701565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002c6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ec919062000701565b601080546001600160a01b0319166001600160a01b038581169190911790915581166080529050620003326200032a6005546001600160a01b031690565b6001620003a7565b6012546200034b906001600160a01b03166001620003a7565b60135462000364906001600160a01b03166001620003a7565b62000371306001620003a7565b6200039b620003886005546001600160a01b031690565b6b033b2e3c9fd0803ce8000000620004eb565b50506200075a565b3390565b6005546001600160a01b03163314620004075760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b03821660009081526014602052604090205481151560ff9091161515036200048c5760405162461bcd60e51b815260206004820152602a60248201527f4163636f756e7420697320616c7265616479207468652076616c7565206f6620604482015269276578636c756465642760b01b6064820152608401620003fe565b6001600160a01b038216600081815260146020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620004ff57600080fd5b806002600082825462000513919062000733565b90915550506001600160a01b038216600090815260208190526040812080548392906200054290849062000733565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620005bc57607f821691505b602082108103620005dd57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200058c57600081815260208120601f850160051c810160208610156200060c5750805b601f850160051c820191505b818110156200062d5782815560010162000618565b505050505050565b81516001600160401b0381111562000651576200065162000591565b6200066981620006628454620005a7565b84620005e3565b602080601f831160018114620006a15760008415620006885750858301515b600019600386901b1c1916600185901b1785556200062d565b600085815260208120601f198616915b82811015620006d257888601518255948401946001909101908401620006b1565b5085821015620006f15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200071457600080fd5b81516001600160a01b03811681146200072c57600080fd5b9392505050565b600082198211156200075557634e487b7160e01b600052601160045260246000fd5b500190565b608051611c9b620007996000396000818161037101528181610fbe015281816110c4015281816111a001528181611205015261126d0152611c9b6000f3fe6080604052600436106102135760003560e01c80638da5cb5b11610118578063c49b9a80116100a0578063e6c75f711161006f578063e6c75f7114610656578063e8ba854f1461066c578063ec28438a1461068c578063f6374342146106ac578063fb201b1d146106c257600080fd5b8063c49b9a80146105c4578063c8c8ebe4146105e4578063dd62ed3e146105fa578063e2f456051461064057600080fd5b806398118cb4116100e757806398118cb414610538578063a0d82dc51461054e578063a9059cbb14610564578063c024666814610584578063c17b5b8c146105a457600080fd5b80638da5cb5b146104cf5780638ea5220f146104ed578063921369131461050d57806395d89b411461052357600080fd5b80634a74bb021161019b57806370a082311161016a57806370a0823114610419578063728d41c91461044f578063750c11b61461046f57806375f0a8741461048f5780638095d564146104af57600080fd5b80634a74bb02146103935780634fbee193146103b45780636827e764146103ed5780636b67c4df1461040357600080fd5b80631cdd3be3116101e25780631cdd3be3146102d157806323b872dd14610301578063313ce56714610321578063455a43961461033d57806349bd5a5e1461035f57600080fd5b806306fdde031461021f578063095ea7b31461024a5780631694505e1461027a57806318160ddd146102b257600080fd5b3661021a57005b600080fd5b34801561022b57600080fd5b506102346106d7565b604051610241919061183f565b60405180910390f35b34801561025657600080fd5b5061026a6102653660046118a9565b610769565b6040519015158152602001610241565b34801561028657600080fd5b5060105461029a906001600160a01b031681565b6040516001600160a01b039091168152602001610241565b3480156102be57600080fd5b506002545b604051908152602001610241565b3480156102dd57600080fd5b5061026a6102ec3660046118d5565b60116020526000908152604090205460ff1681565b34801561030d57600080fd5b5061026a61031c3660046118f2565b61077f565b34801561032d57600080fd5b5060405160128152602001610241565b34801561034957600080fd5b5061035d610358366004611948565b61082e565b005b34801561036b57600080fd5b5061029a7f000000000000000000000000000000000000000000000000000000000000000081565b34801561039f57600080fd5b5060065461026a90600160a81b900460ff1681565b3480156103c057600080fd5b5061026a6103cf3660046118d5565b6001600160a01b031660009081526014602052604090205460ff1690565b3480156103f957600080fd5b506102c360095481565b34801561040f57600080fd5b506102c360085481565b34801561042557600080fd5b506102c36104343660046118d5565b6001600160a01b031660009081526020819052604090205490565b34801561045b57600080fd5b5061035d61046a36600461197d565b610883565b34801561047b57600080fd5b5061035d61048a36600461197d565b61090a565b34801561049b57600080fd5b5060125461029a906001600160a01b031681565b3480156104bb57600080fd5b5061035d6104ca366004611996565b610939565b3480156104db57600080fd5b506005546001600160a01b031661029a565b3480156104f957600080fd5b5060135461029a906001600160a01b031681565b34801561051957600080fd5b506102c3600b5481565b34801561052f57600080fd5b506102346109c4565b34801561054457600080fd5b506102c360075481565b34801561055a57600080fd5b506102c3600c5481565b34801561057057600080fd5b5061026a61057f3660046118a9565b6109d3565b34801561059057600080fd5b5061035d61059f366004611948565b6109e0565b3480156105b057600080fd5b5061035d6105bf366004611996565b610aec565b3480156105d057600080fd5b5061035d6105df3660046119c2565b610b71565b3480156105f057600080fd5b506102c3600d5481565b34801561060657600080fd5b506102c36106153660046119dd565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561064c57600080fd5b506102c3600f5481565b34801561066257600080fd5b506102c3600e5481565b34801561067857600080fd5b5061035d6106873660046119dd565b610bf3565b34801561069857600080fd5b5061035d6106a736600461197d565b610c4b565b3480156106b857600080fd5b506102c3600a5481565b3480156106ce57600080fd5b5061035d610ccc565b6060600380546106e690611a16565b80601f016020809104026020016040519081016040528092919081815260200182805461071290611a16565b801561075f5780601f106107345761010080835404028352916020019161075f565b820191906000526020600020905b81548152906001019060200180831161074257829003601f168201915b5050505050905090565b6000610776338484610d0b565b50600192915050565b600061078c848484610e2f565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156108165760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6108238533858403610d0b565b506001949350505050565b6005546001600160a01b031633146108585760405162461bcd60e51b815260040161080d90611a50565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146108ad5760405162461bcd60e51b815260040161080d90611a50565b600e8190556108c660c86108c060025490565b906112fe565b600e5410156109075760405162461bcd60e51b815260206004820152600d60248201526c76616c756520746f6f206c6f7760981b604482015260640161080d565b50565b6005546001600160a01b031633146109345760405162461bcd60e51b815260040161080d90611a50565b600f55565b6005546001600160a01b031633146109635760405162461bcd60e51b815260040161080d90611a50565b600f610979826109738686611311565b90611311565b11156109b65760405162461bcd60e51b815260206004820152600c60248201526b0e8c2f040e8dede40d0d2ced60a31b604482015260640161080d565b600792909255600855600955565b6060600480546106e690611a16565b6000610776338484610e2f565b6005546001600160a01b03163314610a0a5760405162461bcd60e51b815260040161080d90611a50565b6001600160a01b03821660009081526014602052604090205481151560ff909116151503610a8d5760405162461bcd60e51b815260206004820152602a60248201527f4163636f756e7420697320616c7265616479207468652076616c7565206f6620604482015269276578636c756465642760b01b606482015260840161080d565b6001600160a01b038216600081815260146020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610b165760405162461bcd60e51b815260040161080d90611a50565b600f610b26826109738686611311565b1115610b635760405162461bcd60e51b815260206004820152600c60248201526b0e8c2f040e8dede40d0d2ced60a31b604482015260640161080d565b600a92909255600b55600c55565b6005546001600160a01b03163314610b9b5760405162461bcd60e51b815260040161080d90611a50565b60068054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990610be890831515815260200190565b60405180910390a150565b6005546001600160a01b03163314610c1d5760405162461bcd60e51b815260040161080d90611a50565b601280546001600160a01b039384166001600160a01b03199182161790915560138054929093169116179055565b6005546001600160a01b03163314610c755760405162461bcd60e51b815260040161080d90611a50565b600d819055610c8b633b9aca006108c060025490565b600d5410156109075760405162461bcd60e51b815260206004820152600d60248201526c76616c756520746f6f206c6f7760981b604482015260640161080d565b6005546001600160a01b03163314610cf65760405162461bcd60e51b815260040161080d90611a50565b6006805460ff60b01b1916600160b01b179055565b6001600160a01b038316610d6d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161080d565b6001600160a01b038216610dce5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161080d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610e555760405162461bcd60e51b815260040161080d90611a85565b6001600160a01b038216610e7b5760405162461bcd60e51b815260040161080d90611aca565b6001600160a01b03831660009081526014602052604081205460ff1680610eba57506001600160a01b03831660009081526014602052604090205460ff165b600654909150600160b01b900460ff1680610ed25750805b610f1e5760405162461bcd60e51b815260206004820152601760248201527f74726164696e67206973206e6f7420796574204f70656e000000000000000000604482015260640161080d565b6001600160a01b03841660009081526011602052604090205460ff16158015610f6057506001600160a01b03831660009081526011602052604090205460ff16155b610fa25760405162461bcd60e51b8152602060048201526013602482015272426c61636b6c6973746564206164647265737360681b604482015260640161080d565b81600003610fbc57610fb68484600061131d565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031614801561101657506001600160a01b03841660009081526014602052604090205460ff16155b801561103b57506001600160a01b03831660009081526014602052604090205460ff16155b156110c2576001600160a01b038316600090815260208190526040902054600e546110668483611b23565b11156110c05760405162461bcd60e51b8152602060048201526024808201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152633ab73a1760e11b606482015260840161080d565b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316148015611101575080155b1561116957600d548211156111695760405162461bcd60e51b815260206004820152602860248201527f616d6f756e74206578636565647320746865206d61785472616e73616374696f6044820152673720b6b7bab73a1760c11b606482015260840161080d565b30600090815260208190526040902054600f54811080159081906111975750600654600160a01b900460ff16155b80156111d457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316145b80156111e95750600654600160a81b900460ff165b156111fc57600f5491506111fc82611471565b826112eb5760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316876001600160a01b03160361126b5761126860646108c061126160095461097360085460075461131190919063ffffffff16565b88906115e7565b90505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b0316036112cc576112c960646108c0611261600c54610973600b54600a5461131190919063ffffffff16565b90505b6112d685826115f3565b945080156112e9576112e987308361131d565b505b6112f686868661131d565b505050505050565b600061130a8284611b3b565b9392505050565b600061130a8284611b23565b6001600160a01b0383166113435760405162461bcd60e51b815260040161080d90611a85565b6001600160a01b0382166113695760405162461bcd60e51b815260040161080d90611aca565b6001600160a01b038316600090815260208190526040902054818110156113e15760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161080d565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611418908490611b23565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161146491815260200190565b60405180910390a3610fb6565b6006805460ff60a01b1916600160a01b179055600c54600a54600b546000926114af926114a19261097391611311565b600a546108c09085906115e7565b905060006114be8260026112fe565b905060006114cc83836115f3565b9050476114d8836115ff565b60006114e447836115f3565b90506114f08382611782565b6115026114fd87876115f3565b6115ff565b601354600c54600b546001600160a01b03909216916108fc916115369161152891611311565b600c546108c09047906115e7565b6040518115909202916000818181858888f1935050505015801561155e573d6000803e3d6000fd5b506012546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611598573d6000803e3d6000fd5b5060408051858152602081018390527f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f8381486910160405180910390a150506006805460ff60a01b1916905550505050565b600061130a8284611b5d565b600061130a8284611b7c565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061163457611634611b93565b6001600160a01b03928316602091820292909201810191909152601054604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561168d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b19190611ba9565b816001815181106116c4576116c4611b93565b6001600160a01b039283166020918202929092018101919091526010543060009081526001835260408082209290941681529152205482111561171b5760105461171b9030906001600160a01b0316600019610d0b565b60105460405163791ac94760e01b81526001600160a01b039091169063791ac94790611754908590600090869030904290600401611bc6565b600060405180830381600087803b15801561176e57600080fd5b505af11580156112f6573d6000803e3d6000fd5b6010546001600160a01b031663f305d7198230856000806117ab6005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015611813573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906118389190611c37565b5050505050565b600060208083528351808285015260005b8181101561186c57858101830151858201604001528201611850565b8181111561187e576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461090757600080fd5b600080604083850312156118bc57600080fd5b82356118c781611894565b946020939093013593505050565b6000602082840312156118e757600080fd5b813561130a81611894565b60008060006060848603121561190757600080fd5b833561191281611894565b9250602084013561192281611894565b929592945050506040919091013590565b8035801515811461194357600080fd5b919050565b6000806040838503121561195b57600080fd5b823561196681611894565b915061197460208401611933565b90509250929050565b60006020828403121561198f57600080fd5b5035919050565b6000806000606084860312156119ab57600080fd5b505081359360208301359350604090920135919050565b6000602082840312156119d457600080fd5b61130a82611933565b600080604083850312156119f057600080fd5b82356119fb81611894565b91506020830135611a0b81611894565b809150509250929050565b600181811c90821680611a2a57607f821691505b602082108103611a4a57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008219821115611b3657611b36611b0d565b500190565b600082611b5857634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611b7757611b77611b0d565b500290565b600082821015611b8e57611b8e611b0d565b500390565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611bbb57600080fd5b815161130a81611894565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611c165784516001600160a01b031683529383019391830191600101611bf1565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611c4c57600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122054c0e3052d66913df46006ccdb3b021b463dfc1342f244328e646d14c6c1ef9c64736f6c634300080f0033
Deployed Bytecode
0x6080604052600436106102135760003560e01c80638da5cb5b11610118578063c49b9a80116100a0578063e6c75f711161006f578063e6c75f7114610656578063e8ba854f1461066c578063ec28438a1461068c578063f6374342146106ac578063fb201b1d146106c257600080fd5b8063c49b9a80146105c4578063c8c8ebe4146105e4578063dd62ed3e146105fa578063e2f456051461064057600080fd5b806398118cb4116100e757806398118cb414610538578063a0d82dc51461054e578063a9059cbb14610564578063c024666814610584578063c17b5b8c146105a457600080fd5b80638da5cb5b146104cf5780638ea5220f146104ed578063921369131461050d57806395d89b411461052357600080fd5b80634a74bb021161019b57806370a082311161016a57806370a0823114610419578063728d41c91461044f578063750c11b61461046f57806375f0a8741461048f5780638095d564146104af57600080fd5b80634a74bb02146103935780634fbee193146103b45780636827e764146103ed5780636b67c4df1461040357600080fd5b80631cdd3be3116101e25780631cdd3be3146102d157806323b872dd14610301578063313ce56714610321578063455a43961461033d57806349bd5a5e1461035f57600080fd5b806306fdde031461021f578063095ea7b31461024a5780631694505e1461027a57806318160ddd146102b257600080fd5b3661021a57005b600080fd5b34801561022b57600080fd5b506102346106d7565b604051610241919061183f565b60405180910390f35b34801561025657600080fd5b5061026a6102653660046118a9565b610769565b6040519015158152602001610241565b34801561028657600080fd5b5060105461029a906001600160a01b031681565b6040516001600160a01b039091168152602001610241565b3480156102be57600080fd5b506002545b604051908152602001610241565b3480156102dd57600080fd5b5061026a6102ec3660046118d5565b60116020526000908152604090205460ff1681565b34801561030d57600080fd5b5061026a61031c3660046118f2565b61077f565b34801561032d57600080fd5b5060405160128152602001610241565b34801561034957600080fd5b5061035d610358366004611948565b61082e565b005b34801561036b57600080fd5b5061029a7f000000000000000000000000c36bc5cecf7581ef7a7ec3e709536f5e28503ad281565b34801561039f57600080fd5b5060065461026a90600160a81b900460ff1681565b3480156103c057600080fd5b5061026a6103cf3660046118d5565b6001600160a01b031660009081526014602052604090205460ff1690565b3480156103f957600080fd5b506102c360095481565b34801561040f57600080fd5b506102c360085481565b34801561042557600080fd5b506102c36104343660046118d5565b6001600160a01b031660009081526020819052604090205490565b34801561045b57600080fd5b5061035d61046a36600461197d565b610883565b34801561047b57600080fd5b5061035d61048a36600461197d565b61090a565b34801561049b57600080fd5b5060125461029a906001600160a01b031681565b3480156104bb57600080fd5b5061035d6104ca366004611996565b610939565b3480156104db57600080fd5b506005546001600160a01b031661029a565b3480156104f957600080fd5b5060135461029a906001600160a01b031681565b34801561051957600080fd5b506102c3600b5481565b34801561052f57600080fd5b506102346109c4565b34801561054457600080fd5b506102c360075481565b34801561055a57600080fd5b506102c3600c5481565b34801561057057600080fd5b5061026a61057f3660046118a9565b6109d3565b34801561059057600080fd5b5061035d61059f366004611948565b6109e0565b3480156105b057600080fd5b5061035d6105bf366004611996565b610aec565b3480156105d057600080fd5b5061035d6105df3660046119c2565b610b71565b3480156105f057600080fd5b506102c3600d5481565b34801561060657600080fd5b506102c36106153660046119dd565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561064c57600080fd5b506102c3600f5481565b34801561066257600080fd5b506102c3600e5481565b34801561067857600080fd5b5061035d6106873660046119dd565b610bf3565b34801561069857600080fd5b5061035d6106a736600461197d565b610c4b565b3480156106b857600080fd5b506102c3600a5481565b3480156106ce57600080fd5b5061035d610ccc565b6060600380546106e690611a16565b80601f016020809104026020016040519081016040528092919081815260200182805461071290611a16565b801561075f5780601f106107345761010080835404028352916020019161075f565b820191906000526020600020905b81548152906001019060200180831161074257829003601f168201915b5050505050905090565b6000610776338484610d0b565b50600192915050565b600061078c848484610e2f565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156108165760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6108238533858403610d0b565b506001949350505050565b6005546001600160a01b031633146108585760405162461bcd60e51b815260040161080d90611a50565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146108ad5760405162461bcd60e51b815260040161080d90611a50565b600e8190556108c660c86108c060025490565b906112fe565b600e5410156109075760405162461bcd60e51b815260206004820152600d60248201526c76616c756520746f6f206c6f7760981b604482015260640161080d565b50565b6005546001600160a01b031633146109345760405162461bcd60e51b815260040161080d90611a50565b600f55565b6005546001600160a01b031633146109635760405162461bcd60e51b815260040161080d90611a50565b600f610979826109738686611311565b90611311565b11156109b65760405162461bcd60e51b815260206004820152600c60248201526b0e8c2f040e8dede40d0d2ced60a31b604482015260640161080d565b600792909255600855600955565b6060600480546106e690611a16565b6000610776338484610e2f565b6005546001600160a01b03163314610a0a5760405162461bcd60e51b815260040161080d90611a50565b6001600160a01b03821660009081526014602052604090205481151560ff909116151503610a8d5760405162461bcd60e51b815260206004820152602a60248201527f4163636f756e7420697320616c7265616479207468652076616c7565206f6620604482015269276578636c756465642760b01b606482015260840161080d565b6001600160a01b038216600081815260146020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610b165760405162461bcd60e51b815260040161080d90611a50565b600f610b26826109738686611311565b1115610b635760405162461bcd60e51b815260206004820152600c60248201526b0e8c2f040e8dede40d0d2ced60a31b604482015260640161080d565b600a92909255600b55600c55565b6005546001600160a01b03163314610b9b5760405162461bcd60e51b815260040161080d90611a50565b60068054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990610be890831515815260200190565b60405180910390a150565b6005546001600160a01b03163314610c1d5760405162461bcd60e51b815260040161080d90611a50565b601280546001600160a01b039384166001600160a01b03199182161790915560138054929093169116179055565b6005546001600160a01b03163314610c755760405162461bcd60e51b815260040161080d90611a50565b600d819055610c8b633b9aca006108c060025490565b600d5410156109075760405162461bcd60e51b815260206004820152600d60248201526c76616c756520746f6f206c6f7760981b604482015260640161080d565b6005546001600160a01b03163314610cf65760405162461bcd60e51b815260040161080d90611a50565b6006805460ff60b01b1916600160b01b179055565b6001600160a01b038316610d6d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161080d565b6001600160a01b038216610dce5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161080d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610e555760405162461bcd60e51b815260040161080d90611a85565b6001600160a01b038216610e7b5760405162461bcd60e51b815260040161080d90611aca565b6001600160a01b03831660009081526014602052604081205460ff1680610eba57506001600160a01b03831660009081526014602052604090205460ff165b600654909150600160b01b900460ff1680610ed25750805b610f1e5760405162461bcd60e51b815260206004820152601760248201527f74726164696e67206973206e6f7420796574204f70656e000000000000000000604482015260640161080d565b6001600160a01b03841660009081526011602052604090205460ff16158015610f6057506001600160a01b03831660009081526011602052604090205460ff16155b610fa25760405162461bcd60e51b8152602060048201526013602482015272426c61636b6c6973746564206164647265737360681b604482015260640161080d565b81600003610fbc57610fb68484600061131d565b50505050565b7f000000000000000000000000c36bc5cecf7581ef7a7ec3e709536f5e28503ad26001600160a01b0316846001600160a01b031614801561101657506001600160a01b03841660009081526014602052604090205460ff16155b801561103b57506001600160a01b03831660009081526014602052604090205460ff16155b156110c2576001600160a01b038316600090815260208190526040902054600e546110668483611b23565b11156110c05760405162461bcd60e51b8152602060048201526024808201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152633ab73a1760e11b606482015260840161080d565b505b7f000000000000000000000000c36bc5cecf7581ef7a7ec3e709536f5e28503ad26001600160a01b0316836001600160a01b0316148015611101575080155b1561116957600d548211156111695760405162461bcd60e51b815260206004820152602860248201527f616d6f756e74206578636565647320746865206d61785472616e73616374696f6044820152673720b6b7bab73a1760c11b606482015260840161080d565b30600090815260208190526040902054600f54811080159081906111975750600654600160a01b900460ff16155b80156111d457507f000000000000000000000000c36bc5cecf7581ef7a7ec3e709536f5e28503ad26001600160a01b0316856001600160a01b0316145b80156111e95750600654600160a81b900460ff165b156111fc57600f5491506111fc82611471565b826112eb5760007f000000000000000000000000c36bc5cecf7581ef7a7ec3e709536f5e28503ad26001600160a01b0316876001600160a01b03160361126b5761126860646108c061126160095461097360085460075461131190919063ffffffff16565b88906115e7565b90505b7f000000000000000000000000c36bc5cecf7581ef7a7ec3e709536f5e28503ad26001600160a01b0316866001600160a01b0316036112cc576112c960646108c0611261600c54610973600b54600a5461131190919063ffffffff16565b90505b6112d685826115f3565b945080156112e9576112e987308361131d565b505b6112f686868661131d565b505050505050565b600061130a8284611b3b565b9392505050565b600061130a8284611b23565b6001600160a01b0383166113435760405162461bcd60e51b815260040161080d90611a85565b6001600160a01b0382166113695760405162461bcd60e51b815260040161080d90611aca565b6001600160a01b038316600090815260208190526040902054818110156113e15760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161080d565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611418908490611b23565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161146491815260200190565b60405180910390a3610fb6565b6006805460ff60a01b1916600160a01b179055600c54600a54600b546000926114af926114a19261097391611311565b600a546108c09085906115e7565b905060006114be8260026112fe565b905060006114cc83836115f3565b9050476114d8836115ff565b60006114e447836115f3565b90506114f08382611782565b6115026114fd87876115f3565b6115ff565b601354600c54600b546001600160a01b03909216916108fc916115369161152891611311565b600c546108c09047906115e7565b6040518115909202916000818181858888f1935050505015801561155e573d6000803e3d6000fd5b506012546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611598573d6000803e3d6000fd5b5060408051858152602081018390527f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f8381486910160405180910390a150506006805460ff60a01b1916905550505050565b600061130a8284611b5d565b600061130a8284611b7c565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061163457611634611b93565b6001600160a01b03928316602091820292909201810191909152601054604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561168d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b19190611ba9565b816001815181106116c4576116c4611b93565b6001600160a01b039283166020918202929092018101919091526010543060009081526001835260408082209290941681529152205482111561171b5760105461171b9030906001600160a01b0316600019610d0b565b60105460405163791ac94760e01b81526001600160a01b039091169063791ac94790611754908590600090869030904290600401611bc6565b600060405180830381600087803b15801561176e57600080fd5b505af11580156112f6573d6000803e3d6000fd5b6010546001600160a01b031663f305d7198230856000806117ab6005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015611813573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906118389190611c37565b5050505050565b600060208083528351808285015260005b8181101561186c57858101830151858201604001528201611850565b8181111561187e576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461090757600080fd5b600080604083850312156118bc57600080fd5b82356118c781611894565b946020939093013593505050565b6000602082840312156118e757600080fd5b813561130a81611894565b60008060006060848603121561190757600080fd5b833561191281611894565b9250602084013561192281611894565b929592945050506040919091013590565b8035801515811461194357600080fd5b919050565b6000806040838503121561195b57600080fd5b823561196681611894565b915061197460208401611933565b90509250929050565b60006020828403121561198f57600080fd5b5035919050565b6000806000606084860312156119ab57600080fd5b505081359360208301359350604090920135919050565b6000602082840312156119d457600080fd5b61130a82611933565b600080604083850312156119f057600080fd5b82356119fb81611894565b91506020830135611a0b81611894565b809150509250929050565b600181811c90821680611a2a57607f821691505b602082108103611a4a57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008219821115611b3657611b36611b0d565b500190565b600082611b5857634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611b7757611b77611b0d565b500290565b600082821015611b8e57611b8e611b0d565b500390565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611bbb57600080fd5b815161130a81611894565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611c165784516001600160a01b031683529383019391830191600101611bf1565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611c4c57600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122054c0e3052d66913df46006ccdb3b021b463dfc1342f244328e646d14c6c1ef9c64736f6c634300080f0033
Deployed Bytecode Sourcemap
29431:9149:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3288:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4923:169;;;;;;;;;;-1:-1:-1;4923:169:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;4923:169:0;1072:187:1;30046:41:0;;;;;;;;;;-1:-1:-1;30046:41:0;;;;-1:-1:-1;;;;;30046:41:0;;;;;;-1:-1:-1;;;;;1454:32:1;;;1436:51;;1424:2;1409:18;30046:41:0;1264:229:1;3876:108:0;;;;;;;;;;-1:-1:-1;3964:12:0;;3876:108;;;1644:25:1;;;1632:2;1617:18;3876:108:0;1498:177:1;30141:46:0;;;;;;;;;;-1:-1:-1;30141:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5317:492;;;;;;;;;;-1:-1:-1;5317:492:0;;;;;:::i;:::-;;:::i;3718:93::-;;;;;;;;;;-1:-1:-1;3718:93:0;;3801:2;2535:36:1;;2523:2;2508:18;3718:93:0;2393:184:1;38405:123:0;;;;;;;;;;-1:-1:-1;38405:123:0;;;;;:::i;:::-;;:::i;:::-;;30094:38;;;;;;;;;;;;;;;29547:40;;;;;;;;;;-1:-1:-1;29547:40:0;;;;-1:-1:-1;;;29547:40:0;;;;;;36658:125;;;;;;;;;;-1:-1:-1;36658:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;36747:28:0;36723:4;36747:28;;;:19;:28;;;;;;;;;36658:125;29706:25;;;;;;;;;;;;;;;;29668:31;;;;;;;;;;;;;;;;4047:127;;;;;;;;;;-1:-1:-1;4047:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;4148:18:0;4121:7;4148:18;;;;;;;;;;;;4047:127;36871:185;;;;;;;;;;-1:-1:-1;36871:185:0;;;;;:::i;:::-;;:::i;38099:119::-;;;;;;;;;;-1:-1:-1;38099:119:0;;;;;:::i;:::-;;:::i;30196:92::-;;;;;;;;;;-1:-1:-1;30196:92:0;;;;-1:-1:-1;;;;;30196:92:0;;;37267:303;;;;;;;;;;-1:-1:-1;37267:303:0;;;;;:::i;:::-;;:::i;2387:79::-;;;;;;;;;;-1:-1:-1;2452:6:0;;-1:-1:-1;;;;;2452:6:0;2387:79;;30296:86;;;;;;;;;;-1:-1:-1;30296:86:0;;;;-1:-1:-1;;;;;30296:86:0;;;29780:35;;;;;;;;;;;;;;;;3507:104;;;;;;;;;;;;;:::i;29630:31::-;;;;;;;;;;;;;;;;29822:29;;;;;;;;;;;;;;;;4387:175;;;;;;;;;;-1:-1:-1;4387:175:0;;;;;:::i;:::-;;:::i;36358:288::-;;;;;;;;;;-1:-1:-1;36358:288:0;;;;;:::i;:::-;;:::i;37579:316::-;;;;;;;;;;-1:-1:-1;37579:316:0;;;;;:::i;:::-;;:::i;38226:171::-;;;;;;;;;;-1:-1:-1;38226:171:0;;;;;:::i;:::-;;:::i;29858:59::-;;;;;;;;;;;;;;;;4625:151;;;;;;;;;;-1:-1:-1;4625:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;4741:18:0;;;4714:7;4741:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4625:151;29984:53;;;;;;;;;;;;;;;;29924;;;;;;;;;;;;;;;;37903:188;;;;;;;;;;-1:-1:-1;37903:188:0;;;;;:::i;:::-;;:::i;37064:195::-;;;;;;;;;;-1:-1:-1;37064:195:0;;;;;:::i;:::-;;:::i;29738:35::-;;;;;;;;;;;;;;;;36791:72;;;;;;;;;;;;;:::i;3288:100::-;3342:13;3375:5;3368:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3288:100;:::o;4923:169::-;5006:4;5023:39;1535:10;5046:7;5055:6;5023:8;:39::i;:::-;-1:-1:-1;5080:4:0;4923:169;;;;:::o;5317:492::-;5457:4;5474:36;5484:6;5492:9;5503:6;5474:9;:36::i;:::-;-1:-1:-1;;;;;5550:19:0;;5523:24;5550:19;;;:11;:19;;;;;;;;1535:10;5550:33;;;;;;;;5602:26;;;;5594:79;;;;-1:-1:-1;;;5594:79:0;;5579:2:1;5594:79:0;;;5561:21:1;5618:2;5598:18;;;5591:30;5657:34;5637:18;;;5630:62;-1:-1:-1;;;5708:18:1;;;5701:38;5756:19;;5594:79:0;;;;;;;;;5709:57;5718:6;1535:10;5759:6;5740:16;:25;5709:8;:57::i;:::-;-1:-1:-1;5797:4:0;;5317:492;-1:-1:-1;;;;5317:492:0:o;38405:123::-;2599:6;;-1:-1:-1;;;;;2599:6:0;1535:10;2599:22;2591:67;;;;-1:-1:-1;;;2591:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;38489:23:0;;;::::1;;::::0;;;:14:::1;:23;::::0;;;;:31;;-1:-1:-1;;38489:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;38405:123::o;36871:185::-;2599:6;;-1:-1:-1;;;;;2599:6:0;1535:10;2599:22;2591:67;;;;-1:-1:-1;;;2591:67:0;;;;;;;:::i;:::-;36945:14:::1;:26:::0;;;37008:22:::1;37026:3;37008:13;3964:12:::0;;;3876:108;37008:13:::1;:17:::0;::::1;:22::i;:::-;36990:14;;:40;;36982:66;;;::::0;-1:-1:-1;;;36982:66:0;;6349:2:1;36982:66:0::1;::::0;::::1;6331:21:1::0;6388:2;6368:18;;;6361:30;-1:-1:-1;;;6407:18:1;;;6400:43;6460:18;;36982:66:0::1;6147:337:1::0;36982:66:0::1;36871:185:::0;:::o;38099:119::-;2599:6;;-1:-1:-1;;;;;2599:6:0;1535:10;2599:22;2591:67;;;;-1:-1:-1;;;2591:67:0;;;;;;;:::i;:::-;38179:18:::1;:31:::0;38099:119::o;37267:303::-;2599:6;;-1:-1:-1;;;;;2599:6:0;1535:10;2599:22;2591:67;;;;-1:-1:-1;;;2591:67:0;;;;;;;:::i;:::-;37438:2:::1;37389:45;37426:7:::0;37389:32:::1;:13:::0;37407;37389:17:::1;:32::i;:::-;:36:::0;::::1;:45::i;:::-;:51;;37381:76;;;::::0;-1:-1:-1;;;37381:76:0;;6691:2:1;37381:76:0::1;::::0;::::1;6673:21:1::0;6730:2;6710:18;;;6703:30;-1:-1:-1;;;6749:18:1;;;6742:42;6801:18;;37381:76:0::1;6489:336:1::0;37381:76:0::1;37468:12;:28:::0;;;;37507:12:::1;:28:::0;37546:6:::1;:16:::0;37267:303::o;3507:104::-;3563:13;3596:7;3589:14;;;;;:::i;4387:175::-;4473:4;4490:42;1535:10;4514:9;4525:6;4490:9;:42::i;36358:288::-;2599:6;;-1:-1:-1;;;;;2599:6:0;1535:10;2599:22;2591:67;;;;-1:-1:-1;;;2591:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36451:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;:40;::::1;;:28;::::0;;::::1;:40;;::::0;36443:95:::1;;;::::0;-1:-1:-1;;;36443:95:0;;7032:2:1;36443:95:0::1;::::0;::::1;7014:21:1::0;7071:2;7051:18;;;7044:30;7110:34;7090:18;;;7083:62;-1:-1:-1;;;7161:18:1;;;7154:40;7211:19;;36443:95:0::1;6830:406:1::0;36443:95:0::1;-1:-1:-1::0;;;;;36549:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;36549:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;36604:34;;1212:41:1;;;36604:34:0::1;::::0;1185:18:1;36604:34:0::1;;;;;;;36358:288:::0;;:::o;37579:316::-;2599:6;;-1:-1:-1;;;;;2599:6:0;1535:10;2599:22;2591:67;;;;-1:-1:-1;;;2591:67:0;;;;;;;:::i;:::-;37751:2:::1;37702:45;37739:7:::0;37702:32:::1;:13:::0;37720;37702:17:::1;:32::i;:45::-;:51;;37694:76;;;::::0;-1:-1:-1;;;37694:76:0;;6691:2:1;37694:76:0::1;::::0;::::1;6673:21:1::0;6730:2;6710:18;;;6703:30;-1:-1:-1;;;6749:18:1;;;6742:42;6801:18;;37694:76:0::1;6489:336:1::0;37694:76:0::1;37781:16;:32:::0;;;;37824:16:::1;:32:::0;37867:10:::1;:20:::0;37579:316::o;38226:171::-;2599:6;;-1:-1:-1;;;;;2599:6:0;1535:10;2599:22;2591:67;;;;-1:-1:-1;;;2591:67:0;;;;;;;:::i;:::-;38303:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;38303:32:0::1;-1:-1:-1::0;;;;38303:32:0;;::::1;;::::0;;38351:38:::1;::::0;::::1;::::0;::::1;::::0;38327:8;1237:14:1;1230:22;1212:41;;1200:2;1185:18;;1072:187;38351:38:0::1;;;;;;;;38226:171:::0;:::o;37903:188::-;2599:6;;-1:-1:-1;;;;;2599:6:0;1535:10;2599:22;2591:67;;;;-1:-1:-1;;;2591:67:0;;;;;;;:::i;:::-;38016:15:::1;:34:::0;;-1:-1:-1;;;;;38016:34:0;;::::1;-1:-1:-1::0;;;;;;38016:34:0;;::::1;;::::0;;;38061:9:::1;:22:::0;;;;;::::1;::::0;::::1;;::::0;;37903:188::o;37064:195::-;2599:6;;-1:-1:-1;;;;;2599:6:0;1535:10;2599:22;2591:67;;;;-1:-1:-1;;;2591:67:0;;;;;;;:::i;:::-;37132:20:::1;:29:::0;;;37204::::1;37222:10;37204:13;3964:12:::0;;;3876:108;37204:29:::1;37180:20;;:53;;37172:79;;;::::0;-1:-1:-1;;;37172:79:0;;6349:2:1;37172:79:0::1;::::0;::::1;6331:21:1::0;6388:2;6368:18;;;6361:30;-1:-1:-1;;;6407:18:1;;;6400:43;6460:18;;37172:79:0::1;6147:337:1::0;36791:72:0;2599:6;;-1:-1:-1;;;;;2599:6:0;1535:10;2599:22;2591:67;;;;-1:-1:-1;;;2591:67:0;;;;;;;:::i;:::-;36842:6:::1;:13:::0;;-1:-1:-1;;;;36842:13:0::1;-1:-1:-1::0;;;36842:13:0::1;::::0;;36791:72::o;7257:380::-;-1:-1:-1;;;;;7393:19:0;;7385:68;;;;-1:-1:-1;;;7385:68:0;;7443:2:1;7385:68:0;;;7425:21:1;7482:2;7462:18;;;7455:30;7521:34;7501:18;;;7494:62;-1:-1:-1;;;7572:18:1;;;7565:34;7616:19;;7385:68:0;7241:400:1;7385:68:0;-1:-1:-1;;;;;7472:21:0;;7464:68;;;;-1:-1:-1;;;7464:68:0;;7848:2:1;7464:68:0;;;7830:21:1;7887:2;7867:18;;;7860:30;7926:34;7906:18;;;7899:62;-1:-1:-1;;;7977:18:1;;;7970:32;8019:19;;7464:68:0;7646:398:1;7464:68:0;-1:-1:-1;;;;;7545:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7597:32;;1644:25:1;;;7597:32:0;;1617:18:1;7597:32:0;;;;;;;7257:380;;;:::o;31801:2120::-;-1:-1:-1;;;;;31933:18:0;;31925:68;;;;-1:-1:-1;;;31925:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;32012:16:0;;32004:64;;;;-1:-1:-1;;;32004:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;32102:25:0;;32079:20;32102:25;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;32131:23:0;;;;;;:19;:23;;;;;;;;32102:52;32173:6;;32079:75;;-1:-1:-1;;;;32173:6:0;;;;;:25;;;32183:15;32173:25;32165:61;;;;-1:-1:-1;;;32165:61:0;;9061:2:1;32165:61:0;;;9043:21:1;9100:2;9080:18;;;9073:30;9139:25;9119:18;;;9112:53;9182:18;;32165:61:0;8859:347:1;32165:61:0;-1:-1:-1;;;;;32246:20:0;;;;;;:14;:20;;;;;;;;32245:21;:44;;;;-1:-1:-1;;;;;;32271:18:0;;;;;;:14;:18;;;;;;;;32270:19;32245:44;32237:76;;;;-1:-1:-1;;;32237:76:0;;9413:2:1;32237:76:0;;;9395:21:1;9452:2;9432:18;;;9425:30;-1:-1:-1;;;9471:18:1;;;9464:49;9530:18;;32237:76:0;9211:343:1;32237:76:0;32329:6;32339:1;32329:11;32326:92;;32357:28;32373:4;32379:2;32383:1;32357:15;:28::i;:::-;32400:7;31801:2120;;;:::o;32326:92::-;32440:13;-1:-1:-1;;;;;32434:19:0;:4;-1:-1:-1;;;;;32434:19:0;;:49;;;;-1:-1:-1;;;;;;32458:25:0;;;;;;:19;:25;;;;;;;;32457:26;32434:49;:77;;;;-1:-1:-1;;;;;;32488:23:0;;;;;;:19;:23;;;;;;;;32487:24;32434:77;32431:271;;;-1:-1:-1;;;;;4148:18:0;;32527:32;4148:18;;;;;;;;;;;32635:14;;32598:33;32625:6;4148:18;32598:33;:::i;:::-;:51;;32590:100;;;;-1:-1:-1;;;32590:100:0;;10026:2:1;32590:100:0;;;10008:21:1;10065:2;10045:18;;;10038:30;10104:34;10084:18;;;10077:62;-1:-1:-1;;;10155:18:1;;;10148:34;10199:19;;32590:100:0;9824:400:1;32590:100:0;32512:190;32431:271;32729:13;-1:-1:-1;;;;;32725:17:0;:2;-1:-1:-1;;;;;32725:17:0;;:37;;;;;32747:15;32746:16;32725:37;32722:152;;;32797:20;;32787:6;:30;;32779:83;;;;-1:-1:-1;;;32779:83:0;;10431:2:1;32779:83:0;;;10413:21:1;10470:2;10450:18;;;10443:30;10509:34;10489:18;;;10482:62;-1:-1:-1;;;10560:18:1;;;10553:38;10608:19;;32779:83:0;10229:404:1;32779:83:0;32940:4;32891:28;4148:18;;;;;;;;;;;33018;;32994:42;;;;;;;33059:40;;-1:-1:-1;33083:16:0;;-1:-1:-1;;;33083:16:0;;;;33082:17;33059:40;:61;;;;;33107:13;-1:-1:-1;;;;;33103:17:0;:2;-1:-1:-1;;;;;33103:17:0;;33059:61;:86;;;;-1:-1:-1;33124:21:0;;-1:-1:-1;;;33124:21:0;;;;33059:86;33056:212;;;33185:18;;33162:41;;33218:36;33233:20;33218:14;:36::i;:::-;33370:15;33366:500;;33402:12;33438:13;-1:-1:-1;;;;;33432:19:0;:4;-1:-1:-1;;;;;33432:19:0;;33429:128;;33478:63;33537:3;33478:54;33489:42;33524:6;;33489:30;33506:12;;33489;;:16;;:30;;;;:::i;:42::-;33478:6;;:10;:54::i;:63::-;33470:71;;33429:128;33580:13;-1:-1:-1;;;;;33576:17:0;:2;-1:-1:-1;;;;;33576:17:0;;33573:138;;33620:75;33691:3;33620:66;33631:54;33674:10;;33631:38;33652:16;;33631;;:20;;:38;;;;:::i;33620:75::-;33612:83;;33573:138;33733:16;:6;33744:4;33733:10;:16::i;:::-;33724:25;-1:-1:-1;33767:8:0;;33764:91;;33796:42;33812:4;33826;33833;33796:15;:42::i;:::-;33387:479;33366:500;33878:33;33894:4;33900:2;33904:6;33878:15;:33::i;:::-;31914:2007;;;31801:2120;;;:::o;19082:98::-;19140:7;19167:5;19171:1;19167;:5;:::i;:::-;19160:12;19082:98;-1:-1:-1;;;19082:98:0:o;17945:::-;18003:7;18030:5;18034:1;18030;:5;:::i;5907:733::-;-1:-1:-1;;;;;6047:20:0;;6039:70;;;;-1:-1:-1;;;6039:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6128:23:0;;6120:71;;;;-1:-1:-1;;;6120:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6288:17:0;;6264:21;6288:17;;;;;;;;;;;6324:23;;;;6316:74;;;;-1:-1:-1;;;6316:74:0;;11062:2:1;6316:74:0;;;11044:21:1;11101:2;11081:18;;;11074:30;11140:34;11120:18;;;11113:62;-1:-1:-1;;;11191:18:1;;;11184:36;11237:19;;6316:74:0;10860:402:1;6316:74:0;-1:-1:-1;;;;;6426:17:0;;;:9;:17;;;;;;;;;;;6446:22;;;6426:42;;6490:20;;;;;;;;:30;;6462:6;;6426:9;6490:30;;6462:6;;6490:30;:::i;:::-;;;;;;;;6555:9;-1:-1:-1;;;;;6538:35:0;6547:6;-1:-1:-1;;;;;6538:35:0;;6566:6;6538:35;;;;1644:25:1;;1632:2;1617:18;;1498:177;6538:35:0;;;;;;;;6586:46;7726:125;33930:1330;30538:16;:23;;-1:-1:-1;;;;30538:23:0;-1:-1:-1;;;30538:23:0;;;34134:10:::1;::::0;34112:16:::1;::::0;34091::::1;::::0;30538:23;;34044:102:::1;::::0;34091:54:::1;::::0;:38:::1;::::0;:20:::1;:38::i;:54::-;34069:16;::::0;34044:42:::1;::::0;:20;;:24:::1;:42::i;:102::-;34015:131:::0;-1:-1:-1;34215:12:0::1;34230:25;34015:131:::0;34253:1:::1;34230:22;:25::i;:::-;34215:40:::0;-1:-1:-1;34266:17:0::1;34286:28;:18:::0;34215:40;34286:22:::1;:28::i;:::-;34266:48:::0;-1:-1:-1;34617:21:0::1;34683:22;34700:4:::0;34683:16:::1;:22::i;:::-;34767:18;34788:41;:21;34814:14:::0;34788:25:::1;:41::i;:::-;34767:62;;34879:35;34892:9;34903:10;34879:12;:35::i;:::-;34968:62;34985:44;:20:::0;35010:18;34985:24:::1;:44::i;:::-;34968:16;:62::i;:::-;35041:9;::::0;35123:10:::1;::::0;35102:16:::1;::::0;-1:-1:-1;;;;;35041:9:0;;::::1;::::0;:95:::1;::::0;35060:75:::1;::::0;35102:32:::1;::::0;:20:::1;:32::i;:::-;35086:10;::::0;35060:37:::1;::::0;:21:::1;::::0;:25:::1;:37::i;:75::-;35041:95;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;35147:15:0::1;::::0;:47:::1;::::0;-1:-1:-1;;;;;35147:15:0;;::::1;::::0;35172:21:::1;35147:47:::0;::::1;;;::::0;:15:::1;:47:::0;:15;:47;35172:21;35147:15;:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;35219:32:0::1;::::0;;11441:25:1;;;11497:2;11482:18;;11475:34;;;35219:32:0::1;::::0;11414:18:1;35219:32:0::1;;;;;;;-1:-1:-1::0;;30584:16:0;:24;;-1:-1:-1;;;;30584:24:0;;;-1:-1:-1;;;;33930:1330:0:o;18683:98::-;18741:7;18768:5;18772:1;18768;:5;:::i;18326:98::-;18384:7;18411:5;18415:1;18411;:5;:::i;35268:692::-;35418:16;;;35432:1;35418:16;;;;;;;;35394:21;;35418:16;;;;;;;;;;-1:-1:-1;35418:16:0;35394:40;;35463:4;35445;35450:1;35445:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;35445:23:0;;;:7;;;;;;;;;;:23;;;;35489:15;;:22;;;-1:-1:-1;;;35489:22:0;;;;:15;;;;;:20;;:22;;;;;35445:7;;35489:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35479:4;35484:1;35479:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;35479:32:0;;;:7;;;;;;;;;;:32;;;;35560:15;;35545:4;4714:7;4741:18;;;:11;:18;;;;;;35560:15;;;;4741:27;;;;;;35580:11;-1:-1:-1;35524:156:0;;;35638:15;;35606:62;;35623:4;;-1:-1:-1;;;;;35638:15:0;-1:-1:-1;;35606:8:0;:62::i;:::-;35718:15;;:224;;-1:-1:-1;;;35718:224:0;;-1:-1:-1;;;;;35718:15:0;;;;:66;;:224;;35799:11;;35718:15;;35869:4;;35896;;35916:15;;35718:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35968:381;36079:15;;-1:-1:-1;;;;;36079:15:0;:31;36118:9;36151:4;36171:11;36079:15;;36283:7;2452:6;;-1:-1:-1;;;;;2452:6:0;;2387:79;36283:7;36079:252;;;;;;-1:-1:-1;;;;;;36079:252:0;;;-1:-1:-1;;;;;13687:15:1;;;36079:252:0;;;13669:34:1;13719:18;;;13712:34;;;;13762:18;;;13755:34;;;;13805:18;;;13798:34;13869:15;;;13848:19;;;13841:44;36305:15:0;13901:19:1;;;13894:35;13603:19;;36079:252:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;35968:381;;:::o;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;752:315;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1680:247::-;1739:6;1792:2;1780:9;1771:7;1767:23;1763:32;1760:52;;;1808:1;1805;1798:12;1760:52;1847:9;1834:23;1866:31;1891:5;1866:31;:::i;1932:456::-;2009:6;2017;2025;2078:2;2066:9;2057:7;2053:23;2049:32;2046:52;;;2094:1;2091;2084:12;2046:52;2133:9;2120:23;2152:31;2177:5;2152:31;:::i;:::-;2202:5;-1:-1:-1;2259:2:1;2244:18;;2231:32;2272:33;2231:32;2272:33;:::i;:::-;1932:456;;2324:7;;-1:-1:-1;;;2378:2:1;2363:18;;;;2350:32;;1932:456::o;2582:160::-;2647:20;;2703:13;;2696:21;2686:32;;2676:60;;2732:1;2729;2722:12;2676:60;2582:160;;;:::o;2747:315::-;2812:6;2820;2873:2;2861:9;2852:7;2848:23;2844:32;2841:52;;;2889:1;2886;2879:12;2841:52;2928:9;2915:23;2947:31;2972:5;2947:31;:::i;:::-;2997:5;-1:-1:-1;3021:35:1;3052:2;3037:18;;3021:35;:::i;:::-;3011:45;;2747:315;;;;;:::o;3275:180::-;3334:6;3387:2;3375:9;3366:7;3362:23;3358:32;3355:52;;;3403:1;3400;3393:12;3355:52;-1:-1:-1;3426:23:1;;3275:180;-1:-1:-1;3275:180:1:o;3684:316::-;3761:6;3769;3777;3830:2;3818:9;3809:7;3805:23;3801:32;3798:52;;;3846:1;3843;3836:12;3798:52;-1:-1:-1;;3869:23:1;;;3939:2;3924:18;;3911:32;;-1:-1:-1;3990:2:1;3975:18;;;3962:32;;3684:316;-1:-1:-1;3684:316:1:o;4005:180::-;4061:6;4114:2;4102:9;4093:7;4089:23;4085:32;4082:52;;;4130:1;4127;4120:12;4082:52;4153:26;4169:9;4153:26;:::i;4190:388::-;4258:6;4266;4319:2;4307:9;4298:7;4294:23;4290:32;4287:52;;;4335:1;4332;4325:12;4287:52;4374:9;4361:23;4393:31;4418:5;4393:31;:::i;:::-;4443:5;-1:-1:-1;4500:2:1;4485:18;;4472:32;4513:33;4472:32;4513:33;:::i;:::-;4565:7;4555:17;;;4190:388;;;;;:::o;4992:380::-;5071:1;5067:12;;;;5114;;;5135:61;;5189:4;5181:6;5177:17;5167:27;;5135:61;5242:2;5234:6;5231:14;5211:18;5208:38;5205:161;;5288:10;5283:3;5279:20;5276:1;5269:31;5323:4;5320:1;5313:15;5351:4;5348:1;5341:15;5205:161;;4992:380;;;:::o;5786:356::-;5988:2;5970:21;;;6007:18;;;6000:30;6066:34;6061:2;6046:18;;6039:62;6133:2;6118:18;;5786:356::o;8049:401::-;8251:2;8233:21;;;8290:2;8270:18;;;8263:30;8329:34;8324:2;8309:18;;8302:62;-1:-1:-1;;;8395:2:1;8380:18;;8373:35;8440:3;8425:19;;8049:401::o;8455:399::-;8657:2;8639:21;;;8696:2;8676:18;;;8669:30;8735:34;8730:2;8715:18;;8708:62;-1:-1:-1;;;8801:2:1;8786:18;;8779:33;8844:3;8829:19;;8455:399::o;9559:127::-;9620:10;9615:3;9611:20;9608:1;9601:31;9651:4;9648:1;9641:15;9675:4;9672:1;9665:15;9691:128;9731:3;9762:1;9758:6;9755:1;9752:13;9749:39;;;9768:18;;:::i;:::-;-1:-1:-1;9804:9:1;;9691:128::o;10638:217::-;10678:1;10704;10694:132;;10748:10;10743:3;10739:20;10736:1;10729:31;10783:4;10780:1;10773:15;10811:4;10808:1;10801:15;10694:132;-1:-1:-1;10840:9:1;;10638:217::o;11520:168::-;11560:7;11626:1;11622;11618:6;11614:14;11611:1;11608:21;11603:1;11596:9;11589:17;11585:45;11582:71;;;11633:18;;:::i;:::-;-1:-1:-1;11673:9:1;;11520:168::o;11693:125::-;11733:4;11761:1;11758;11755:8;11752:34;;;11766:18;;:::i;:::-;-1:-1:-1;11803:9:1;;11693:125::o;11955:127::-;12016:10;12011:3;12007:20;12004:1;11997:31;12047:4;12044:1;12037:15;12071:4;12068:1;12061:15;12087:251;12157:6;12210:2;12198:9;12189:7;12185:23;12181:32;12178:52;;;12226:1;12223;12216:12;12178:52;12258:9;12252:16;12277:31;12302:5;12277:31;:::i;12343:980::-;12605:4;12653:3;12642:9;12638:19;12684:6;12673:9;12666:25;12710:2;12748:6;12743:2;12732:9;12728:18;12721:34;12791:3;12786:2;12775:9;12771:18;12764:31;12815:6;12850;12844:13;12881:6;12873;12866:22;12919:3;12908:9;12904:19;12897:26;;12958:2;12950:6;12946:15;12932:29;;12979:1;12989:195;13003:6;13000:1;12997:13;12989:195;;;13068:13;;-1:-1:-1;;;;;13064:39:1;13052:52;;13159:15;;;;13124:12;;;;13100:1;13018:9;12989:195;;;-1:-1:-1;;;;;;;13240:32:1;;;;13235:2;13220:18;;13213:60;-1:-1:-1;;;13304:3:1;13289:19;13282:35;13201:3;12343:980;-1:-1:-1;;;12343:980:1:o;13940:306::-;14028:6;14036;14044;14097:2;14085:9;14076:7;14072:23;14068:32;14065:52;;;14113:1;14110;14103:12;14065:52;14142:9;14136:16;14126:26;;14192:2;14181:9;14177:18;14171:25;14161:35;;14236:2;14225:9;14221:18;14215:25;14205:35;;13940:306;;;;;:::o
Swarm Source
ipfs://54c0e3052d66913df46006ccdb3b021b463dfc1342f244328e646d14c6c1ef9c
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.