Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 15 from a total of 15 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 19574588 | 163 days ago | IN | 0 ETH | 0.00102809 | ||||
Transfer | 19568239 | 164 days ago | IN | 0 ETH | 0.0013743 | ||||
Transfer | 19567849 | 164 days ago | IN | 0 ETH | 0.00184173 | ||||
Transfer | 19480537 | 177 days ago | IN | 0 ETH | 0.00212277 | ||||
Transfer | 19474251 | 177 days ago | IN | 0 ETH | 0.00194767 | ||||
Transfer | 19469795 | 178 days ago | IN | 0 ETH | 0.00290765 | ||||
Transfer | 19463115 | 179 days ago | IN | 0 ETH | 0.00329737 | ||||
Transfer | 19448984 | 181 days ago | IN | 0 ETH | 0.0016894 | ||||
Transfer | 19448961 | 181 days ago | IN | 0 ETH | 0.00199584 | ||||
Transfer | 19448915 | 181 days ago | IN | 0 ETH | 0.00262453 | ||||
Transfer | 19447315 | 181 days ago | IN | 0 ETH | 0.00130817 | ||||
Transfer | 19341610 | 196 days ago | IN | 0 ETH | 0.0044236 | ||||
Transfer | 19318802 | 199 days ago | IN | 0 ETH | 0.00258749 | ||||
Transfer | 19318755 | 199 days ago | IN | 0 ETH | 0.00285229 | ||||
0x60806040 | 19309461 | 201 days ago | IN | 0 ETH | 0.10486446 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
MarvelCoinUniverse
Compiler Version
v0.8.21+commit.d9974bed
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-02-26 */ // SPDX-License-Identifier: MIT pragma solidity 0.8.21; // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/ERC20.sol) // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol) /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address from, address to, uint256 amount) external returns (bool); } // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol) /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * The default value of {decimals} is 18. To change this, you should override * this function so it returns a different value. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead returning `false` on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of ERC20 * applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ 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}. * * All two of these values are immutable: they can only be set once during * construction. */ 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. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the default value returned by this function, unless * it's overridden. * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ 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: * * - `to` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, 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}. * * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, 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}. * * NOTE: Does not update the allowance if the current allowance * is the maximum `uint256`. * * Requirements: * * - `from` and `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. * - the caller must have allowance for ``from``'s tokens of at least * `amount`. */ function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `from` to `to`. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. */ function _transfer(address from, address to, uint256 amount) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[from] = fromBalance - amount; // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by // decrementing then incrementing. _balances[to] += amount; } emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; unchecked { // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above. _balances[account] += amount; } emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; // Overflow not possible: amount <= accountBalance <= totalSupply. _totalSupply -= amount; } emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ 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 Updates `owner` s allowance for `spender` based on spent `amount`. * * Does not update the allowance amount in case of infinite allowance. * Revert if not enough allowance is available. * * Might emit an {Approval} event. */ function _spendAllowance(address owner, address spender, uint256 amount) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked { _approve(owner, spender, currentAllowance - amount); } } } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {} } // OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol) /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); 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(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair( address tokenA, address tokenB ) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function allowance( address owner, address spender ) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 value ) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; event Burn( address indexed sender, uint256 amount0, uint256 amount1, address indexed to ); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function burn( address to ) external returns (uint256 amount0, uint256 amount1); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } // pragma solidity >=0.6.2; interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB, uint256 liquidity); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity); function removeLiquidity( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETH( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountToken, uint256 amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETHWithPermit( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountToken, uint256 amountETH); function swapExactTokensForTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapTokensForExactTokens( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactETHForTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function swapTokensForExactETH( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactTokensForETH( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapETHForExactTokens( uint256 amountOut, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function quote( uint256 amountA, uint256 reserveA, uint256 reserveB ) external pure returns (uint256 amountB); function getAmountOut( uint256 amountIn, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountOut); function getAmountIn( uint256 amountOut, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountIn); function getAmountsOut( uint256 amountIn, address[] calldata path ) external view returns (uint256[] memory amounts); function getAmountsIn( uint256 amountOut, address[] calldata path ) external view returns (uint256[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } error MCU__InvalidBuyFees(); error MCU__InvalidSellFees(); error MCU__InvalidtransferFees(); error MCU__UnableToTransfer(); contract MarvelCoinUniverse is ERC20, Ownable { mapping(address => bool) public isExcludedFromFee; mapping(address => bool) public isLP; IUniswapV2Pair public mainPair; IUniswapV2Router02 public router; address public WETH; address payable public marketingWallet; uint public buyMarketing = 3; uint public totalBuyFee = 3; uint public sellMarketing = 3; uint public totalSellFee = 3; uint public transferMarketing = 0; uint public totaltransferFee = 0; uint public totalTokensMarketing; uint public threshold = 100 ether; uint public maxLimit=1000000 ether; uint public constant MAX_SUPPLY = 500_000_000 ether; uint private constant PERCENTAGE = 100; bool private swapping = false; event SetExclusionStatus(address indexed user, bool status); event UpdatedTreshhold(string,uint); event SetLpStatus(address indexed lpAddress, bool status); event SetBuyFees(uint totalFee, uint marketingFee); event SetSellFees( uint totalFee, uint marketingFee ); event SettransferFees( uint totalFee, uint marketingFee ); event FailTransfer(address indexed user, uint amount); constructor( ) ERC20("Marvel Coin Universe", "MCU") { _transferOwnership(0xCC183270389af452EF3215e39B6A9f7d98AC30AD); _mint(owner(), MAX_SUPPLY); marketingWallet = payable(0xCC183270389af452EF3215e39B6A9f7d98AC30AD); router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); WETH = router.WETH(); address mp = IUniswapV2Factory(router.factory()).createPair( address(this), WETH ); mainPair = IUniswapV2Pair(mp); isExcludedFromFee[owner()] = true; isExcludedFromFee[address(this)] = true; isLP[mp] = true; _approve(address(this), address(router), type(uint256).max); } receive() external payable {} function _transfer( address from, address to, uint amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); bool isBuy = isLP[from]; bool canSwap = balanceOf(address(this)) > threshold; if ( !swapping && canSwap && !isBuy && !isExcludedFromFee[from] && !isExcludedFromFee[to] ) { swapAndDistributeETH(); } if (!isExcludedFromFee[from] && !isExcludedFromFee[to]) { require(amount<=maxLimit,"More than max is not allowed!"); bool isSell = isLP[to]; uint fee; if (isBuy && totalBuyFee > 0) { fee = (amount * totalBuyFee) / PERCENTAGE; amount -= fee; distributeBuy(fee); super._transfer(from, address(this), fee); } else if (isSell && totalSellFee > 0) { fee = (amount * totalSellFee) / PERCENTAGE; amount -= fee; distributeSell(fee); super._transfer(from, address(this), fee); } else if (!isSell && !isBuy && totaltransferFee > 0) { fee = (amount * totaltransferFee) / PERCENTAGE; amount -= fee; distributetransfer(fee); super._transfer(from, address(this), fee); } } super._transfer(from, to, amount); } function distributeBuy(uint amount) internal { totalTokensMarketing += (amount * buyMarketing) / totalBuyFee; } function distributeSell(uint amount) internal { totalTokensMarketing += (amount * sellMarketing) / totalSellFee; } function distributetransfer(uint amount) internal { totalTokensMarketing += (amount * transferMarketing) / totaltransferFee; } function EmergencyswapAndDistributeETH() external onlyOwner { swapping = true; uint toSwap = balanceOf(address(this)); address[] memory path = new address[](2); path[0] = address(this); path[1] = WETH; router.swapExactTokensForETHSupportingFeeOnTransferTokens( toSwap, 0, path, address(this), block.timestamp ); toSwap = address(this).balance; uint totalTokens = totalTokensMarketing ; if (totalTokens == 0) totalTokens = 1; uint marketingAmount = (toSwap * totalTokensMarketing) / totalTokens; totalTokensMarketing = 0; (bool succ, ) = marketingWallet.call{value: marketingAmount}(""); if (!succ) emit FailTransfer(marketingWallet, marketingAmount); swapping = false; } function swapAndDistributeETH() internal { swapping = true; uint toSwap = balanceOf(address(this)); address[] memory path = new address[](2); path[0] = address(this); path[1] = WETH; router.swapExactTokensForETHSupportingFeeOnTransferTokens( toSwap, 0, path, address(this), block.timestamp ); toSwap = address(this).balance; uint totalTokens = totalTokensMarketing ; if (totalTokens == 0) totalTokens = 1; uint marketingAmount = (toSwap * totalTokensMarketing) / totalTokens; totalTokensMarketing = 0; (bool succ, ) = marketingWallet.call{value: marketingAmount}(""); if (!succ) emit FailTransfer(marketingWallet, marketingAmount); swapping = false; } function setExcludedAddress(address _user, bool status) external onlyOwner { require(isExcludedFromFee[_user] != status, "The wallet already has that value set!"); isExcludedFromFee[_user] = status; emit SetExclusionStatus(_user, status); } function setLP(address _lp, bool status) external onlyOwner { require(isLP[_lp] != status, "The wallet already has that value set!"); isLP[_lp] = status; emit SetLpStatus(_lp, status); } function setBuyFees(uint marketingFee) external onlyOwner { uint fullBuyFee = marketingFee; if (fullBuyFee > 10) revert MCU__InvalidBuyFees(); buyMarketing = marketingFee; totalBuyFee = fullBuyFee; emit SetBuyFees(totalBuyFee, marketingFee); } function setSellFees( uint marketingFee ) external onlyOwner { uint fullSellFee = marketingFee; if (fullSellFee > 10) revert MCU__InvalidSellFees(); sellMarketing = marketingFee; totalSellFee = fullSellFee; emit SetSellFees(totalSellFee, marketingFee); } function settransferFees( uint marketingFee ) external onlyOwner { uint fulltransferFee = marketingFee; if (fulltransferFee > 10) revert MCU__InvalidtransferFees(); transferMarketing = marketingFee; totaltransferFee = fulltransferFee; emit SettransferFees(totaltransferFee, marketingFee); } function claimLeftoverETH() external onlyOwner { uint balance = address(this).balance; (bool succ, ) = payable(msg.sender).call{value: balance}(""); if (!succ) revert MCU__UnableToTransfer(); } function setRouterApprovalToMax() external onlyOwner { _approve(address(this), address(router), type(uint256).max); } function changeThreshold(uint _newThreshold) external onlyOwner { require( _newThreshold < MAX_SUPPLY / 10, "Cant be above 10% max supply" ); threshold = _newThreshold; emit UpdatedTreshhold("New Threshhold was set to:",_newThreshold); } function setMaxLimit(uint256 _limit) external onlyOwner{ maxLimit=_limit; } function setWallets(address payable _marketingWallet) external onlyOwner{ marketingWallet=_marketingWallet; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"MCU__InvalidBuyFees","type":"error"},{"inputs":[],"name":"MCU__InvalidSellFees","type":"error"},{"inputs":[],"name":"MCU__InvalidtransferFees","type":"error"},{"inputs":[],"name":"MCU__UnableToTransfer","type":"error"},{"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":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"FailTransfer","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":"totalFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"SetBuyFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"SetExclusionStatus","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"lpAddress","type":"address"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"SetLpStatus","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"totalFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"SetSellFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"totalFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"SettransferFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"","type":"string"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"UpdatedTreshhold","type":"event"},{"inputs":[],"name":"EmergencyswapAndDistributeETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"MAX_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newThreshold","type":"uint256"}],"name":"changeThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimLeftoverETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isLP","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mainPair","outputs":[{"internalType":"contract IUniswapV2Pair","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"setBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setExcludedAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_lp","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_limit","type":"uint256"}],"name":"setMaxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setRouterApprovalToMax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"setSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_marketingWallet","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"settransferFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"threshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTokensMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totaltransferFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526003600c819055600d819055600e819055600f555f601081905560115568056bc75e2d6310000060135569d3c21bcecceda10000006014556015805460ff1916905534801562000052575f80fd5b506040518060400160405280601481526020017f4d617276656c20436f696e20556e697665727365000000000000000000000000815250604051806040016040528060038152602001624d435560e81b8152508160039081620000b691906200065d565b506004620000c582826200065d565b505050620000e2620000dc6200037860201b60201c565b6200037c565b6200010173cc183270389af452ef3215e39b6a9f7d98ac30ad6200037c565b6200012b620001186005546001600160a01b031690565b6b019d971e4fe8401e74000000620003cd565b600b805473cc183270389af452ef3215e39b6a9f7d98ac30ad6001600160a01b03199182161790915560098054737a250d5630b4cf539739df2c5dacb4c659f2488d921682179055604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa158015620001ad573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001d3919062000725565b600a80546001600160a01b0319166001600160a01b039283161790556009546040805163c45a015560e01b815290515f93929092169163c45a0155916004808201926020929091908290030181865afa15801562000233573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000259919062000725565b600a546040516364e329cb60e11b81523060048201526001600160a01b03918216602482015291169063c9c65396906044016020604051808303815f875af1158015620002a8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002ce919062000725565b600880546001600160a01b0319166001600160a01b0383161790559050600160065f620003036005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff199687161790553080825260068552838220805487166001908117909155878416835260079095529290208054909416909217909255600954620003719291165f1962000492565b506200077a565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038216620004295760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b8060025f8282546200043c919062000754565b90915550506001600160a01b0382165f81815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b038316620004f65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840162000420565b6001600160a01b038216620005595760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000420565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620005e757607f821691505b6020821081036200060657634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620005b9575f81815260208120601f850160051c81016020861015620006345750805b601f850160051c820191505b81811015620006555782815560010162000640565b505050505050565b81516001600160401b03811115620006795762000679620005be565b62000691816200068a8454620005d2565b846200060c565b602080601f831160018114620006c7575f8415620006af5750858301515b5f19600386901b1c1916600185901b17855562000655565b5f85815260208120601f198616915b82811015620006f757888601518255948401946001909101908401620006d6565b50858210156200071557878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f6020828403121562000736575f80fd5b81516001600160a01b03811681146200074d575f80fd5b9392505050565b808201808211156200077457634e487b7160e01b5f52601160045260245ffd5b92915050565b61196480620007885f395ff3fe608060405260043610610241575f3560e01c80638382271111610134578063ad5c4648116100b3578063e729aeba11610078578063e729aeba1461066e578063eb50e70e14610683578063eca6aa4d146106a2578063f196782c146106b6578063f2fde38b146106d5578063f887ea40146106f4575f80fd5b8063ad5c4648146105dd578063bf8bcee4146105fc578063cba6c7d61461061b578063dcf7aef314610630578063dd62ed3e1461064f575f80fd5b806395d89b41116100f957806395d89b41146105615780639d9241ec14610575578063a457c2d71461058a578063a8b9f94d146105a9578063a9059cbb146105be575f80fd5b806383822711146104d257806385af30c5146104e75780638d9628db146105065780638da5cb5b1461052557806395927c2514610542575f80fd5b806339509351116101c05780636b41ae0c116101855780636b41ae0c1461041057806370a0823114610425578063715018a61461045957806375f0a8741461046d5780637df0f767146104a4575f80fd5b8063395093511461037a57806342cde4e8146103995780635342acb4146103ae57806359b107b9146103dc578063694e80c3146103f1575f80fd5b80631a861d26116102065780631a861d26146102ed57806323b872dd1461030257806328d6793814610321578063313ce5671461034057806332cb6b0c1461035b575f80fd5b806306fdde031461024c578063095ea7b3146102765780630d4d674e146102a557806311877c17146102bb57806318160ddd146102cf575f80fd5b3661024857005b5f80fd5b348015610257575f80fd5b50610260610713565b60405161026d91906115ce565b60405180910390f35b348015610281575f80fd5b5061029561029036600461162d565b6107a3565b604051901515815260200161026d565b3480156102b0575f80fd5b506102b96107bc565b005b3480156102c6575f80fd5b506102b96107df565b3480156102da575f80fd5b506002545b60405190815260200161026d565b3480156102f8575f80fd5b506102df60145481565b34801561030d575f80fd5b5061029561031c366004611657565b6109be565b34801561032c575f80fd5b506102b961033b366004611695565b6109e1565b34801561034b575f80fd5b506040516012815260200161026d565b348015610366575f80fd5b506102df6b019d971e4fe8401e7400000081565b348015610385575f80fd5b5061029561039436600461162d565b610a90565b3480156103a4575f80fd5b506102df60135481565b3480156103b9575f80fd5b506102956103c83660046116d0565b60066020525f908152604090205460ff1681565b3480156103e7575f80fd5b506102df600d5481565b3480156103fc575f80fd5b506102b961040b3660046116f2565b610ab1565b34801561041b575f80fd5b506102df600e5481565b348015610430575f80fd5b506102df61043f3660046116d0565b6001600160a01b03165f9081526020819052604090205490565b348015610464575f80fd5b506102b9610b8c565b348015610478575f80fd5b50600b5461048c906001600160a01b031681565b6040516001600160a01b03909116815260200161026d565b3480156104af575f80fd5b506102956104be3660046116d0565b60076020525f908152604090205460ff1681565b3480156104dd575f80fd5b506102df60115481565b3480156104f2575f80fd5b5060085461048c906001600160a01b031681565b348015610511575f80fd5b506102b96105203660046116f2565b610b9d565b348015610530575f80fd5b506005546001600160a01b031661048c565b34801561054d575f80fd5b506102b961055c3660046116f2565b610c10565b34801561056c575f80fd5b50610260610c7b565b348015610580575f80fd5b506102df600f5481565b348015610595575f80fd5b506102956105a436600461162d565b610c8a565b3480156105b4575f80fd5b506102df600c5481565b3480156105c9575f80fd5b506102956105d836600461162d565b610d04565b3480156105e8575f80fd5b50600a5461048c906001600160a01b031681565b348015610607575f80fd5b506102b96106163660046116f2565b610d11565b348015610626575f80fd5b506102df60125481565b34801561063b575f80fd5b506102b961064a3660046116f2565b610d1e565b34801561065a575f80fd5b506102df610669366004611709565b610d89565b348015610679575f80fd5b506102df60105481565b34801561068e575f80fd5b506102b961069d3660046116d0565b610db3565b3480156106ad575f80fd5b506102b9610ddd565b3480156106c1575f80fd5b506102b96106d0366004611695565b610e51565b3480156106e0575f80fd5b506102b96106ef3660046116d0565b610eef565b3480156106ff575f80fd5b5060095461048c906001600160a01b031681565b60606003805461072290611735565b80601f016020809104026020016040519081016040528092919081815260200182805461074e90611735565b80156107995780601f1061077057610100808354040283529160200191610799565b820191905f5260205f20905b81548152906001019060200180831161077c57829003601f168201915b5050505050905090565b5f336107b0818585610f68565b60019150505b92915050565b6107c461108b565b6009546107dd9030906001600160a01b03165f19610f68565b565b6107e761108b565b6015805460ff19166001179055305f9081526020818152604080832054815160028082526060820184529194939092908301908036833701905050905030815f815181106108375761083761176d565b6001600160a01b039283166020918202929092010152600a548251911690829060019081106108685761086861176d565b6001600160a01b03928316602091820292909201015260095460405163791ac94760e01b815291169063791ac947906108ad9085905f90869030904290600401611781565b5f604051808303815f87803b1580156108c4575f80fd5b505af11580156108d6573d5f803e3d5ffd5b50506012544794509150505f8190036108ed575060015b5f81601254856108fd9190611804565b610907919061181b565b5f6012819055600b5460405192935090916001600160a01b039091169083908381818185875af1925050503d805f811461095c576040519150601f19603f3d011682016040523d82523d5f602084013e610961565b606091505b50509050806109ad57600b546040518381526001600160a01b03909116907f11e717e1448fb29602b166d1efdb1695d9c5e1160a8001f0a431532ca6d154499060200160405180910390a25b50506015805460ff19169055505050565b5f336109cb8582856110e5565b6109d685858561115d565b506001949350505050565b6109e961108b565b6001600160a01b0382165f9081526007602052604090205481151560ff909116151503610a315760405162461bcd60e51b8152600401610a289061183a565b60405180910390fd5b6001600160a01b0382165f81815260076020908152604091829020805460ff191685151590811790915591519182527f55b60110f970be54878d8bfe021d5cd0772df53f2e15bb8207e0f4c890c950ea91015b60405180910390a25050565b5f336107b0818585610aa28383610d89565b610aac9190611880565b610f68565b610ab961108b565b610ad0600a6b019d971e4fe8401e7400000061181b565b8110610b1e5760405162461bcd60e51b815260206004820152601c60248201527f43616e742062652061626f766520313025206d617820737570706c79000000006044820152606401610a28565b601381905560408051818152601a818301527f4e657720546872657368686f6c64207761732073657420746f3a00000000000060608201526020810183905290517f99868de4f7dff0fc73bf078aff5cff658eda3bf0e4d4228c7ec6374ed28e94b39181900360800190a150565b610b9461108b565b6107dd5f611403565b610ba561108b565b80600a811115610bc8576040516356fd1bbb60e11b815260040160405180910390fd5b6010829055601181905560408051828152602081018490527f1d012236dcb372695396ee30fb9bd4ac5a847cf7d817acec3965e2d1eb37db9e91015b60405180910390a15050565b610c1861108b565b80600a811115610c3b5760405163348fa3c160e11b815260040160405180910390fd5b600e829055600f81905560408051828152602081018490527f125b37650f21d088600cef1223439f6a8bd70800debfd486c503a8a2d19d4b019101610c04565b60606004805461072290611735565b5f3381610c978286610d89565b905083811015610cf75760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a28565b6109d68286868403610f68565b5f336107b081858561115d565b610d1961108b565b601455565b610d2661108b565b80600a811115610d4957604051635ad1ab2d60e01b815260040160405180910390fd5b600c829055600d81905560408051828152602081018490527f5fcc0eea159d45a3b8d481be746c9beed251431a542a5fed4484be37ab783e8d9101610c04565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b610dbb61108b565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b610de561108b565b60405147905f90339083908381818185875af1925050503d805f8114610e26576040519150601f19603f3d011682016040523d82523d5f602084013e610e2b565b606091505b5050905080610e4d57604051634e4559c560e01b815260040160405180910390fd5b5050565b610e5961108b565b6001600160a01b0382165f9081526006602052604090205481151560ff909116151503610e985760405162461bcd60e51b8152600401610a289061183a565b6001600160a01b0382165f81815260066020908152604091829020805460ff191685151590811790915591519182527f926aa5b668417cf93f5146a62276c847038f033b1ec9452fef4a3297036d44529101610a84565b610ef761108b565b6001600160a01b038116610f5c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a28565b610f6581611403565b50565b6001600160a01b038316610fca5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a28565b6001600160a01b03821661102b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a28565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6005546001600160a01b031633146107dd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a28565b5f6110f08484610d89565b90505f198114611157578181101561114a5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610a28565b6111578484848403610f68565b50505050565b6001600160a01b0383166111835760405162461bcd60e51b8152600401610a2890611893565b6001600160a01b0382166111a95760405162461bcd60e51b8152600401610a28906118d8565b6001600160a01b0383165f908152600760209081526040808320546013543085529284905292205460155460ff938416939190921091161580156111ea5750805b80156111f4575081155b801561121857506001600160a01b0385165f9081526006602052604090205460ff16155b801561123c57506001600160a01b0384165f9081526006602052604090205460ff16155b15611249576112496107e7565b6001600160a01b0385165f9081526006602052604090205460ff1615801561128957506001600160a01b0384165f9081526006602052604090205460ff16155b156113f1576014548311156112e05760405162461bcd60e51b815260206004820152601d60248201527f4d6f7265207468616e206d6178206973206e6f7420616c6c6f776564210000006044820152606401610a28565b6001600160a01b0384165f9081526007602052604081205460ff169083801561130a57505f600d54115b15611350576064600d548661131f9190611804565b611329919061181b565b9050611335818661191b565b945061134081611454565b61134b873083611486565b6113ee565b81801561135e57505f600f54115b15611394576064600f54866113739190611804565b61137d919061181b565b9050611389818661191b565b9450611340816115ae565b811580156113a0575083155b80156113ad57505f601154115b156113ee576064601154866113c29190611804565b6113cc919061181b565b90506113d8818661191b565b94506113e3816115be565b6113ee873083611486565b50505b6113fc858585611486565b5050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b600d54600c546114649083611804565b61146e919061181b565b60125f82825461147e9190611880565b909155505050565b6001600160a01b0383166114ac5760405162461bcd60e51b8152600401610a2890611893565b6001600160a01b0382166114d25760405162461bcd60e51b8152600401610a28906118d8565b6001600160a01b0383165f90815260208190526040902054818110156115495760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a28565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3611157565b600f54600e546114649083611804565b6011546010546114649083611804565b5f6020808352835180828501525f5b818110156115f9578581018301518582016040015282016115dd565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610f65575f80fd5b5f806040838503121561163e575f80fd5b823561164981611619565b946020939093013593505050565b5f805f60608486031215611669575f80fd5b833561167481611619565b9250602084013561168481611619565b929592945050506040919091013590565b5f80604083850312156116a6575f80fd5b82356116b181611619565b9150602083013580151581146116c5575f80fd5b809150509250929050565b5f602082840312156116e0575f80fd5b81356116eb81611619565b9392505050565b5f60208284031215611702575f80fd5b5035919050565b5f806040838503121561171a575f80fd5b823561172581611619565b915060208301356116c581611619565b600181811c9082168061174957607f821691505b60208210810361176757634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156117cf5784516001600160a01b0316835293830193918301916001016117aa565b50506001600160a01b03969096166060850152505050608001529392505050565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176107b6576107b66117f0565b5f8261183557634e487b7160e01b5f52601260045260245ffd5b500490565b60208082526026908201527f5468652077616c6c657420616c72656164792068617320746861742076616c7560408201526565207365742160d01b606082015260800190565b808201808211156107b6576107b66117f0565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b818103818111156107b6576107b66117f056fea2646970667358221220a01fe6e36c7a19f8874cd83c24ba26b50a3ddb23cd2dadfca9e43b862b64637f64736f6c63430008150033
Deployed Bytecode
0x608060405260043610610241575f3560e01c80638382271111610134578063ad5c4648116100b3578063e729aeba11610078578063e729aeba1461066e578063eb50e70e14610683578063eca6aa4d146106a2578063f196782c146106b6578063f2fde38b146106d5578063f887ea40146106f4575f80fd5b8063ad5c4648146105dd578063bf8bcee4146105fc578063cba6c7d61461061b578063dcf7aef314610630578063dd62ed3e1461064f575f80fd5b806395d89b41116100f957806395d89b41146105615780639d9241ec14610575578063a457c2d71461058a578063a8b9f94d146105a9578063a9059cbb146105be575f80fd5b806383822711146104d257806385af30c5146104e75780638d9628db146105065780638da5cb5b1461052557806395927c2514610542575f80fd5b806339509351116101c05780636b41ae0c116101855780636b41ae0c1461041057806370a0823114610425578063715018a61461045957806375f0a8741461046d5780637df0f767146104a4575f80fd5b8063395093511461037a57806342cde4e8146103995780635342acb4146103ae57806359b107b9146103dc578063694e80c3146103f1575f80fd5b80631a861d26116102065780631a861d26146102ed57806323b872dd1461030257806328d6793814610321578063313ce5671461034057806332cb6b0c1461035b575f80fd5b806306fdde031461024c578063095ea7b3146102765780630d4d674e146102a557806311877c17146102bb57806318160ddd146102cf575f80fd5b3661024857005b5f80fd5b348015610257575f80fd5b50610260610713565b60405161026d91906115ce565b60405180910390f35b348015610281575f80fd5b5061029561029036600461162d565b6107a3565b604051901515815260200161026d565b3480156102b0575f80fd5b506102b96107bc565b005b3480156102c6575f80fd5b506102b96107df565b3480156102da575f80fd5b506002545b60405190815260200161026d565b3480156102f8575f80fd5b506102df60145481565b34801561030d575f80fd5b5061029561031c366004611657565b6109be565b34801561032c575f80fd5b506102b961033b366004611695565b6109e1565b34801561034b575f80fd5b506040516012815260200161026d565b348015610366575f80fd5b506102df6b019d971e4fe8401e7400000081565b348015610385575f80fd5b5061029561039436600461162d565b610a90565b3480156103a4575f80fd5b506102df60135481565b3480156103b9575f80fd5b506102956103c83660046116d0565b60066020525f908152604090205460ff1681565b3480156103e7575f80fd5b506102df600d5481565b3480156103fc575f80fd5b506102b961040b3660046116f2565b610ab1565b34801561041b575f80fd5b506102df600e5481565b348015610430575f80fd5b506102df61043f3660046116d0565b6001600160a01b03165f9081526020819052604090205490565b348015610464575f80fd5b506102b9610b8c565b348015610478575f80fd5b50600b5461048c906001600160a01b031681565b6040516001600160a01b03909116815260200161026d565b3480156104af575f80fd5b506102956104be3660046116d0565b60076020525f908152604090205460ff1681565b3480156104dd575f80fd5b506102df60115481565b3480156104f2575f80fd5b5060085461048c906001600160a01b031681565b348015610511575f80fd5b506102b96105203660046116f2565b610b9d565b348015610530575f80fd5b506005546001600160a01b031661048c565b34801561054d575f80fd5b506102b961055c3660046116f2565b610c10565b34801561056c575f80fd5b50610260610c7b565b348015610580575f80fd5b506102df600f5481565b348015610595575f80fd5b506102956105a436600461162d565b610c8a565b3480156105b4575f80fd5b506102df600c5481565b3480156105c9575f80fd5b506102956105d836600461162d565b610d04565b3480156105e8575f80fd5b50600a5461048c906001600160a01b031681565b348015610607575f80fd5b506102b96106163660046116f2565b610d11565b348015610626575f80fd5b506102df60125481565b34801561063b575f80fd5b506102b961064a3660046116f2565b610d1e565b34801561065a575f80fd5b506102df610669366004611709565b610d89565b348015610679575f80fd5b506102df60105481565b34801561068e575f80fd5b506102b961069d3660046116d0565b610db3565b3480156106ad575f80fd5b506102b9610ddd565b3480156106c1575f80fd5b506102b96106d0366004611695565b610e51565b3480156106e0575f80fd5b506102b96106ef3660046116d0565b610eef565b3480156106ff575f80fd5b5060095461048c906001600160a01b031681565b60606003805461072290611735565b80601f016020809104026020016040519081016040528092919081815260200182805461074e90611735565b80156107995780601f1061077057610100808354040283529160200191610799565b820191905f5260205f20905b81548152906001019060200180831161077c57829003601f168201915b5050505050905090565b5f336107b0818585610f68565b60019150505b92915050565b6107c461108b565b6009546107dd9030906001600160a01b03165f19610f68565b565b6107e761108b565b6015805460ff19166001179055305f9081526020818152604080832054815160028082526060820184529194939092908301908036833701905050905030815f815181106108375761083761176d565b6001600160a01b039283166020918202929092010152600a548251911690829060019081106108685761086861176d565b6001600160a01b03928316602091820292909201015260095460405163791ac94760e01b815291169063791ac947906108ad9085905f90869030904290600401611781565b5f604051808303815f87803b1580156108c4575f80fd5b505af11580156108d6573d5f803e3d5ffd5b50506012544794509150505f8190036108ed575060015b5f81601254856108fd9190611804565b610907919061181b565b5f6012819055600b5460405192935090916001600160a01b039091169083908381818185875af1925050503d805f811461095c576040519150601f19603f3d011682016040523d82523d5f602084013e610961565b606091505b50509050806109ad57600b546040518381526001600160a01b03909116907f11e717e1448fb29602b166d1efdb1695d9c5e1160a8001f0a431532ca6d154499060200160405180910390a25b50506015805460ff19169055505050565b5f336109cb8582856110e5565b6109d685858561115d565b506001949350505050565b6109e961108b565b6001600160a01b0382165f9081526007602052604090205481151560ff909116151503610a315760405162461bcd60e51b8152600401610a289061183a565b60405180910390fd5b6001600160a01b0382165f81815260076020908152604091829020805460ff191685151590811790915591519182527f55b60110f970be54878d8bfe021d5cd0772df53f2e15bb8207e0f4c890c950ea91015b60405180910390a25050565b5f336107b0818585610aa28383610d89565b610aac9190611880565b610f68565b610ab961108b565b610ad0600a6b019d971e4fe8401e7400000061181b565b8110610b1e5760405162461bcd60e51b815260206004820152601c60248201527f43616e742062652061626f766520313025206d617820737570706c79000000006044820152606401610a28565b601381905560408051818152601a818301527f4e657720546872657368686f6c64207761732073657420746f3a00000000000060608201526020810183905290517f99868de4f7dff0fc73bf078aff5cff658eda3bf0e4d4228c7ec6374ed28e94b39181900360800190a150565b610b9461108b565b6107dd5f611403565b610ba561108b565b80600a811115610bc8576040516356fd1bbb60e11b815260040160405180910390fd5b6010829055601181905560408051828152602081018490527f1d012236dcb372695396ee30fb9bd4ac5a847cf7d817acec3965e2d1eb37db9e91015b60405180910390a15050565b610c1861108b565b80600a811115610c3b5760405163348fa3c160e11b815260040160405180910390fd5b600e829055600f81905560408051828152602081018490527f125b37650f21d088600cef1223439f6a8bd70800debfd486c503a8a2d19d4b019101610c04565b60606004805461072290611735565b5f3381610c978286610d89565b905083811015610cf75760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a28565b6109d68286868403610f68565b5f336107b081858561115d565b610d1961108b565b601455565b610d2661108b565b80600a811115610d4957604051635ad1ab2d60e01b815260040160405180910390fd5b600c829055600d81905560408051828152602081018490527f5fcc0eea159d45a3b8d481be746c9beed251431a542a5fed4484be37ab783e8d9101610c04565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b610dbb61108b565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b610de561108b565b60405147905f90339083908381818185875af1925050503d805f8114610e26576040519150601f19603f3d011682016040523d82523d5f602084013e610e2b565b606091505b5050905080610e4d57604051634e4559c560e01b815260040160405180910390fd5b5050565b610e5961108b565b6001600160a01b0382165f9081526006602052604090205481151560ff909116151503610e985760405162461bcd60e51b8152600401610a289061183a565b6001600160a01b0382165f81815260066020908152604091829020805460ff191685151590811790915591519182527f926aa5b668417cf93f5146a62276c847038f033b1ec9452fef4a3297036d44529101610a84565b610ef761108b565b6001600160a01b038116610f5c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a28565b610f6581611403565b50565b6001600160a01b038316610fca5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a28565b6001600160a01b03821661102b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a28565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6005546001600160a01b031633146107dd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a28565b5f6110f08484610d89565b90505f198114611157578181101561114a5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610a28565b6111578484848403610f68565b50505050565b6001600160a01b0383166111835760405162461bcd60e51b8152600401610a2890611893565b6001600160a01b0382166111a95760405162461bcd60e51b8152600401610a28906118d8565b6001600160a01b0383165f908152600760209081526040808320546013543085529284905292205460155460ff938416939190921091161580156111ea5750805b80156111f4575081155b801561121857506001600160a01b0385165f9081526006602052604090205460ff16155b801561123c57506001600160a01b0384165f9081526006602052604090205460ff16155b15611249576112496107e7565b6001600160a01b0385165f9081526006602052604090205460ff1615801561128957506001600160a01b0384165f9081526006602052604090205460ff16155b156113f1576014548311156112e05760405162461bcd60e51b815260206004820152601d60248201527f4d6f7265207468616e206d6178206973206e6f7420616c6c6f776564210000006044820152606401610a28565b6001600160a01b0384165f9081526007602052604081205460ff169083801561130a57505f600d54115b15611350576064600d548661131f9190611804565b611329919061181b565b9050611335818661191b565b945061134081611454565b61134b873083611486565b6113ee565b81801561135e57505f600f54115b15611394576064600f54866113739190611804565b61137d919061181b565b9050611389818661191b565b9450611340816115ae565b811580156113a0575083155b80156113ad57505f601154115b156113ee576064601154866113c29190611804565b6113cc919061181b565b90506113d8818661191b565b94506113e3816115be565b6113ee873083611486565b50505b6113fc858585611486565b5050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b600d54600c546114649083611804565b61146e919061181b565b60125f82825461147e9190611880565b909155505050565b6001600160a01b0383166114ac5760405162461bcd60e51b8152600401610a2890611893565b6001600160a01b0382166114d25760405162461bcd60e51b8152600401610a28906118d8565b6001600160a01b0383165f90815260208190526040902054818110156115495760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a28565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3611157565b600f54600e546114649083611804565b6011546010546114649083611804565b5f6020808352835180828501525f5b818110156115f9578581018301518582016040015282016115dd565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610f65575f80fd5b5f806040838503121561163e575f80fd5b823561164981611619565b946020939093013593505050565b5f805f60608486031215611669575f80fd5b833561167481611619565b9250602084013561168481611619565b929592945050506040919091013590565b5f80604083850312156116a6575f80fd5b82356116b181611619565b9150602083013580151581146116c5575f80fd5b809150509250929050565b5f602082840312156116e0575f80fd5b81356116eb81611619565b9392505050565b5f60208284031215611702575f80fd5b5035919050565b5f806040838503121561171a575f80fd5b823561172581611619565b915060208301356116c581611619565b600181811c9082168061174957607f821691505b60208210810361176757634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156117cf5784516001600160a01b0316835293830193918301916001016117aa565b50506001600160a01b03969096166060850152505050608001529392505050565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176107b6576107b66117f0565b5f8261183557634e487b7160e01b5f52601260045260245ffd5b500490565b60208082526026908201527f5468652077616c6c657420616c72656164792068617320746861742076616c7560408201526565207365742160d01b606082015260800190565b808201808211156107b6576107b66117f0565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b818103818111156107b6576107b66117f056fea2646970667358221220a01fe6e36c7a19f8874cd83c24ba26b50a3ddb23cd2dadfca9e43b862b64637f64736f6c63430008150033
Deployed Bytecode Sourcemap
29107:8398:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6310:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8670:201;;;;;;;;;;-1:-1:-1;8670:201:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;8670:201:0;1023:187:1;36825:131:0;;;;;;;;;;;;;:::i;:::-;;33279:899;;;;;;;;;;;;;:::i;7439:108::-;;;;;;;;;;-1:-1:-1;7527:12:0;;7439:108;;;1361:25:1;;;1349:2;1334:18;7439:108:0;1215:177:1;29756:34:0;;;;;;;;;;;;;;;;9451:261;;;;;;;;;;-1:-1:-1;9451:261:0;;;;;:::i;:::-;;:::i;35360:218::-;;;;;;;;;;-1:-1:-1;35360:218:0;;;;;:::i;:::-;;:::i;7281:93::-;;;;;;;;;;-1:-1:-1;7281:93:0;;7364:2;2421:36:1;;2409:2;2394:18;7281:93:0;2279:184:1;29799:51:0;;;;;;;;;;;;29833:17;29799:51;;10121:238;;;;;;;;;;-1:-1:-1;10121:238:0;;;;;:::i;:::-;;:::i;29716:33::-;;;;;;;;;;;;;;;;29160:49;;;;;;;;;;-1:-1:-1;29160:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;29465:27;;;;;;;;;;;;;;;;36964:304;;;;;;;;;;-1:-1:-1;36964:304:0;;;;;:::i;:::-;;:::i;29503:29::-;;;;;;;;;;;;;;;;7610:127;;;;;;;;;;-1:-1:-1;7610:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;7711:18:0;7684:7;7711:18;;;;;;;;;;;;7610:127;19095:103;;;;;;;;;;;;;:::i;29375:38::-;;;;;;;;;;-1:-1:-1;29375:38:0;;;;-1:-1:-1;;;;;29375:38:0;;;;;;-1:-1:-1;;;;;3085:32:1;;;3067:51;;3055:2;3040:18;29375:38:0;2905:219:1;29224:36:0;;;;;;;;;;-1:-1:-1;29224:36:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;29619:32;;;;;;;;;;;;;;;;29269:30;;;;;;;;;;-1:-1:-1;29269:30:0;;;;-1:-1:-1;;;;;29269:30:0;;;36224:358;;;;;;;;;;-1:-1:-1;36224:358:0;;;;;:::i;:::-;;:::i;18454:87::-;;;;;;;;;;-1:-1:-1;18527:6:0;;-1:-1:-1;;;;;18527:6:0;18454:87;;35890:322;;;;;;;;;;-1:-1:-1;35890:322:0;;;;;:::i;:::-;;:::i;6529:104::-;;;;;;;;;;;;;:::i;29539:28::-;;;;;;;;;;;;;;;;10862:436;;;;;;;;;;-1:-1:-1;10862:436:0;;;;;:::i;:::-;;:::i;29430:28::-;;;;;;;;;;;;;;;;7943:193;;;;;;;;;;-1:-1:-1;7943:193:0;;;;;:::i;:::-;;:::i;29347:19::-;;;;;;;;;;-1:-1:-1;29347:19:0;;;;-1:-1:-1;;;;;29347:19:0;;;37278:89;;;;;;;;;;-1:-1:-1;37278:89:0;;;;;:::i;:::-;;:::i;29667:32::-;;;;;;;;;;;;;;;;35586:296;;;;;;;;;;-1:-1:-1;35586:296:0;;;;;:::i;:::-;;:::i;8199:151::-;;;;;;;;;;-1:-1:-1;8199:151:0;;;;;:::i;:::-;;:::i;29577:33::-;;;;;;;;;;;;;;;;37375:117;;;;;;;;;;-1:-1:-1;37375:117:0;;;;;:::i;:::-;;:::i;36590:225::-;;;;;;;;;;;;;:::i;35080:272::-;;;;;;;;;;-1:-1:-1;35080:272:0;;;;;:::i;:::-;;:::i;19353:201::-;;;;;;;;;;-1:-1:-1;19353:201:0;;;;;:::i;:::-;;:::i;29306:32::-;;;;;;;;;;-1:-1:-1;29306:32:0;;;;-1:-1:-1;;;;;29306:32:0;;;6310:100;6364:13;6397:5;6390:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6310:100;:::o;8670:201::-;8753:4;4196:10;8809:32;4196:10;8825:7;8834:6;8809:8;:32::i;:::-;8859:4;8852:11;;;8670:201;;;;;:::o;36825:131::-;18340:13;:11;:13::i;:::-;36921:6:::1;::::0;36889:59:::1;::::0;36906:4:::1;::::0;-1:-1:-1;;;;;36921:6:0::1;-1:-1:-1::0;;36889:8:0::1;:59::i;:::-;36825:131::o:0;33279:899::-;18340:13;:11;:13::i;:::-;33350:8:::1;:15:::0;;-1:-1:-1;;33350:15:0::1;33361:4;33350:15;::::0;;33410:4:::1;-1:-1:-1::0;7711:18:0;;;;;;;;;;;;33453:16;;33467:1:::1;33453:16:::0;;;;;::::1;::::0;;7711:18;;-1:-1:-1;33453:16:0;;;;::::1;::::0;7711:18;33453:16:::1;::::0;::::1;;::::0;-1:-1:-1;33453:16:0::1;33429:40;;33498:4;33480;33485:1;33480:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;33480:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;33524:4:::1;::::0;33514:7;;33524:4;::::1;::::0;33514;;33524;;33514:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;33514:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;33541:6:::1;::::0;:182:::1;::::0;-1:-1:-1;;;33541:182:0;;:6;::::1;::::0;:57:::1;::::0;:182:::1;::::0;33613:6;;33541::::1;::::0;33650:4;;33677::::1;::::0;33697:15:::1;::::0;33541:182:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;33796:20:0::1;::::0;33745:21:::1;::::0;-1:-1:-1;33796:20:0;-1:-1:-1;;33777:16:0::1;33832::::0;;;33828:37:::1;;-1:-1:-1::0;33864:1:0::1;33828:37;33878:20;33935:11;33911:20;;33902:6;:29;;;;:::i;:::-;33901:45;;;;:::i;:::-;33982:1;33959:20;:24:::0;;;34022:15:::1;::::0;:48:::1;::::0;33878:68;;-1:-1:-1;33982:1:0;;-1:-1:-1;;;;;34022:15:0;;::::1;::::0;33878:68;;33982:1;34022:48;33982:1;34022:48;33878:68;34022:15;:48:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34006:64;;;34086:4;34081:62;;34110:15;::::0;34097:46:::1;::::0;1361:25:1;;;-1:-1:-1;;;;;34110:15:0;;::::1;::::0;34097:46:::1;::::0;1349:2:1;1334:18;34097:46:0::1;;;;;;;34081:62;-1:-1:-1::0;;34154:8:0::1;:16:::0;;-1:-1:-1;;34154:16:0::1;::::0;;-1:-1:-1;;;33279:899:0:o;9451:261::-;9548:4;4196:10;9606:38;9622:4;4196:10;9637:6;9606:15;:38::i;:::-;9655:27;9665:4;9671:2;9675:6;9655:9;:27::i;:::-;-1:-1:-1;9700:4:0;;9451:261;-1:-1:-1;;;;9451:261:0:o;35360:218::-;18340:13;:11;:13::i;:::-;-1:-1:-1;;;;;35439:9:0;::::1;;::::0;;;:4:::1;:9;::::0;;;;;:19;::::1;;:9;::::0;;::::1;:19;;::::0;35431:70:::1;;;;-1:-1:-1::0;;;35431:70:0::1;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1::0;;;;;35512:9:0;::::1;;::::0;;;:4:::1;:9;::::0;;;;;;;;:18;;-1:-1:-1;;35512:18:0::1;::::0;::::1;;::::0;;::::1;::::0;;;35546:24;;1163:41:1;;;35546:24:0::1;::::0;1136:18:1;35546:24:0::1;;;;;;;;35360:218:::0;;:::o;10121:238::-;10209:4;4196:10;10265:64;4196:10;10281:7;10318:10;10290:25;4196:10;10281:7;10290:9;:25::i;:::-;:38;;;;:::i;:::-;10265:8;:64::i;36964:304::-;18340:13;:11;:13::i;:::-;37077:15:::1;37090:2;29833:17;37077:15;:::i;:::-;37061:13;:31;37039:109;;;::::0;-1:-1:-1;;;37039:109:0;;7566:2:1;37039:109:0::1;::::0;::::1;7548:21:1::0;7605:2;7585:18;;;7578:30;7644;7624:18;;;7617:58;7692:18;;37039:109:0::1;7364:352:1::0;37039:109:0::1;37159:9;:25:::0;;;37200:60:::1;::::0;;7933:21:1;;;7990:2;7970:18;;;7963:30;8029:28;8024:2;8009:18;;8002:56;8125:4;8110:20;;8103:36;;;37200:60:0;;::::1;::::0;;;;8090:3:1;37200:60:0;;::::1;36964:304:::0;:::o;19095:103::-;18340:13;:11;:13::i;:::-;19160:30:::1;19187:1;19160:18;:30::i;36224:358::-:0;18340:13;:11;:13::i;:::-;36337:12;36382:2:::1;36364:20:::0;::::1;36360:59;;;36393:26;;-1:-1:-1::0;;;36393:26:0::1;;;;;;;;;;;36360:59;36432:17;:32:::0;;;36475:16:::1;:34:::0;;;36527:47:::1;::::0;;8324:25:1;;;8380:2;8365:18;;8358:34;;;36527:47:0::1;::::0;8297:18:1;36527:47:0::1;;;;;;;;36303:279;36224:358:::0;:::o;35890:322::-;18340:13;:11;:13::i;:::-;35995:12;36036:2:::1;36022:16:::0;::::1;36018:51;;;36047:22;;-1:-1:-1::0;;;36047:22:0::1;;;;;;;;;;;36018:51;36082:13;:28:::0;;;36121:12:::1;:26:::0;;;36165:39:::1;::::0;;8324:25:1;;;8380:2;8365:18;;8358:34;;;36165:39:0::1;::::0;8297:18:1;36165:39:0::1;8150:248:1::0;6529:104:0;6585:13;6618:7;6611:14;;;;;:::i;10862:436::-;10955:4;4196:10;10955:4;11038:25;4196:10;11055:7;11038:9;:25::i;:::-;11011:52;;11102:15;11082:16;:35;;11074:85;;;;-1:-1:-1;;;11074:85:0;;8605:2:1;11074:85:0;;;8587:21:1;8644:2;8624:18;;;8617:30;8683:34;8663:18;;;8656:62;-1:-1:-1;;;8734:18:1;;;8727:35;8779:19;;11074:85:0;8403:401:1;11074:85:0;11195:60;11204:5;11211:7;11239:15;11220:16;:34;11195:8;:60::i;7943:193::-;8022:4;4196:10;8078:28;4196:10;8095:2;8099:6;8078:9;:28::i;37278:89::-;18340:13;:11;:13::i;:::-;37344:8:::1;:15:::0;37278:89::o;35586:296::-;18340:13;:11;:13::i;:::-;35674:12;35714:2:::1;35701:15:::0;::::1;35697:49;;;35725:21;;-1:-1:-1::0;;;35725:21:0::1;;;;;;;;;;;35697:49;35759:12;:27:::0;;;35797:11:::1;:24:::0;;;35837:37:::1;::::0;;8324:25:1;;;8380:2;8365:18;;8358:34;;;35837:37:0::1;::::0;8297:18:1;35837:37:0::1;8150:248:1::0;8199:151:0;-1:-1:-1;;;;;8315:18:0;;;8288:7;8315:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8199:151::o;37375:117::-;18340:13;:11;:13::i;:::-;37454:15:::1;:32:::0;;-1:-1:-1;;;;;;37454:32:0::1;-1:-1:-1::0;;;;;37454:32:0;;;::::1;::::0;;;::::1;::::0;;37375:117::o;36590:225::-;18340:13;:11;:13::i;:::-;36711:44:::1;::::0;36663:21:::1;::::0;36648:12:::1;::::0;36719:10:::1;::::0;36663:21;;36648:12;36711:44;36648:12;36711:44;36663:21;36719:10;36711:44:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36695:60;;;36771:4;36766:41;;36784:23;;-1:-1:-1::0;;;36784:23:0::1;;;;;;;;;;;36766:41;36637:178;;36590:225::o:0;35080:272::-;18340:13;:11;:13::i;:::-;-1:-1:-1;;;;;35174:24:0;::::1;;::::0;;;:17:::1;:24;::::0;;;;;:34;::::1;;:24;::::0;;::::1;:34;;::::0;35166:85:::1;;;;-1:-1:-1::0;;;35166:85:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;35262:24:0;::::1;;::::0;;;:17:::1;:24;::::0;;;;;;;;:33;;-1:-1:-1;;35262:33:0::1;::::0;::::1;;::::0;;::::1;::::0;;;35311;;1163:41:1;;;35311:33:0::1;::::0;1136:18:1;35311:33:0::1;1023:187:1::0;19353:201:0;18340:13;:11;:13::i;:::-;-1:-1:-1;;;;;19442:22:0;::::1;19434:73;;;::::0;-1:-1:-1;;;19434:73:0;;9011:2:1;19434:73:0::1;::::0;::::1;8993:21:1::0;9050:2;9030:18;;;9023:30;9089:34;9069:18;;;9062:62;-1:-1:-1;;;9140:18:1;;;9133:36;9186:19;;19434:73:0::1;8809:402:1::0;19434:73:0::1;19518:28;19537:8;19518:18;:28::i;:::-;19353:201:::0;:::o;14855:346::-;-1:-1:-1;;;;;14957:19:0;;14949:68;;;;-1:-1:-1;;;14949:68:0;;9418:2:1;14949:68:0;;;9400:21:1;9457:2;9437:18;;;9430:30;9496:34;9476:18;;;9469:62;-1:-1:-1;;;9547:18:1;;;9540:34;9591:19;;14949:68:0;9216:400:1;14949:68:0;-1:-1:-1;;;;;15036:21:0;;15028:68;;;;-1:-1:-1;;;15028:68:0;;9823:2:1;15028:68:0;;;9805:21:1;9862:2;9842:18;;;9835:30;9901:34;9881:18;;;9874:62;-1:-1:-1;;;9952:18:1;;;9945:32;9994:19;;15028:68:0;9621:398:1;15028:68:0;-1:-1:-1;;;;;15109:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;15161:32;;1361:25:1;;;15161:32:0;;1334:18:1;15161:32:0;;;;;;;14855:346;;;:::o;18619:132::-;18527:6;;-1:-1:-1;;;;;18527:6:0;4196:10;18683:23;18675:68;;;;-1:-1:-1;;;18675:68:0;;10226:2:1;18675:68:0;;;10208:21:1;;;10245:18;;;10238:30;10304:34;10284:18;;;10277:62;10356:18;;18675:68:0;10024:356:1;15492:419:0;15593:24;15620:25;15630:5;15637:7;15620:9;:25::i;:::-;15593:52;;-1:-1:-1;;15660:16:0;:37;15656:248;;15742:6;15722:16;:26;;15714:68;;;;-1:-1:-1;;;15714:68:0;;10587:2:1;15714:68:0;;;10569:21:1;10626:2;10606:18;;;10599:30;10665:31;10645:18;;;10638:59;10714:18;;15714:68:0;10385:353:1;15714:68:0;15826:51;15835:5;15842:7;15870:6;15851:16;:25;15826:8;:51::i;:::-;15582:329;15492:419;;;:::o;31199:1652::-;-1:-1:-1;;;;;31328:18:0;;31320:68;;;;-1:-1:-1;;;31320:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;31407:16:0;;31399:64;;;;-1:-1:-1;;;31399:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;31487:10:0;;31474;31487;;;:4;:10;;;;;;;;;31550:9;;31541:4;7711:18;;;;;;;;;31603:8;;31487:10;;;;;-1:-1:-1;;;;;31603:8:0;31602:9;:33;;;;;31628:7;31602:33;:56;;;;;31653:5;31652:6;31602:56;:97;;;;-1:-1:-1;;;;;;31676:23:0;;;;;;:17;:23;;;;;;;;31675:24;31602:97;:136;;;;-1:-1:-1;;;;;;31717:21:0;;;;;;:17;:21;;;;;;;;31716:22;31602:136;31584:215;;;31765:22;:20;:22::i;:::-;-1:-1:-1;;;;;31816:23:0;;;;;;:17;:23;;;;;;;;31815:24;:50;;;;-1:-1:-1;;;;;;31844:21:0;;;;;;:17;:21;;;;;;;;31843:22;31815:50;31811:977;;;31894:8;;31886:6;:16;;31878:57;;;;-1:-1:-1;;;31878:57:0;;11755:2:1;31878:57:0;;;11737:21:1;11794:2;11774:18;;;11767:30;11833:31;11813:18;;;11806:59;11882:18;;31878:57:0;11553:353:1;31878:57:0;-1:-1:-1;;;;;31970:8:0;;31956:11;31970:8;;;:4;:8;;;;;;;;;32020:5;:24;;;;;32043:1;32029:11;;:15;32020:24;32016:761;;;29892:3;32081:11;;32072:6;:20;;;;:::i;:::-;32071:35;;;;:::i;:::-;32065:41;-1:-1:-1;32125:13:0;32065:41;32125:13;;:::i;:::-;;;32157:18;32171:3;32157:13;:18::i;:::-;32194:41;32210:4;32224;32231:3;32194:15;:41::i;:::-;32016:761;;;32261:6;:26;;;;;32286:1;32271:12;;:16;32261:26;32257:520;;;29892:3;32324:12;;32315:6;:21;;;;:::i;:::-;32314:36;;;;:::i;:::-;32308:42;-1:-1:-1;32369:13:0;32308:42;32369:13;;:::i;:::-;;;32401:19;32416:3;32401:14;:19::i;32257:520::-;32520:6;32519:7;:17;;;;;32531:5;32530:6;32519:17;:41;;;;;32559:1;32540:16;;:20;32519:41;32515:262;;;29892:3;32597:16;;32588:6;:25;;;;:::i;:::-;32587:40;;;;:::i;:::-;32581:46;-1:-1:-1;32646:13:0;32581:46;32646:13;;:::i;:::-;;;32678:23;32697:3;32678:18;:23::i;:::-;32720:41;32736:4;32750;32757:3;32720:15;:41::i;:::-;31867:921;;31811:977;32810:33;32826:4;32832:2;32836:6;32810:15;:33::i;:::-;31309:1542;;31199:1652;;;:::o;19714:191::-;19807:6;;;-1:-1:-1;;;;;19824:17:0;;;-1:-1:-1;;;;;;19824:17:0;;;;;;;19857:40;;19807:6;;;19824:17;19807:6;;19857:40;;19788:16;;19857:40;19777:128;19714:191;:::o;32859:125::-;32965:11;;32949:12;;32940:21;;:6;:21;:::i;:::-;32939:37;;;;:::i;:::-;32915:20;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;;32859:125:0:o;11768:806::-;-1:-1:-1;;;;;11865:18:0;;11857:68;;;;-1:-1:-1;;;11857:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11944:16:0;;11936:64;;;;-1:-1:-1;;;11936:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12086:15:0;;12064:19;12086:15;;;;;;;;;;;12120:21;;;;12112:72;;;;-1:-1:-1;;;12112:72:0;;12246:2:1;12112:72:0;;;12228:21:1;12285:2;12265:18;;;12258:30;12324:34;12304:18;;;12297:62;-1:-1:-1;;;12375:18:1;;;12368:36;12421:19;;12112:72:0;12044:402:1;12112:72:0;-1:-1:-1;;;;;12220:15:0;;;:9;:15;;;;;;;;;;;12238:20;;;12220:38;;12438:13;;;;;;;;;;:23;;;;;;12490:26;;1361:25:1;;;12438:13:0;;12490:26;;1334:18:1;12490:26:0;;;;;;;12529:37;16511:91;32992:128;33100:12;;33083:13;;33074:22;;:6;:22;:::i;33131:140::-;33247:16;;33226:17;;33217:26;;:6;:26;:::i;14:548: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;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;1858:416::-;1923:6;1931;1984:2;1972:9;1963:7;1959:23;1955:32;1952:52;;;2000:1;1997;1990:12;1952:52;2039:9;2026:23;2058:31;2083:5;2058:31;:::i;:::-;2108:5;-1:-1:-1;2165:2:1;2150:18;;2137:32;2207:15;;2200:23;2188:36;;2178:64;;2238:1;2235;2228:12;2178:64;2261:7;2251:17;;;1858:416;;;;;:::o;2468:247::-;2527:6;2580:2;2568:9;2559:7;2555:23;2551:32;2548:52;;;2596:1;2593;2586:12;2548:52;2635:9;2622:23;2654:31;2679:5;2654:31;:::i;:::-;2704:5;2468:247;-1:-1:-1;;;2468:247:1:o;2720:180::-;2779:6;2832:2;2820:9;2811:7;2807:23;2803:32;2800:52;;;2848:1;2845;2838:12;2800:52;-1:-1:-1;2871:23:1;;2720:180;-1:-1:-1;2720:180:1:o;3568:388::-;3636:6;3644;3697:2;3685:9;3676:7;3672:23;3668:32;3665:52;;;3713:1;3710;3703:12;3665:52;3752:9;3739:23;3771:31;3796:5;3771:31;:::i;:::-;3821:5;-1:-1:-1;3878:2:1;3863:18;;3850:32;3891:33;3850:32;3891:33;:::i;4456:380::-;4535:1;4531:12;;;;4578;;;4599:61;;4653:4;4645:6;4641:17;4631:27;;4599:61;4706:2;4698:6;4695:14;4675:18;4672:38;4669:161;;4752:10;4747:3;4743:20;4740:1;4733:31;4787:4;4784:1;4777:15;4815:4;4812:1;4805:15;4669:161;;4456:380;;;:::o;4973:127::-;5034:10;5029:3;5025:20;5022:1;5015:31;5065:4;5062:1;5055:15;5089:4;5086:1;5079:15;5105:980;5367:4;5415:3;5404:9;5400:19;5446:6;5435:9;5428:25;5472:2;5510:6;5505:2;5494:9;5490:18;5483:34;5553:3;5548:2;5537:9;5533:18;5526:31;5577:6;5612;5606:13;5643:6;5635;5628:22;5681:3;5670:9;5666:19;5659:26;;5720:2;5712:6;5708:15;5694:29;;5741:1;5751:195;5765:6;5762:1;5759:13;5751:195;;;5830:13;;-1:-1:-1;;;;;5826:39:1;5814:52;;5921:15;;;;5886:12;;;;5862:1;5780:9;5751:195;;;-1:-1:-1;;;;;;;6002:32:1;;;;5997:2;5982:18;;5975:60;-1:-1:-1;;;6066:3:1;6051:19;6044:35;5963:3;5105:980;-1:-1:-1;;;5105:980:1:o;6090:127::-;6151:10;6146:3;6142:20;6139:1;6132:31;6182:4;6179:1;6172:15;6206:4;6203:1;6196:15;6222:168;6295:9;;;6326;;6343:15;;;6337:22;;6323:37;6313:71;;6364:18;;:::i;6395:217::-;6435:1;6461;6451:132;;6505:10;6500:3;6496:20;6493:1;6486:31;6540:4;6537:1;6530:15;6568:4;6565:1;6558:15;6451:132;-1:-1:-1;6597:9:1;;6395:217::o;6827:402::-;7029:2;7011:21;;;7068:2;7048:18;;;7041:30;7107:34;7102:2;7087:18;;7080:62;-1:-1:-1;;;7173:2:1;7158:18;;7151:36;7219:3;7204:19;;6827:402::o;7234:125::-;7299:9;;;7320:10;;;7317:36;;;7333:18;;:::i;10743:401::-;10945:2;10927:21;;;10984:2;10964:18;;;10957:30;11023:34;11018:2;11003:18;;10996:62;-1:-1:-1;;;11089:2:1;11074:18;;11067:35;11134:3;11119:19;;10743:401::o;11149:399::-;11351:2;11333:21;;;11390:2;11370:18;;;11363:30;11429:34;11424:2;11409:18;;11402:62;-1:-1:-1;;;11495:2:1;11480:18;;11473:33;11538:3;11523:19;;11149:399::o;11911:128::-;11978:9;;;11999:11;;;11996:37;;;12013:18;;:::i
Swarm Source
ipfs://a01fe6e36c7a19f8874cd83c24ba26b50a3ddb23cd2dadfca9e43b862b64637f
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 25 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ 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.