More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 71 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Deploy Liquidity | 13187892 | 1203 days ago | IN | 0 ETH | 0.4373707 | ||||
Set Passive Toke... | 13187610 | 1203 days ago | IN | 0 ETH | 0.00949846 | ||||
Transfer | 13110980 | 1215 days ago | IN | 0.002822 ETH | 0.00105275 | ||||
Transfer | 13109333 | 1215 days ago | IN | 0.00252 ETH | 0.00348763 | ||||
Deposit Eth | 13096384 | 1217 days ago | IN | 0.15 ETH | 0.01175091 | ||||
Deposit Eth | 13096148 | 1217 days ago | IN | 4.63 ETH | 0.01369836 | ||||
Deposit Eth | 13096091 | 1217 days ago | IN | 1 ETH | 0.01194306 | ||||
Deposit Eth | 13095537 | 1217 days ago | IN | 0.2 ETH | 0.01783543 | ||||
Deposit Eth | 13095148 | 1217 days ago | IN | 0.2 ETH | 0.01143667 | ||||
Deposit Eth | 13092955 | 1218 days ago | IN | 0.546 ETH | 0.00893404 | ||||
Deposit Eth | 13092871 | 1218 days ago | IN | 0.01 ETH | 0.00395452 | ||||
Deposit Eth | 13092845 | 1218 days ago | IN | 0.01 ETH | 0.00375113 | ||||
Deposit Eth | 13092845 | 1218 days ago | IN | 0.01 ETH | 0.00788471 | ||||
Deposit Eth | 13092771 | 1218 days ago | IN | 0.415 ETH | 0.00619962 | ||||
Deposit Eth | 13092615 | 1218 days ago | IN | 0.32 ETH | 0.00755161 | ||||
Deposit Eth | 13092333 | 1218 days ago | IN | 0.40302637 ETH | 0.00353109 | ||||
Deposit Eth | 13092263 | 1218 days ago | IN | 0.32 ETH | 0.01129696 | ||||
Deposit Eth | 13091033 | 1218 days ago | IN | 0.0621 ETH | 0.00898975 | ||||
Deposit Eth | 13089953 | 1218 days ago | IN | 2.2 ETH | 0.01493937 | ||||
Deposit Eth | 13089086 | 1218 days ago | IN | 0.01 ETH | 0.00888217 | ||||
Deposit Eth | 13086469 | 1219 days ago | IN | 0.3 ETH | 0.00282034 | ||||
Deposit Eth | 13085945 | 1219 days ago | IN | 0.04 ETH | 0.00423305 | ||||
Deposit Eth | 13085713 | 1219 days ago | IN | 0.2 ETH | 0.00719705 | ||||
Deposit Eth | 13083489 | 1219 days ago | IN | 0.14 ETH | 0.00646626 | ||||
Deposit Eth | 13079063 | 1220 days ago | IN | 1.2 ETH | 0.00789749 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
13187892 | 1203 days ago | 27.73192455 ETH | ||||
13096384 | 1217 days ago | 0.0225 ETH | ||||
13096148 | 1217 days ago | 0.6945 ETH | ||||
13096091 | 1217 days ago | 0.15 ETH | ||||
13095537 | 1217 days ago | 0.03 ETH | ||||
13095148 | 1217 days ago | 0.03 ETH | ||||
13092955 | 1218 days ago | 0.0819 ETH | ||||
13092871 | 1218 days ago | 0.0015 ETH | ||||
13092845 | 1218 days ago | 0.0015 ETH | ||||
13092845 | 1218 days ago | 0.0015 ETH | ||||
13092771 | 1218 days ago | 0.06225 ETH | ||||
13092615 | 1218 days ago | 0.048 ETH | ||||
13092333 | 1218 days ago | 0.06045395 ETH | ||||
13092263 | 1218 days ago | 0.048 ETH | ||||
13091033 | 1218 days ago | 0.009315 ETH | ||||
13089953 | 1218 days ago | 0.33 ETH | ||||
13089086 | 1218 days ago | 0.0015 ETH | ||||
13086469 | 1219 days ago | 0.045 ETH | ||||
13085945 | 1219 days ago | 0.006 ETH | ||||
13085713 | 1219 days ago | 0.03 ETH | ||||
13083489 | 1219 days ago | 0.021 ETH | ||||
13079063 | 1220 days ago | 0.18 ETH | ||||
13075197 | 1221 days ago | 0.01605 ETH | ||||
13075126 | 1221 days ago | 0.00315 ETH | ||||
13073006 | 1221 days ago | 0.15 ETH |
Loading...
Loading
Contract Name:
Presale
Compiler Version
v0.8.5+commit.a4f2e591
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-08-13 */ // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @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 `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, 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 `sender` to `recipient` 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 sender, address recipient, uint256 amount) external returns (bool); /** * @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); } // File: @openzeppelin/contracts/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) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } // File: @openzeppelin/contracts/utils/Strings.sol pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant alphabet = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = alphabet[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } } // File: @openzeppelin/contracts/utils/introspection/IERC165.sol pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File: @openzeppelin/contracts/utils/introspection/ERC165.sol pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } // File: @openzeppelin/contracts/access/AccessControl.sol pragma solidity ^0.8.0; /** * @dev External interface of AccessControl declared to support ERC165 detection. */ interface IAccessControl { function hasRole(bytes32 role, address account) external view returns (bool); function getRoleAdmin(bytes32 role) external view returns (bytes32); function grantRole(bytes32 role, address account) external; function revokeRole(bytes32 role, address account) external; function renounceRole(bytes32 role, address account) external; } /** * @dev Contract module that allows children to implement role-based access * control mechanisms. This is a lightweight version that doesn't allow enumerating role * members except through off-chain means by accessing the contract event logs. Some * applications may benefit from on-chain enumerability, for those cases see * {AccessControlEnumerable}. * * Roles are referred to by their `bytes32` identifier. These should be exposed * in the external API and be unique. The best way to achieve this is by * using `public constant` hash digests: * * ``` * bytes32 public constant MY_ROLE = keccak256("MY_ROLE"); * ``` * * Roles can be used to represent a set of permissions. To restrict access to a * function call, use {hasRole}: * * ``` * function foo() public { * require(hasRole(MY_ROLE, msg.sender)); * ... * } * ``` * * Roles can be granted and revoked dynamically via the {grantRole} and * {revokeRole} functions. Each role has an associated admin role, and only * accounts that have a role's admin role can call {grantRole} and {revokeRole}. * * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means * that only accounts with this role will be able to grant or revoke other * roles. More complex role relationships can be created by using * {_setRoleAdmin}. * * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to * grant and revoke this role. Extra precautions should be taken to secure * accounts that have been granted it. */ abstract contract AccessControl is Context, IAccessControl, ERC165 { struct RoleData { mapping (address => bool) members; bytes32 adminRole; } mapping (bytes32 => RoleData) private _roles; bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00; /** * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` * * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite * {RoleAdminChanged} not being emitted signaling this. * * _Available since v3.1._ */ event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole); /** * @dev Emitted when `account` is granted `role`. * * `sender` is the account that originated the contract call, an admin role * bearer except when using {_setupRole}. */ event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender); /** * @dev Emitted when `account` is revoked `role`. * * `sender` is the account that originated the contract call: * - if using `revokeRole`, it is the admin role bearer * - if using `renounceRole`, it is the role bearer (i.e. `account`) */ event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender); /** * @dev Modifier that checks that an account has a specific role. Reverts * with a standardized message including the required role. * * The format of the revert reason is given by the following regular expression: * * /^AccessControl: account (0x[0-9a-f]{20}) is missing role (0x[0-9a-f]{32})$/ * * _Available since v4.1._ */ modifier onlyRole(bytes32 role) { _checkRole(role, _msgSender()); _; } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId); } /** * @dev Returns `true` if `account` has been granted `role`. */ function hasRole(bytes32 role, address account) public view override returns (bool) { return _roles[role].members[account]; } /** * @dev Revert with a standard message if `account` is missing `role`. * * The format of the revert reason is given by the following regular expression: * * /^AccessControl: account (0x[0-9a-f]{20}) is missing role (0x[0-9a-f]{32})$/ */ function _checkRole(bytes32 role, address account) internal view { if(!hasRole(role, account)) { revert(string(abi.encodePacked( "AccessControl: account ", Strings.toHexString(uint160(account), 20), " is missing role ", Strings.toHexString(uint256(role), 32) ))); } } /** * @dev Returns the admin role that controls `role`. See {grantRole} and * {revokeRole}. * * To change a role's admin, use {_setRoleAdmin}. */ function getRoleAdmin(bytes32 role) public view override returns (bytes32) { return _roles[role].adminRole; } /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) { _grantRole(role, account); } /** * @dev Revokes `role` from `account`. * * If `account` had been granted `role`, emits a {RoleRevoked} event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) { _revokeRole(role, account); } /** * @dev Revokes `role` from the calling account. * * Roles are often managed via {grantRole} and {revokeRole}: this function's * purpose is to provide a mechanism for accounts to lose their privileges * if they are compromised (such as when a trusted device is misplaced). * * If the calling account had been granted `role`, emits a {RoleRevoked} * event. * * Requirements: * * - the caller must be `account`. */ function renounceRole(bytes32 role, address account) public virtual override { require(account == _msgSender(), "AccessControl: can only renounce roles for self"); _revokeRole(role, account); } /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. Note that unlike {grantRole}, this function doesn't perform any * checks on the calling account. * * [WARNING] * ==== * This function should only be called from the constructor when setting * up the initial roles for the system. * * Using this function in any other way is effectively circumventing the admin * system imposed by {AccessControl}. * ==== */ function _setupRole(bytes32 role, address account) internal virtual { _grantRole(role, account); } /** * @dev Sets `adminRole` as ``role``'s admin role. * * Emits a {RoleAdminChanged} event. */ function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual { emit RoleAdminChanged(role, getRoleAdmin(role), adminRole); _roles[role].adminRole = adminRole; } function _grantRole(bytes32 role, address account) private { if (!hasRole(role, account)) { _roles[role].members[account] = true; emit RoleGranted(role, account, _msgSender()); } } function _revokeRole(bytes32 role, address account) private { if (hasRole(role, account)) { _roles[role].members[account] = false; emit RoleRevoked(role, account, _msgSender()); } } } // File: @openzeppelin/contracts/security/ReentrancyGuard.sol pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor () { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and make it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } } // File: contracts/Uniswap.sol pragma solidity ^0.8.5; 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 Mint(address indexed sender, uint256 amount0, uint256 amount1); 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 mint(address to) external returns (uint256 liquidity); 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; } 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; } // File: contracts/Presale.sol pragma solidity 0.8.5; contract Presale is AccessControl, ReentrancyGuard { bytes32 public constant MANAGER = keccak256("MANAGER"); address public pasv_token; address payable internal marketing_wallet; address payable internal manager_1; address payable internal manager_2; address private uniswapV2Pair; uint8 internal constant DECIMALS = 6; uint256 internal constant ZEROES = 10**DECIMALS; uint256 internal constant TOTAL_SUPPLY = 1000000000 * 10**6 * ZEROES; // Total Allocations uint256 internal totalLiquidityAmount; uint256 internal totalMarketingAmount; // Total Tier Allocation uint256 internal totalEthTier1 = 0; uint256 internal totalEthTier2 = 0; uint256 internal totalEthTier3 = 0; // Liquidity Deployed Flag bool internal liquidityIsDeployed = false; // PASV Token Address Set Flag bool internal pasvAddressSet = false; // Total Presale Pool Amount uint256 public totalPresalePoolAmount = 75000000000000 * 10**6; // Total Liquidity Pool Amount uint256 public totalLiquidityPoolAmount = 500000000000000 * 10**6; // Track token launch date and time uint256 internal _tokenLaunchTime = 1631127600; struct Buyer { bool hasDeposited; uint256 depositedEthTier1; uint256 depositedEthTier2; uint256 depositedEthTier3; uint256 weightedBalance; bool hasClaimed; } // Track buyers and allocations mapping(address => Buyer) public presaleBuyers; address[] internal buyerAddresses; uint256 public totalAmountWithdrawn = 0; uint256 internal totalPresaleWeightedBalance = 0; constructor( address payable _manager_1, address payable _manager_2, address payable _marketing ) { _setupRole(MANAGER, _manager_1); _setupRole(MANAGER, _manager_2); marketing_wallet = _marketing; manager_1 = _manager_1; manager_2 = _manager_2; totalLiquidityAmount = 0; totalMarketingAmount = 0; } receive() external payable {} function getPresaleAmount() public view returns (uint256) { return totalPresalePoolAmount; } function getCurrentTier() public view returns (uint256) { uint256 tier1Start = 1628794800; uint256 tier1End = 1629917998; uint256 tier2Start = 1629918000; uint256 tier2End = 1630522798; uint256 tier3Start = 1630522800; uint256 tier3End = 1631127598; if (block.timestamp > tier1Start && block.timestamp < tier1End) { return 1; } else if (block.timestamp > tier2Start && block.timestamp < tier2End) { return 2; } else if (block.timestamp > tier3Start && block.timestamp < tier3End) { return 3; } else { return 4; } } function depositEth() external payable nonReentrant { // Require msg.value > 0 require(msg.value > 0); // Check mapping if they deposited already bool alreadyDeposited = presaleBuyers[msg.sender].hasDeposited; // If alreadyDeposited == false then add msg.sender to buyerAddresses if (!alreadyDeposited) { presaleBuyers[msg.sender].hasDeposited = true; // Add msg.sender to array buyerAddresses.push(msg.sender); } // Check if total marketing amount has exceeded 100 ETH threshold if (totalMarketingAmount < (100 * 10**18)) { // Allocate 15% to marketing uint256 marketingAllocation = (msg.value * 15) / 100; totalMarketingAmount += marketingAllocation; // Allocate 85% to liquidity uint256 liquidityAllocation = (msg.value * 85) / 100; totalLiquidityAmount += liquidityAllocation; // Transfer marketing allocation to marketing wallet marketing_wallet.transfer(marketingAllocation); } else { // Allocate 100% to liquidity totalLiquidityAmount += msg.value; } // Check deposited Balance on tier uint256 currentTier = getCurrentTier(); uint256 currentBalance; if (currentTier == 1) { // Check balance of tier 1 currentBalance = presaleBuyers[msg.sender].depositedEthTier1; presaleBuyers[msg.sender].depositedEthTier1 = currentBalance + msg.value; totalEthTier1 += msg.value; } else if (currentTier == 2) { // Check balance of tier 2 currentBalance = presaleBuyers[msg.sender].depositedEthTier2; presaleBuyers[msg.sender].depositedEthTier2 = currentBalance + msg.value; totalEthTier2 += msg.value; } else if (currentTier == 3) { // Check balance of tier 3 currentBalance = presaleBuyers[msg.sender].depositedEthTier3; presaleBuyers[msg.sender].depositedEthTier3 = currentBalance + msg.value; totalEthTier3 += msg.value; } else { revert("Presale not available"); } } function getDepositedEthBalance(address depositor) external view returns (uint256) { // Require msg.sender has deposited require(presaleBuyers[depositor].hasDeposited == true); uint256 tier1Deposit = presaleBuyers[depositor].depositedEthTier1; uint256 tier2Deposit = presaleBuyers[depositor].depositedEthTier2; uint256 tier3Deposit = presaleBuyers[depositor].depositedEthTier3; uint256 totalDepositedBalance = tier1Deposit + tier2Deposit + tier3Deposit; return totalDepositedBalance; } function setPassiveTokenAddress(address _pasv) external { // Only callable by admin require(hasRole(MANAGER, msg.sender)); require(_pasv != address(0)); // Set Passive Token Address pasv_token = _pasv; // Set Flag to true pasvAddressSet = true; } function deployLiquidity(uint256 tokensToBurn) external { // Only callable by admin require(hasRole(MANAGER, msg.sender)); // Check if presale is still active require(_tokenLaunchTime < block.timestamp); // Make sure that passive token address has been set require(pasvAddressSet == true); // Reference PASV token IERC20 token = IERC20(pasv_token); uint256 contractBalance = token.balanceOf(address(this)); // Check PASV balance == 575Trillion require(contractBalance == (575000000000000 * 10**6)); // Burn certain amount of tokens based on presale soft cap, can't be more than half. require((tokensToBurn * 10**6) <= 37500000000000 * 10**6); // Burn Address token.transfer(address(0x0000000000000000000000000000000299792458), (tokensToBurn * 10**6)); totalPresalePoolAmount = totalPresalePoolAmount - (tokensToBurn * 10**6); // Calculate Distribution calculateDistribution(); // Update flag liquidityIsDeployed = true; // Call liquidity deployer contract with liquidityAllocation deployInitialLiquidity(); } function calculateDistribution() internal { // Loop through buyerAddresses for (uint256 i = 0; i < buyerAddresses.length; i++) { uint256 balanceTier1 = presaleBuyers[buyerAddresses[i]] .depositedEthTier1; uint256 balanceTier2 = presaleBuyers[buyerAddresses[i]] .depositedEthTier2; uint256 balanceTier3 = presaleBuyers[buyerAddresses[i]] .depositedEthTier3; uint256 totalWeightedBalance = balanceTier1 * 10 + balanceTier2 * 5 + balanceTier3; presaleBuyers[buyerAddresses[i]] .weightedBalance = totalWeightedBalance; totalPresaleWeightedBalance += totalWeightedBalance; } } function claimTokens() external nonReentrant { // Check time is after token launch require(_tokenLaunchTime < block.timestamp); // Check that liquidity has been deployed require(liquidityIsDeployed == true); // Require msg.sender hasn't claimed already require(presaleBuyers[msg.sender].hasClaimed == false); // Require msg.sender has deposited more than 0 require(presaleBuyers[msg.sender].hasDeposited == true); uint256 buyerAmountAvailable = (presaleBuyers[msg.sender] .weightedBalance * totalPresalePoolAmount) / totalPresaleWeightedBalance; // Set has claimed to true presaleBuyers[msg.sender].hasClaimed = true; // Update total withdrawn counter totalAmountWithdrawn += buyerAmountAvailable; // Transfer token to community member IERC20 token = IERC20(pasv_token); token.transfer(msg.sender, buyerAmountAvailable); } function deployInitialLiquidity() private { // Setup Uniswap Router and create pair IUniswapV2Router02 uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); IERC20 token = IERC20(pasv_token); uint256 contractBalance = address(this).balance; token.approve(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, TOTAL_SUPPLY); uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(pasv_token, uniswapV2Router.WETH()); uniswapV2Router.addLiquidityETH{value: contractBalance }(pasv_token,totalLiquidityPoolAmount,totalLiquidityPoolAmount,contractBalance, marketing_wallet, block.timestamp); IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address payable","name":"_manager_1","type":"address"},{"internalType":"address payable","name":"_manager_2","type":"address"},{"internalType":"address payable","name":"_marketing","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MANAGER","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokensToBurn","type":"uint256"}],"name":"deployLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"depositEth","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getCurrentTier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"depositor","type":"address"}],"name":"getDepositedEthBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPresaleAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pasv_token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"presaleBuyers","outputs":[{"internalType":"bool","name":"hasDeposited","type":"bool"},{"internalType":"uint256","name":"depositedEthTier1","type":"uint256"},{"internalType":"uint256","name":"depositedEthTier2","type":"uint256"},{"internalType":"uint256","name":"depositedEthTier3","type":"uint256"},{"internalType":"uint256","name":"weightedBalance","type":"uint256"},{"internalType":"bool","name":"hasClaimed","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pasv","type":"address"}],"name":"setPassiveTokenAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAmountWithdrawn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalLiquidityPoolAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalPresalePoolAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405260006009819055600a819055600b819055600c805461ffff19169055680410d586a20a4c0000600d55681b1ae4d6e2ef500000600e556361390830600f5560128190556013553480156200005757600080fd5b5060405162001ba438038062001ba48339810160408190526200007a91620001cc565b600180556200009960008051602062001b8483398151915284620000ff565b620000b460008051602062001b8483398151915283620000ff565b600380546001600160a01b03199081166001600160a01b0393841617909155600480548216948316949094179093556005805490931691161790556000600781905560085562000216565b6200010b82826200010f565b5050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166200010b576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556200016b3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b80516001600160a01b0381168114620001c757600080fd5b919050565b600080600060608486031215620001e257600080fd5b620001ed84620001af565b9250620001fd60208501620001af565b91506200020d60408501620001af565b90509250925092565b61195e80620002266000396000f3fe6080604052600436106101235760003560e01c806348c54b9d116100a0578063b70b8e5711610064578063b70b8e5714610366578063bfe1a80a14610386578063d547741f146103a6578063e9036732146103c6578063f68741d6146103fe57600080fd5b806348c54b9d146102f25780637412c2231461030757806376c272881461031c57806391d1485414610331578063a217fddf1461035157600080fd5b80632f2ff15d116100e75780632f2ff15d1461027e57806335eff06c1461029e57806336568abe146102b4578063439370b1146102d457806343d7c39d146102dc57600080fd5b806301ffc9a71461012f5780630c62b01b146101645780630e426577146101ea5780631b2df8501461020c578063248a9ca31461024e57600080fd5b3661012a57005b600080fd5b34801561013b57600080fd5b5061014f61014a3660046115fc565b610414565b60405190151581526020015b60405180910390f35b34801561017057600080fd5b506101b961017f366004611557565b60106020526000908152604090208054600182015460028301546003840154600485015460059095015460ff948516959394929391921686565b60408051961515875260208701959095529385019290925260608401526080830152151560a082015260c00161015b565b3480156101f657600080fd5b5061020a6102053660046115b3565b61044b565b005b34801561021857600080fd5b506102407faf290d8680820aad922855f39b306097b20e28774d6c1ad35a20325630c3a02c81565b60405190815260200161015b565b34801561025a57600080fd5b506102406102693660046115b3565b60009081526020819052604090206001015490565b34801561028a57600080fd5b5061020a6102993660046115cc565b61063f565b3480156102aa57600080fd5b50610240600d5481565b3480156102c057600080fd5b5061020a6102cf3660046115cc565b610665565b61020a6106e8565b3480156102e857600080fd5b50610240600e5481565b3480156102fe57600080fd5b5061020a6109e0565b34801561031357600080fd5b50610240610b89565b34801561032857600080fd5b50600d54610240565b34801561033d57600080fd5b5061014f61034c3660046115cc565b610c16565b34801561035d57600080fd5b50610240600081565b34801561037257600080fd5b50610240610381366004611557565b610c3f565b34801561039257600080fd5b5061020a6103a1366004611557565b610cb2565b3480156103b257600080fd5b5061020a6103c13660046115cc565b610d2a565b3480156103d257600080fd5b506002546103e6906001600160a01b031681565b6040516001600160a01b03909116815260200161015b565b34801561040a57600080fd5b5061024060125481565b60006001600160e01b03198216637965db0b60e01b148061044557506301ffc9a760e01b6001600160e01b03198316145b92915050565b6104757faf290d8680820aad922855f39b306097b20e28774d6c1ad35a20325630c3a02c33610c16565b61047e57600080fd5b42600f541061048c57600080fd5b600c5460ff6101009091041615156001146104a657600080fd5b6002546040516370a0823160e01b81523060048201526001600160a01b039091169060009082906370a082319060240160206040518083038186803b1580156104ee57600080fd5b505afa158015610502573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105269190611626565b905080681f2bba5d84f99c00001461053d57600080fd5b6802086ac3510526000061055484620f424061183d565b111561055f57600080fd5b6001600160a01b03821663a9059cbb64029979245861058186620f424061183d565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156105c757600080fd5b505af11580156105db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ff9190611591565b5061060d83620f424061183d565b600d5461061a919061185c565b600d55610625610d50565b600c805460ff1916600117905561063a610ecd565b505050565b60008281526020819052604090206001015461065b8133611267565b61063a83836112cb565b6001600160a01b03811633146106da5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6106e4828261134f565b5050565b6002600154141561073b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106d1565b60026001553461074a57600080fd5b3360009081526010602052604090205460ff16806107bf57336000818152601060205260408120805460ff191660019081179091556011805491820181559091527f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c680180546001600160a01b03191690911790555b68056bc75e2d63100000600854101561087957600060646107e134600f61183d565b6107eb919061172d565b905080600860008282546107ff9190611715565b9091555060009050606461081434605561183d565b61081e919061172d565b905080600760008282546108329190611715565b90915550506003546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015610871573d6000803e3d6000fd5b505050610891565b346007600082825461088b9190611715565b90915550505b600061089b610b89565b9050600081600114156108f95750336000908152601060205260409020600101546108c63482611715565b33600090815260106020526040812060010191909155600980543492906108ee908490611715565b909155506109d79050565b81600214156109485750336000908152601060205260409020600201546109203482611715565b33600090815260106020526040812060020191909155600a80543492906108ee908490611715565b816003141561099757503360009081526010602052604090206003015461096f3482611715565b33600090815260106020526040812060030191909155600b80543492906108ee908490611715565b60405162461bcd60e51b815260206004820152601560248201527450726573616c65206e6f7420617661696c61626c6560581b60448201526064016106d1565b50506001805550565b60026001541415610a335760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106d1565b6002600155600f544211610a4657600080fd5b600c5460ff161515600114610a5a57600080fd5b3360009081526010602052604090206005015460ff1615610a7a57600080fd5b3360009081526010602052604090205460ff161515600114610a9b57600080fd5b601354600d5433600090815260106020526040812060040154909291610ac09161183d565b610aca919061172d565b336000908152601060205260408120600501805460ff19166001179055601280549293508392909190610afe908490611715565b909155505060025460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0390911690819063a9059cbb90604401602060405180830381600087803b158015610b5157600080fd5b505af1158015610b65573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d79190611591565b60006361156fb0636126932e636126933063612fcdae63612fcdb0636139082e4286108015610bb757508442105b15610bc9576001965050505050505090565b8342118015610bd757508242105b15610be9576002965050505050505090565b8142118015610bf757508042105b15610c09576003965050505050505090565b6004965050505050505090565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6001600160a01b03811660009081526010602052604081205460ff161515600114610c6957600080fd5b6001600160a01b038216600090815260106020526040812060018101546002820154600390920154909281610c9e8486611715565b610ca89190611715565b9695505050505050565b610cdc7faf290d8680820aad922855f39b306097b20e28774d6c1ad35a20325630c3a02c33610c16565b610ce557600080fd5b6001600160a01b038116610cf857600080fd5b600280546001600160a01b039092166001600160a01b0319909216919091179055600c805461ff001916610100179055565b600082815260208190526040902060010154610d468133611267565b61063a838361134f565b60005b601154811015610eca5760006010600060118481548110610d7657610d766118e7565b60009182526020808320909101546001600160a01b031683528201929092526040018120600101546011805491935060109183919086908110610dbb57610dbb6118e7565b60009182526020808320909101546001600160a01b031683528201929092526040018120600201546011805491935060109183919087908110610e0057610e006118e7565b60009182526020808320909101546001600160a01b03168352820192909252604001812060030154915081610e3684600561183d565b610e4186600a61183d565b610e4b9190611715565b610e559190611715565b9050806010600060118881548110610e6f57610e6f6118e7565b60009182526020808320909101546001600160a01b0316835282019290925260400181206004019190915560138054839290610eac908490611715565b92505081905550505050508080610ec2906118b6565b915050610d53565b50565b600254737a250d5630b4cf539739df2c5dacb4c659f2488d906001600160a01b0316478163095ea7b384610f036006600a611792565b610f149066038d7ea4c6800061183d565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b158015610f5a57600080fd5b505af1158015610f6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f929190611591565b50826001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610fcc57600080fd5b505afa158015610fe0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110049190611574565b6001600160a01b031663c9c65396600260009054906101000a90046001600160a01b0316856001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561106157600080fd5b505afa158015611075573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110999190611574565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156110e157600080fd5b505af11580156110f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111199190611574565b600680546001600160a01b0319166001600160a01b03928316179055600254600e5460035460405163f305d71960e01b8152928416600484015260248301829052604483019190915260648201849052821660848201524260a48201529084169063f305d71990839060c4016060604051808303818588803b15801561119e57600080fd5b505af11580156111b2573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906111d7919061163f565b505060065460405163095ea7b360e01b81526001600160a01b0386811660048301526000196024830152909116915063095ea7b390604401602060405180830381600087803b15801561122957600080fd5b505af115801561123d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112619190611591565b50505050565b6112718282610c16565b6106e457611289816001600160a01b031660146113b4565b6112948360206113b4565b6040516020016112a592919061166d565b60408051601f198184030181529082905262461bcd60e51b82526106d1916004016116e2565b6112d58282610c16565b6106e4576000828152602081815260408083206001600160a01b03851684529091529020805460ff1916600117905561130b3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6113598282610c16565b156106e4576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b606060006113c383600261183d565b6113ce906002611715565b67ffffffffffffffff8111156113e6576113e66118fd565b6040519080825280601f01601f191660200182016040528015611410576020820181803683370190505b509050600360fc1b8160008151811061142b5761142b6118e7565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061145a5761145a6118e7565b60200101906001600160f81b031916908160001a905350600061147e84600261183d565b611489906001611715565b90505b6001811115611501576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106114bd576114bd6118e7565b1a60f81b8282815181106114d3576114d36118e7565b60200101906001600160f81b031916908160001a90535060049490941c936114fa8161189f565b905061148c565b5083156115505760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016106d1565b9392505050565b60006020828403121561156957600080fd5b813561155081611913565b60006020828403121561158657600080fd5b815161155081611913565b6000602082840312156115a357600080fd5b8151801515811461155057600080fd5b6000602082840312156115c557600080fd5b5035919050565b600080604083850312156115df57600080fd5b8235915060208301356115f181611913565b809150509250929050565b60006020828403121561160e57600080fd5b81356001600160e01b03198116811461155057600080fd5b60006020828403121561163857600080fd5b5051919050565b60008060006060848603121561165457600080fd5b8351925060208401519150604084015190509250925092565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516116a5816017850160208801611873565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516116d6816028840160208801611873565b01602801949350505050565b6020815260008251806020840152611701816040850160208701611873565b601f01601f19169190910160400192915050565b60008219821115611728576117286118d1565b500190565b60008261174a57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b8085111561178a578160001904821115611770576117706118d1565b8085161561177d57918102915b93841c9390800290611754565b509250929050565b600061155060ff8416836000826117ab57506001610445565b816117b857506000610445565b81600181146117ce57600281146117d8576117f4565b6001915050610445565b60ff8411156117e9576117e96118d1565b50506001821b610445565b5060208310610133831016604e8410600b8410161715611817575081810a610445565b611821838361174f565b8060001904821115611835576118356118d1565b029392505050565b6000816000190483118215151615611857576118576118d1565b500290565b60008282101561186e5761186e6118d1565b500390565b60005b8381101561188e578181015183820152602001611876565b838111156112615750506000910152565b6000816118ae576118ae6118d1565b506000190190565b60006000198214156118ca576118ca6118d1565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610eca57600080fdfea26469706673582212207eb4ff3292bfa827c97ad90c856baf4f891a0734c4e20e8eb6b62a2ff54d8bfe64736f6c63430008050033af290d8680820aad922855f39b306097b20e28774d6c1ad35a20325630c3a02c000000000000000000000000ae2a01be2d1b1b56a1d2a52026bdd640d87858bf00000000000000000000000005e0cd7613f000b1ec7d7305beddc98daba0d12b000000000000000000000000229854977d36232a60b5fa81171b6d717a5a12f3
Deployed Bytecode
0x6080604052600436106101235760003560e01c806348c54b9d116100a0578063b70b8e5711610064578063b70b8e5714610366578063bfe1a80a14610386578063d547741f146103a6578063e9036732146103c6578063f68741d6146103fe57600080fd5b806348c54b9d146102f25780637412c2231461030757806376c272881461031c57806391d1485414610331578063a217fddf1461035157600080fd5b80632f2ff15d116100e75780632f2ff15d1461027e57806335eff06c1461029e57806336568abe146102b4578063439370b1146102d457806343d7c39d146102dc57600080fd5b806301ffc9a71461012f5780630c62b01b146101645780630e426577146101ea5780631b2df8501461020c578063248a9ca31461024e57600080fd5b3661012a57005b600080fd5b34801561013b57600080fd5b5061014f61014a3660046115fc565b610414565b60405190151581526020015b60405180910390f35b34801561017057600080fd5b506101b961017f366004611557565b60106020526000908152604090208054600182015460028301546003840154600485015460059095015460ff948516959394929391921686565b60408051961515875260208701959095529385019290925260608401526080830152151560a082015260c00161015b565b3480156101f657600080fd5b5061020a6102053660046115b3565b61044b565b005b34801561021857600080fd5b506102407faf290d8680820aad922855f39b306097b20e28774d6c1ad35a20325630c3a02c81565b60405190815260200161015b565b34801561025a57600080fd5b506102406102693660046115b3565b60009081526020819052604090206001015490565b34801561028a57600080fd5b5061020a6102993660046115cc565b61063f565b3480156102aa57600080fd5b50610240600d5481565b3480156102c057600080fd5b5061020a6102cf3660046115cc565b610665565b61020a6106e8565b3480156102e857600080fd5b50610240600e5481565b3480156102fe57600080fd5b5061020a6109e0565b34801561031357600080fd5b50610240610b89565b34801561032857600080fd5b50600d54610240565b34801561033d57600080fd5b5061014f61034c3660046115cc565b610c16565b34801561035d57600080fd5b50610240600081565b34801561037257600080fd5b50610240610381366004611557565b610c3f565b34801561039257600080fd5b5061020a6103a1366004611557565b610cb2565b3480156103b257600080fd5b5061020a6103c13660046115cc565b610d2a565b3480156103d257600080fd5b506002546103e6906001600160a01b031681565b6040516001600160a01b03909116815260200161015b565b34801561040a57600080fd5b5061024060125481565b60006001600160e01b03198216637965db0b60e01b148061044557506301ffc9a760e01b6001600160e01b03198316145b92915050565b6104757faf290d8680820aad922855f39b306097b20e28774d6c1ad35a20325630c3a02c33610c16565b61047e57600080fd5b42600f541061048c57600080fd5b600c5460ff6101009091041615156001146104a657600080fd5b6002546040516370a0823160e01b81523060048201526001600160a01b039091169060009082906370a082319060240160206040518083038186803b1580156104ee57600080fd5b505afa158015610502573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105269190611626565b905080681f2bba5d84f99c00001461053d57600080fd5b6802086ac3510526000061055484620f424061183d565b111561055f57600080fd5b6001600160a01b03821663a9059cbb64029979245861058186620f424061183d565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156105c757600080fd5b505af11580156105db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ff9190611591565b5061060d83620f424061183d565b600d5461061a919061185c565b600d55610625610d50565b600c805460ff1916600117905561063a610ecd565b505050565b60008281526020819052604090206001015461065b8133611267565b61063a83836112cb565b6001600160a01b03811633146106da5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6106e4828261134f565b5050565b6002600154141561073b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106d1565b60026001553461074a57600080fd5b3360009081526010602052604090205460ff16806107bf57336000818152601060205260408120805460ff191660019081179091556011805491820181559091527f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c680180546001600160a01b03191690911790555b68056bc75e2d63100000600854101561087957600060646107e134600f61183d565b6107eb919061172d565b905080600860008282546107ff9190611715565b9091555060009050606461081434605561183d565b61081e919061172d565b905080600760008282546108329190611715565b90915550506003546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015610871573d6000803e3d6000fd5b505050610891565b346007600082825461088b9190611715565b90915550505b600061089b610b89565b9050600081600114156108f95750336000908152601060205260409020600101546108c63482611715565b33600090815260106020526040812060010191909155600980543492906108ee908490611715565b909155506109d79050565b81600214156109485750336000908152601060205260409020600201546109203482611715565b33600090815260106020526040812060020191909155600a80543492906108ee908490611715565b816003141561099757503360009081526010602052604090206003015461096f3482611715565b33600090815260106020526040812060030191909155600b80543492906108ee908490611715565b60405162461bcd60e51b815260206004820152601560248201527450726573616c65206e6f7420617661696c61626c6560581b60448201526064016106d1565b50506001805550565b60026001541415610a335760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106d1565b6002600155600f544211610a4657600080fd5b600c5460ff161515600114610a5a57600080fd5b3360009081526010602052604090206005015460ff1615610a7a57600080fd5b3360009081526010602052604090205460ff161515600114610a9b57600080fd5b601354600d5433600090815260106020526040812060040154909291610ac09161183d565b610aca919061172d565b336000908152601060205260408120600501805460ff19166001179055601280549293508392909190610afe908490611715565b909155505060025460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0390911690819063a9059cbb90604401602060405180830381600087803b158015610b5157600080fd5b505af1158015610b65573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d79190611591565b60006361156fb0636126932e636126933063612fcdae63612fcdb0636139082e4286108015610bb757508442105b15610bc9576001965050505050505090565b8342118015610bd757508242105b15610be9576002965050505050505090565b8142118015610bf757508042105b15610c09576003965050505050505090565b6004965050505050505090565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6001600160a01b03811660009081526010602052604081205460ff161515600114610c6957600080fd5b6001600160a01b038216600090815260106020526040812060018101546002820154600390920154909281610c9e8486611715565b610ca89190611715565b9695505050505050565b610cdc7faf290d8680820aad922855f39b306097b20e28774d6c1ad35a20325630c3a02c33610c16565b610ce557600080fd5b6001600160a01b038116610cf857600080fd5b600280546001600160a01b039092166001600160a01b0319909216919091179055600c805461ff001916610100179055565b600082815260208190526040902060010154610d468133611267565b61063a838361134f565b60005b601154811015610eca5760006010600060118481548110610d7657610d766118e7565b60009182526020808320909101546001600160a01b031683528201929092526040018120600101546011805491935060109183919086908110610dbb57610dbb6118e7565b60009182526020808320909101546001600160a01b031683528201929092526040018120600201546011805491935060109183919087908110610e0057610e006118e7565b60009182526020808320909101546001600160a01b03168352820192909252604001812060030154915081610e3684600561183d565b610e4186600a61183d565b610e4b9190611715565b610e559190611715565b9050806010600060118881548110610e6f57610e6f6118e7565b60009182526020808320909101546001600160a01b0316835282019290925260400181206004019190915560138054839290610eac908490611715565b92505081905550505050508080610ec2906118b6565b915050610d53565b50565b600254737a250d5630b4cf539739df2c5dacb4c659f2488d906001600160a01b0316478163095ea7b384610f036006600a611792565b610f149066038d7ea4c6800061183d565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b158015610f5a57600080fd5b505af1158015610f6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f929190611591565b50826001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610fcc57600080fd5b505afa158015610fe0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110049190611574565b6001600160a01b031663c9c65396600260009054906101000a90046001600160a01b0316856001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561106157600080fd5b505afa158015611075573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110999190611574565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156110e157600080fd5b505af11580156110f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111199190611574565b600680546001600160a01b0319166001600160a01b03928316179055600254600e5460035460405163f305d71960e01b8152928416600484015260248301829052604483019190915260648201849052821660848201524260a48201529084169063f305d71990839060c4016060604051808303818588803b15801561119e57600080fd5b505af11580156111b2573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906111d7919061163f565b505060065460405163095ea7b360e01b81526001600160a01b0386811660048301526000196024830152909116915063095ea7b390604401602060405180830381600087803b15801561122957600080fd5b505af115801561123d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112619190611591565b50505050565b6112718282610c16565b6106e457611289816001600160a01b031660146113b4565b6112948360206113b4565b6040516020016112a592919061166d565b60408051601f198184030181529082905262461bcd60e51b82526106d1916004016116e2565b6112d58282610c16565b6106e4576000828152602081815260408083206001600160a01b03851684529091529020805460ff1916600117905561130b3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6113598282610c16565b156106e4576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b606060006113c383600261183d565b6113ce906002611715565b67ffffffffffffffff8111156113e6576113e66118fd565b6040519080825280601f01601f191660200182016040528015611410576020820181803683370190505b509050600360fc1b8160008151811061142b5761142b6118e7565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061145a5761145a6118e7565b60200101906001600160f81b031916908160001a905350600061147e84600261183d565b611489906001611715565b90505b6001811115611501576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106114bd576114bd6118e7565b1a60f81b8282815181106114d3576114d36118e7565b60200101906001600160f81b031916908160001a90535060049490941c936114fa8161189f565b905061148c565b5083156115505760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016106d1565b9392505050565b60006020828403121561156957600080fd5b813561155081611913565b60006020828403121561158657600080fd5b815161155081611913565b6000602082840312156115a357600080fd5b8151801515811461155057600080fd5b6000602082840312156115c557600080fd5b5035919050565b600080604083850312156115df57600080fd5b8235915060208301356115f181611913565b809150509250929050565b60006020828403121561160e57600080fd5b81356001600160e01b03198116811461155057600080fd5b60006020828403121561163857600080fd5b5051919050565b60008060006060848603121561165457600080fd5b8351925060208401519150604084015190509250925092565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516116a5816017850160208801611873565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516116d6816028840160208801611873565b01602801949350505050565b6020815260008251806020840152611701816040850160208701611873565b601f01601f19169190910160400192915050565b60008219821115611728576117286118d1565b500190565b60008261174a57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b8085111561178a578160001904821115611770576117706118d1565b8085161561177d57918102915b93841c9390800290611754565b509250929050565b600061155060ff8416836000826117ab57506001610445565b816117b857506000610445565b81600181146117ce57600281146117d8576117f4565b6001915050610445565b60ff8411156117e9576117e96118d1565b50506001821b610445565b5060208310610133831016604e8410600b8410161715611817575081810a610445565b611821838361174f565b8060001904821115611835576118356118d1565b029392505050565b6000816000190483118215151615611857576118576118d1565b500290565b60008282101561186e5761186e6118d1565b500390565b60005b8381101561188e578181015183820152602001611876565b838111156112615750506000910152565b6000816118ae576118ae6118d1565b506000190190565b60006000198214156118ca576118ca6118d1565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610eca57600080fdfea26469706673582212207eb4ff3292bfa827c97ad90c856baf4f891a0734c4e20e8eb6b62a2ff54d8bfe64736f6c63430008050033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000ae2a01be2d1b1b56a1d2a52026bdd640d87858bf00000000000000000000000005e0cd7613f000b1ec7d7305beddc98daba0d12b000000000000000000000000229854977d36232a60b5fa81171b6d717a5a12f3
-----Decoded View---------------
Arg [0] : _manager_1 (address): 0xaE2A01bE2d1b1b56A1D2a52026bDD640d87858bf
Arg [1] : _manager_2 (address): 0x05e0Cd7613f000B1EC7d7305bEDDc98daBA0D12b
Arg [2] : _marketing (address): 0x229854977D36232a60b5Fa81171b6d717a5a12f3
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000ae2a01be2d1b1b56a1d2a52026bdd640d87858bf
Arg [1] : 00000000000000000000000005e0cd7613f000b1ec7d7305beddc98daba0d12b
Arg [2] : 000000000000000000000000229854977d36232a60b5fa81171b6d717a5a12f3
Deployed Bytecode Sourcemap
28410:10071:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11781:217;;;;;;;;;;-1:-1:-1;11781:217:0;;;;;:::i;:::-;;:::i;:::-;;;4641:14:1;;4634:22;4616:41;;4604:2;4589:18;11781:217:0;;;;;;;;29910:46;;;;;;;;;;-1:-1:-1;29910:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4968:14:1;;4961:22;4943:41;;5015:2;5000:18;;4993:34;;;;5043:18;;;5036:34;;;;5101:2;5086:18;;5079:34;5144:3;5129:19;;5122:35;5201:14;5194:22;5188:3;5173:19;;5166:51;4930:3;4915:19;29910:46:0;4897:326:1;34633:1227:0;;;;;;;;;;-1:-1:-1;34633:1227:0;;;;;:::i;:::-;;:::i;:::-;;28468:54;;;;;;;;;;;;28502:20;28468:54;;;;;5374:25:1;;;5362:2;5347:18;28468:54:0;5329:76:1;13092:123:0;;;;;;;;;;-1:-1:-1;13092:123:0;;;;;:::i;:::-;13158:7;13185:12;;;;;;;;;;:22;;;;13092:123;13477:147;;;;;;;;;;-1:-1:-1;13477:147:0;;;;;:::i;:::-;;:::i;29373:62::-;;;;;;;;;;;;;;;;14525:218;;;;;;;;;;-1:-1:-1;14525:218:0;;;;;:::i;:::-;;:::i;31349:2391::-;;;:::i;29478:65::-;;;;;;;;;;;;;;;;36697:998;;;;;;;;;;;;;:::i;30669:672::-;;;;;;;;;;;;;:::i;30555:106::-;;;;;;;;;;-1:-1:-1;30631:22:0;;30555:106;;12090:139;;;;;;;;;;-1:-1:-1;12090:139:0;;;;;:::i;:::-;;:::i;10055:49::-;;;;;;;;;;-1:-1:-1;10055:49:0;10100:4;10055:49;;33748:553;;;;;;;;;;-1:-1:-1;33748:553:0;;;;;:::i;:::-;;:::i;34309:316::-;;;;;;;;;;-1:-1:-1;34309:316:0;;;;;:::i;:::-;;:::i;13869:149::-;;;;;;;;;;-1:-1:-1;13869:149:0;;;;;:::i;:::-;;:::i;28531:25::-;;;;;;;;;;-1:-1:-1;28531:25:0;;;;-1:-1:-1;;;;;28531:25:0;;;;;;-1:-1:-1;;;;;3240:32:1;;;3222:51;;3210:2;3195:18;28531:25:0;3177:102:1;30005:39:0;;;;;;;;;;;;;;;;11781:217;11866:4;-1:-1:-1;;;;;;11890:47:0;;-1:-1:-1;;;11890:47:0;;:100;;-1:-1:-1;;;;;;;;;;7618:40:0;;;11954:36;11883:107;11781:217;-1:-1:-1;;11781:217:0:o;34633:1227::-;34743:28;28502:20;34760:10;34743:7;:28::i;:::-;34735:37;;;;;;34857:15;34838:16;;:34;34830:43;;;;;;34956:14;;;;;;;;:22;;:14;:22;34948:31;;;;;;35047:10;;35095:30;;-1:-1:-1;;;35095:30:0;;35119:4;35095:30;;;3222:51:1;-1:-1:-1;;;;;35047:10:0;;;;35025:12;;35047:10;;35095:15;;3195:18:1;;35095:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35069:56;;35192:15;35212:23;35192:44;35184:53;;;;;;35378:22;35353:20;:12;35368:5;35353:20;:::i;:::-;35352:48;;35344:57;;;;;;-1:-1:-1;;;;;35437:14:0;;;35460:42;35506:20;:12;35521:5;35506:20;:::i;:::-;35437:91;;-1:-1:-1;;;;;;35437:91:0;;;;;;;-1:-1:-1;;;;;3785:32:1;;;35437:91:0;;;3767:51:1;3834:18;;;3827:34;3740:18;;35437:91:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;35590:20:0;:12;35605:5;35590:20;:::i;:::-;35564:22;;:47;;;;:::i;:::-;35539:22;:72;35659:23;:21;:23::i;:::-;35719:19;:26;;-1:-1:-1;;35719:26:0;35741:4;35719:26;;;35828:24;:22;:24::i;:::-;34689:1171;;34633:1227;:::o;13477:147::-;13158:7;13185:12;;;;;;;;;;:22;;;11659:30;11670:4;3536:10;11659;:30::i;:::-;13591:25:::1;13602:4;13608:7;13591:10;:25::i;14525:218::-:0;-1:-1:-1;;;;;14621:23:0;;3536:10;14621:23;14613:83;;;;-1:-1:-1;;;14613:83:0;;7071:2:1;14613:83:0;;;7053:21:1;7110:2;7090:18;;;7083:30;7149:34;7129:18;;;7122:62;-1:-1:-1;;;7200:18:1;;;7193:45;7255:19;;14613:83:0;;;;;;;;;14709:26;14721:4;14727:7;14709:11;:26::i;:::-;14525:218;;:::o;31349:2391::-;17992:1;18589:7;;:19;;18581:63;;;;-1:-1:-1;;;18581:63:0;;6711:2:1;18581:63:0;;;6693:21:1;6750:2;6730:18;;;6723:30;6789:33;6769:18;;;6762:61;6840:18;;18581:63:0;6683:181:1;18581:63:0;17992:1;18722:7;:18;31454:9:::1;31446:22;;;::::0;::::1;;31571:10;31533:21;31557:25:::0;;;:13:::1;:25;::::0;;;;:38;::::1;;::::0;31687:183:::1;;31739:10;31725:25;::::0;;;:13:::1;:25;::::0;;;;:45;;-1:-1:-1;;31725:45:0::1;31766:4;31725:45:::0;;::::1;::::0;;;31827:14:::1;:31:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;31827:31:0::1;::::0;;::::1;::::0;;31687:183:::1;31985:12;31961:20;;:37;31957:629;;;32057:27;32106:3;32088:14;:9;32100:2;32088:14;:::i;:::-;32087:22;;;;:::i;:::-;32057:52;;32148:19;32124:20;;:43;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;32226:27:0::1;::::0;-1:-1:-1;32275:3:0::1;32257:14;:9;32269:2;32257:14;:::i;:::-;32256:22;;;;:::i;:::-;32226:52;;32317:19;32293:20;;:43;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;32419:16:0::1;::::0;:46:::1;::::0;-1:-1:-1;;;;;32419:16:0;;::::1;::::0;:46;::::1;;;::::0;32445:19;;32419:16:::1;:46:::0;:16;:46;32445:19;32419:16;:46;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;32000:477;;31957:629;;;32565:9;32541:20;;:33;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;31957:629:0::1;32642:19;32664:16;:14;:16::i;:::-;32642:38;;32691:22;32728:11;32743:1;32728:16;32724:1009;;;-1:-1:-1::0;32832:10:0::1;32818:25;::::0;;;:13:::1;:25;::::0;;;;:43:::1;;::::0;32939::::1;32973:9;32818:43:::0;32939::::1;:::i;:::-;32890:10;32876:25;::::0;;;:13:::1;:25;::::0;;;;:43:::1;;:106:::0;;;;32997:13:::1;:26:::0;;33014:9:::1;::::0;32876:25;32997:26:::1;::::0;33014:9;;32997:26:::1;:::i;:::-;::::0;;;-1:-1:-1;32724:1009:0::1;::::0;-1:-1:-1;32724:1009:0::1;;33045:11;33060:1;33045:16;33041:692;;;-1:-1:-1::0;33149:10:0::1;33135:25;::::0;;;:13:::1;:25;::::0;;;;:43:::1;;::::0;33256::::1;33290:9;33135:43:::0;33256::::1;:::i;:::-;33207:10;33193:25;::::0;;;:13:::1;:25;::::0;;;;:43:::1;;:106:::0;;;;33314:13:::1;:26:::0;;33331:9:::1;::::0;33193:25;33314:26:::1;::::0;33331:9;;33314:26:::1;:::i;33041:692::-;33362:11;33377:1;33362:16;33358:375;;;-1:-1:-1::0;33466:10:0::1;33452:25;::::0;;;:13:::1;:25;::::0;;;;:43:::1;;::::0;33573::::1;33607:9;33452:43:::0;33573::::1;:::i;:::-;33524:10;33510:25;::::0;;;:13:::1;:25;::::0;;;;:43:::1;;:106:::0;;;;33631:13:::1;:26:::0;;33648:9:::1;::::0;33510:25;33631:26:::1;::::0;33648:9;;33631:26:::1;:::i;33358:375::-;33690:31;::::0;-1:-1:-1;;;33690:31:0;;6361:2:1;33690:31:0::1;::::0;::::1;6343:21:1::0;6400:2;6380:18;;;6373:30;-1:-1:-1;;;6419:18:1;;;6412:51;6480:18;;33690:31:0::1;6333:171:1::0;33358:375:0::1;-1:-1:-1::0;;17948:1:0;18901:22;;-1:-1:-1;31349:2391:0:o;36697:998::-;17992:1;18589:7;;:19;;18581:63;;;;-1:-1:-1;;;18581:63:0;;6711:2:1;18581:63:0;;;6693:21:1;6750:2;6730:18;;;6723:30;6789:33;6769:18;;;6762:61;6840:18;;18581:63:0;6683:181:1;18581:63:0;17992:1;18722:7;:18;36806:16:::1;::::0;36825:15:::1;-1:-1:-1::0;36798:43:0::1;;;::::0;::::1;;36913:19;::::0;::::1;;:27;;:19:::0;:27:::1;36905:36;;;::::0;::::1;;37030:10;37016:25;::::0;;;:13:::1;:25;::::0;;;;:36:::1;;::::0;::::1;;:45;37008:54;;;::::0;::::1;;37154:10;37140:25;::::0;;;:13:::1;:25;::::0;;;;:38;::::1;;:46;;:38:::0;:46:::1;37132:55;;;::::0;::::1;;37316:27;::::0;37290:22:::1;::::0;37246:10:::1;37200:28;37232:25:::0;;;:13:::1;:25;::::0;;;;:55:::1;;::::0;37200:28;;37316:27;37232:80:::1;::::0;::::1;:::i;:::-;37231:112;;;;:::i;:::-;37406:10;37392:25;::::0;;;:13:::1;:25;::::0;;;;:36:::1;;:43:::0;;-1:-1:-1;;37392:43:0::1;37431:4;37392:43;::::0;;37491:20:::1;:44:::0;;37200:143;;-1:-1:-1;37200:143:0;;37491:20;;37392:25;37491:44:::1;::::0;37200:143;;37491:44:::1;:::i;:::-;::::0;;;-1:-1:-1;;37617:10:0::1;::::0;37639:48:::1;::::0;-1:-1:-1;;;37639:48:0;;37654:10:::1;37639:48;::::0;::::1;3767:51:1::0;3834:18;;;3827:34;;;-1:-1:-1;;;;;37617:10:0;;::::1;::::0;;;37639:14:::1;::::0;3740:18:1;;37639:48:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;30669:672::-:0;30716:7;30757:10;30797;30839;30879;30921;30961;30988:15;:28;-1:-1:-1;30988:58:0;;;;;31038:8;31020:15;:26;30988:58;30984:350;;;31070:1;31063:8;;;;;;;;30669:672;:::o;30984:350::-;31111:10;31093:15;:28;:58;;;;;31143:8;31125:15;:26;31093:58;31089:245;;;31175:1;31168:8;;;;;;;;30669:672;:::o;31089:245::-;31216:10;31198:15;:28;:58;;;;;31248:8;31230:15;:26;31198:58;31194:140;;;31280:1;31273:8;;;;;;;;30669:672;:::o;31194:140::-;31321:1;31314:8;;;;;;;;30669:672;:::o;12090:139::-;12168:4;12192:12;;;;;;;;;;;-1:-1:-1;;;;;12192:29:0;;;;;;;;;;;;;;;12090:139::o;33748:553::-;-1:-1:-1;;;;;33895:24:0;;33822:7;33895:24;;;:13;:24;;;;;:37;;;:45;;:37;:45;33887:54;;;;;;-1:-1:-1;;;;;33975:24:0;;33952:20;33975:24;;;:13;:24;;;;;:42;;;;34051;;;;34127;;;;;33975;;34127;34212:27;34051:42;33975;34212:27;:::i;:::-;:42;;;;:::i;:::-;34180:74;33748:553;-1:-1:-1;;;;;;33748:553:0:o;34309:316::-;34419:28;28502:20;34436:10;34419:7;:28::i;:::-;34411:37;;;;;;-1:-1:-1;;;;;34467:19:0;;34459:28;;;;;;34536:10;:18;;-1:-1:-1;;;;;34536:18:0;;;-1:-1:-1;;;;;;34536:18:0;;;;;;;;;34596:14;:21;;-1:-1:-1;;34596:21:0;34536:18;34596:21;;;34309:316::o;13869:149::-;13158:7;13185:12;;;;;;;;;;:22;;;11659:30;11670:4;3536:10;11659;:30::i;:::-;13984:26:::1;13996:4;14002:7;13984:11;:26::i;35868:821::-:0;35966:9;35961:721;35985:14;:21;35981:25;;35961:721;;;36028:20;36051:13;:32;36065:14;36080:1;36065:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;36065:17:0;36051:32;;;;;;;;;;;;36065:17;36051:68;;36171:14;:17;;36051:68;;-1:-1:-1;36157:13:0;;36065:17;;36171:14;36186:1;;36171:17;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;36171:17:0;36157:32;;;;;;;;;;;;:68;;;36277:14;:17;;36157:68;;-1:-1:-1;36263:13:0;;36171:17;;36277:14;36292:1;;36277:17;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;36277:17:0;36263:32;;;;;;;;;;;;:68;;;;-1:-1:-1;36263:68:0;36431:33;:12;36463:1;36431:33;:::i;:::-;36377:34;:12;36409:2;36377:34;:::i;:::-;:87;;;;:::i;:::-;:119;;;;:::i;:::-;36346:150;;36582:20;36513:13;:32;36527:14;36542:1;36527:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;36527:17:0;36513:32;;;;;;;;;;;;:66;;:89;;;;36619:27;:51;;36650:20;;36527:17;36619:51;;36650:20;;36619:51;:::i;:::-;;;;;;;;36013:669;;;;36008:3;;;;;:::i;:::-;;;;35961:721;;;;35868:821::o;37703:775::-;37937:10;;37861:42;;-1:-1:-1;;;;;37937:10:0;37985:21;37937:10;38017:13;37861:42;28809:12;28766:1;28809:2;:12;:::i;:::-;28869:27;;:18;:27;:::i;:::-;38017:71;;-1:-1:-1;;;;;;38017:71:0;;;;;;;-1:-1:-1;;;;;3785:32:1;;;38017:71:0;;;3767:51:1;3834:18;;;3827:34;3740:18;;38017:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;38133:15;-1:-1:-1;;;;;38133:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;38115:55:0;;38171:10;;;;;;;;;-1:-1:-1;;;;;38171:10:0;38183:15;-1:-1:-1;;;;;38183:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38115:91;;-1:-1:-1;;;;;;38115:91:0;;;;;;;-1:-1:-1;;;;;3514:15:1;;;38115:91:0;;;3496:34:1;3566:15;;3546:18;;;3539:43;3431:18;;38115:91:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38099:13;:107;;-1:-1:-1;;;;;;38099:107:0;-1:-1:-1;;;;;38099:107:0;;;;;;38274:10;;38285:24;;38352:16;;38217:169;;-1:-1:-1;;;38217:169:0;;38274:10;;;38217:169;;;4205:34:1;4255:18;;;4248:34;;;4298:18;;;4291:34;;;;4341:18;;;4334:34;;;38352:16:0;;4384:19:1;;;4377:44;38370:15:0;4437:19:1;;;4430:35;38217:31:0;;;;;;38256:15;;4139:19:1;;38217:169:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;38404:13:0;;38397:71;;-1:-1:-1;;;38397:71:0;;-1:-1:-1;;;;;3785:32:1;;;38397:71:0;;;3767:51:1;-1:-1:-1;;3834:18:1;;;3827:34;38404:13:0;;;;-1:-1:-1;38397:29:0;;3740:18:1;;38397:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;37745:733;;;37703:775::o;12519:384::-;12599:22;12607:4;12613:7;12599;:22::i;:::-;12595:301;;12731:41;12759:7;-1:-1:-1;;;;;12731:41:0;12769:2;12731:19;:41::i;:::-;12829:38;12857:4;12864:2;12829:19;:38::i;:::-;12652:230;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;12652:230:0;;;;;;;;;;-1:-1:-1;;;12638:246:0;;;;;;;:::i;15773:229::-;15848:22;15856:4;15862:7;15848;:22::i;:::-;15843:152;;15887:6;:12;;;;;;;;;;;-1:-1:-1;;;;;15887:29:0;;;;;;;;;:36;;-1:-1:-1;;15887:36:0;15919:4;15887:36;;;15970:12;3536:10;;3456:98;15970:12;-1:-1:-1;;;;;15943:40:0;15961:7;-1:-1:-1;;;;;15943:40:0;15955:4;15943:40;;;;;;;;;;15773:229;;:::o;16010:230::-;16085:22;16093:4;16099:7;16085;:22::i;:::-;16081:152;;;16156:5;16124:12;;;;;;;;;;;-1:-1:-1;;;;;16124:29:0;;;;;;;;;;:37;;-1:-1:-1;;16124:37:0;;;16181:40;3536:10;;16124:12;;16181:40;;16156:5;16181:40;16010:230;;:::o;5410:447::-;5485:13;5511:19;5543:10;5547:6;5543:1;:10;:::i;:::-;:14;;5556:1;5543:14;:::i;:::-;5533:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5533:25:0;;5511:47;;-1:-1:-1;;;5569:6:0;5576:1;5569:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;5569:15:0;;;;;;;;;-1:-1:-1;;;5595:6:0;5602:1;5595:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;5595:15:0;;;;;;;;-1:-1:-1;5626:9:0;5638:10;5642:6;5638:1;:10;:::i;:::-;:14;;5651:1;5638:14;:::i;:::-;5626:26;;5621:131;5658:1;5654;:5;5621:131;;;-1:-1:-1;;;5702:5:0;5710:3;5702:11;5693:21;;;;;;;:::i;:::-;;;;5681:6;5688:1;5681:9;;;;;;;;:::i;:::-;;;;:33;-1:-1:-1;;;;;5681:33:0;;;;;;;;-1:-1:-1;5739:1:0;5729:11;;;;;5661:3;;;:::i;:::-;;;5621:131;;;-1:-1:-1;5770:10:0;;5762:55;;;;-1:-1:-1;;;5762:55:0;;6000:2:1;5762:55:0;;;5982:21:1;;;6019:18;;;6012:30;6078:34;6058:18;;;6051:62;6130:18;;5762:55:0;5972:182:1;5762:55:0;5842:6;5410:447;-1:-1:-1;;;5410:447:0:o;14:247:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:2;;;142:1;139;132:12;94:2;181:9;168:23;200:31;225:5;200:31;:::i;266:251::-;336:6;389:2;377:9;368:7;364:23;360:32;357:2;;;405:1;402;395:12;357:2;437:9;431:16;456:31;481:5;456:31;:::i;522:277::-;589:6;642:2;630:9;621:7;617:23;613:32;610:2;;;658:1;655;648:12;610:2;690:9;684:16;743:5;736:13;729:21;722:5;719:32;709:2;;765:1;762;755:12;804:180;863:6;916:2;904:9;895:7;891:23;887:32;884:2;;;932:1;929;922:12;884:2;-1:-1:-1;955:23:1;;874:110;-1:-1:-1;874:110:1:o;989:315::-;1057:6;1065;1118:2;1106:9;1097:7;1093:23;1089:32;1086:2;;;1134:1;1131;1124:12;1086:2;1170:9;1157:23;1147:33;;1230:2;1219:9;1215:18;1202:32;1243:31;1268:5;1243:31;:::i;:::-;1293:5;1283:15;;;1076:228;;;;;:::o;1309:286::-;1367:6;1420:2;1408:9;1399:7;1395:23;1391:32;1388:2;;;1436:1;1433;1426:12;1388:2;1462:23;;-1:-1:-1;;;;;;1514:32:1;;1504:43;;1494:2;;1561:1;1558;1551:12;1785:184;1855:6;1908:2;1896:9;1887:7;1883:23;1879:32;1876:2;;;1924:1;1921;1914:12;1876:2;-1:-1:-1;1947:16:1;;1866:103;-1:-1:-1;1866:103:1:o;1974:306::-;2062:6;2070;2078;2131:2;2119:9;2110:7;2106:23;2102:32;2099:2;;;2147:1;2144;2137:12;2099:2;2176:9;2170:16;2160:26;;2226:2;2215:9;2211:18;2205:25;2195:35;;2270:2;2259:9;2255:18;2249:25;2239:35;;2089:191;;;;;:::o;2285:786::-;2696:25;2691:3;2684:38;2666:3;2751:6;2745:13;2767:62;2822:6;2817:2;2812:3;2808:12;2801:4;2793:6;2789:17;2767:62;:::i;:::-;-1:-1:-1;;;2888:2:1;2848:16;;;2880:11;;;2873:40;2938:13;;2960:63;2938:13;3009:2;3001:11;;2994:4;2982:17;;2960:63;:::i;:::-;3043:17;3062:2;3039:26;;2674:397;-1:-1:-1;;;;2674:397:1:o;5410:383::-;5559:2;5548:9;5541:21;5522:4;5591:6;5585:13;5634:6;5629:2;5618:9;5614:18;5607:34;5650:66;5709:6;5704:2;5693:9;5689:18;5684:2;5676:6;5672:15;5650:66;:::i;:::-;5777:2;5756:15;-1:-1:-1;;5752:29:1;5737:45;;;;5784:2;5733:54;;5531:262;-1:-1:-1;;5531:262:1:o;7467:128::-;7507:3;7538:1;7534:6;7531:1;7528:13;7525:2;;;7544:18;;:::i;:::-;-1:-1:-1;7580:9:1;;7515:80::o;7600:217::-;7640:1;7666;7656:2;;7710:10;7705:3;7701:20;7698:1;7691:31;7745:4;7742:1;7735:15;7773:4;7770:1;7763:15;7656:2;-1:-1:-1;7802:9:1;;7646:171::o;7822:422::-;7911:1;7954:5;7911:1;7968:270;7989:7;7979:8;7976:21;7968:270;;;8048:4;8044:1;8040:6;8036:17;8030:4;8027:27;8024:2;;;8057:18;;:::i;:::-;8107:7;8097:8;8093:22;8090:2;;;8127:16;;;;8090:2;8206:22;;;;8166:15;;;;7968:270;;;7972:3;7886:358;;;;;:::o;8249:140::-;8307:5;8336:47;8377:4;8367:8;8363:19;8357:4;8443:5;8473:8;8463:2;;-1:-1:-1;8514:1:1;8528:5;;8463:2;8562:4;8552:2;;-1:-1:-1;8599:1:1;8613:5;;8552:2;8644:4;8662:1;8657:59;;;;8730:1;8725:130;;;;8637:218;;8657:59;8687:1;8678:10;;8701:5;;;8725:130;8762:3;8752:8;8749:17;8746:2;;;8769:18;;:::i;:::-;-1:-1:-1;;8825:1:1;8811:16;;8840:5;;8637:218;;8939:2;8929:8;8926:16;8920:3;8914:4;8911:13;8907:36;8901:2;8891:8;8888:16;8883:2;8877:4;8874:12;8870:35;8867:77;8864:2;;;-1:-1:-1;8976:19:1;;;9008:5;;8864:2;9055:34;9080:8;9074:4;9055:34;:::i;:::-;9125:6;9121:1;9117:6;9113:19;9104:7;9101:32;9098:2;;;9136:18;;:::i;:::-;9174:20;;8453:747;-1:-1:-1;;;8453:747:1:o;9205:168::-;9245:7;9311:1;9307;9303:6;9299:14;9296:1;9293:21;9288:1;9281:9;9274:17;9270:45;9267:2;;;9318:18;;:::i;:::-;-1:-1:-1;9358:9:1;;9257:116::o;9378:125::-;9418:4;9446:1;9443;9440:8;9437:2;;;9451:18;;:::i;:::-;-1:-1:-1;9488:9:1;;9427:76::o;9508:258::-;9580:1;9590:113;9604:6;9601:1;9598:13;9590:113;;;9680:11;;;9674:18;9661:11;;;9654:39;9626:2;9619:10;9590:113;;;9721:6;9718:1;9715:13;9712:2;;;-1:-1:-1;;9756:1:1;9738:16;;9731:27;9561:205::o;9771:136::-;9810:3;9838:5;9828:2;;9847:18;;:::i;:::-;-1:-1:-1;;;9883:18:1;;9818:89::o;9912:135::-;9951:3;-1:-1:-1;;9972:17:1;;9969:2;;;9992:18;;:::i;:::-;-1:-1:-1;10039:1:1;10028:13;;9959:88::o;10052:127::-;10113:10;10108:3;10104:20;10101:1;10094:31;10144:4;10141:1;10134:15;10168:4;10165:1;10158:15;10184:127;10245:10;10240:3;10236:20;10233:1;10226:31;10276:4;10273:1;10266:15;10300:4;10297:1;10290:15;10316:127;10377:10;10372:3;10368:20;10365:1;10358:31;10408:4;10405:1;10398:15;10432:4;10429:1;10422:15;10448:131;-1:-1:-1;;;;;10523:31:1;;10513:42;;10503:2;;10569:1;10566;10559:12
Swarm Source
ipfs://7eb4ff3292bfa827c97ad90c856baf4f891a0734c4e20e8eb6b62a2ff54d8bfe
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
BSC | 100.00% | $709.72 | 0.013 | $9.23 |
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.