Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 25 from a total of 102 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 20675945 | 15 days ago | IN | 0 ETH | 0.00003989 | ||||
Transfer | 20675900 | 15 days ago | IN | 0 ETH | 0.0000839 | ||||
Transfer | 20627404 | 22 days ago | IN | 0 ETH | 0.00005326 | ||||
Transfer | 20627404 | 22 days ago | IN | 0 ETH | 0.00005308 | ||||
Transfer | 20627400 | 22 days ago | IN | 0 ETH | 0.00008226 | ||||
Transfer | 20627389 | 22 days ago | IN | 0 ETH | 0.00005401 | ||||
Transfer | 20578036 | 29 days ago | IN | 0 ETH | 0.00009426 | ||||
Transfer | 20578030 | 29 days ago | IN | 0 ETH | 0.00015636 | ||||
Transfer | 20570211 | 30 days ago | IN | 0 ETH | 0.00005796 | ||||
Transfer | 20570200 | 30 days ago | IN | 0 ETH | 0.00005609 | ||||
Transfer | 20570191 | 30 days ago | IN | 0 ETH | 0.0000625 | ||||
Burn | 20526852 | 36 days ago | IN | 0 ETH | 0.00004993 | ||||
Burn | 20522268 | 36 days ago | IN | 0 ETH | 0.00005387 | ||||
Burn | 20520043 | 37 days ago | IN | 0 ETH | 0.00009113 | ||||
Transfer | 20492215 | 41 days ago | IN | 0 ETH | 0.00023581 | ||||
Transfer | 20485543 | 41 days ago | IN | 0 ETH | 0.00023781 | ||||
Transfer | 20473024 | 43 days ago | IN | 0 ETH | 0.00010616 | ||||
Transfer | 20098045 | 96 days ago | IN | 0 ETH | 0.00028863 | ||||
Transfer | 20098019 | 96 days ago | IN | 0 ETH | 0.0004833 | ||||
Transfer | 20098012 | 96 days ago | IN | 0 ETH | 0.00032283 | ||||
Transfer | 20091254 | 97 days ago | IN | 0 ETH | 0.00079813 | ||||
Transfer | 20091245 | 97 days ago | IN | 0 ETH | 0.00119087 | ||||
Transfer | 20091241 | 97 days ago | IN | 0 ETH | 0.00128767 | ||||
Transfer | 20091015 | 97 days ago | IN | 0 ETH | 0.00048692 | ||||
Transfer | 20090990 | 97 days ago | IN | 0 ETH | 0.00044843 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
VANToken
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-01-03 */ // File: @openzeppelin/contracts/access/IAccessControl.sol // OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol) pragma solidity ^0.8.0; /** * @dev External interface of AccessControl declared to support ERC165 detection. */ interface IAccessControl { /** * @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 {AccessControl-_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 Returns `true` if `account` has been granted `role`. */ function hasRole(bytes32 role, address account) external view returns (bool); /** * @dev Returns the admin role that controls `role`. See {grantRole} and * {revokeRole}. * * To change a role's admin, use {AccessControl-_setRoleAdmin}. */ function getRoleAdmin(bytes32 role) external view returns (bytes32); /** * @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) external; /** * @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) external; /** * @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) external; } // File: @openzeppelin/contracts/utils/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: @openzeppelin/contracts/utils/Strings.sol // OpenZeppelin Contracts v4.4.1 (utils/Strings.sol) pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "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] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } } // File: @openzeppelin/contracts/utils/introspection/IERC165.sol // OpenZeppelin Contracts v4.4.1 (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 // OpenZeppelin Contracts v4.4.1 (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 // OpenZeppelin Contracts v4.4.1 (access/AccessControl.sol) pragma solidity ^0.8.0; /** * @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 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]{40}) is missing role (0x[0-9a-f]{64})$/ * * _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]{40}) is missing role (0x[0-9a-f]{64})$/ */ 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 revoked `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}. * ==== * * NOTE: This function is deprecated in favor of {_grantRole}. */ 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 { bytes32 previousAdminRole = getRoleAdmin(role); _roles[role].adminRole = adminRole; emit RoleAdminChanged(role, previousAdminRole, adminRole); } /** * @dev Grants `role` to `account`. * * Internal function without access restriction. */ function _grantRole(bytes32 role, address account) internal virtual { if (!hasRole(role, account)) { _roles[role].members[account] = true; emit RoleGranted(role, account, _msgSender()); } } /** * @dev Revokes `role` from `account`. * * Internal function without access restriction. */ function _revokeRole(bytes32 role, address account) internal virtual { if (hasRole(role, account)) { _roles[role].members[account] = false; emit RoleRevoked(role, account, _msgSender()); } } } // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts v4.4.1 (token/ERC20/IERC20.sol) 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/token/ERC20/extensions/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: @openzeppelin/contracts/token/ERC20/ERC20.sol // OpenZeppelin Contracts v4.4.1 (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.zeppelin.solutions/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) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * 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: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } /** * @dev 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) { _approve(_msgSender(), spender, _allowances[_msgSender()][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) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `sender` to `recipient`. * * 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: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * 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; _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; } _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 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/VANToken.sol //SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract VANToken is ERC20, AccessControl { string private __name = "Vanspor Token"; string private __symbol = "VAN"; uint8 private __decimals = 2; uint private __INITIAL_SUPPLY = 650000000; bytes32 public constant BURNER_ROLE = keccak256("BURNER_ROLE"); event Burned(address addr, uint256 amount); constructor() public ERC20(__name, __symbol) { _setupRole(DEFAULT_ADMIN_ROLE, msg.sender); _setupRole(BURNER_ROLE, msg.sender); _mint(msg.sender, __INITIAL_SUPPLY); } function burn(address from, uint256 amount) public { require(hasRole(BURNER_ROLE, _msgSender()), "VAN Token: Caller is not a burner"); _burn(from, amount); emit Burned(from, amount); } function decimals() public view virtual override returns (uint8) { return __decimals; } }
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":false,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Burned","type":"event"},{"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"},{"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":"BURNER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":[{"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":[{"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":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526040518060400160405280600d81526020017f56616e73706f7220546f6b656e0000000000000000000000000000000000000081525060069080519060200190620000519291906200058b565b506040518060400160405280600381526020017f56414e0000000000000000000000000000000000000000000000000000000000815250600790805190602001906200009f9291906200058b565b506002600860006101000a81548160ff021916908360ff1602179055506326be3680600955348015620000d157600080fd5b5060068054620000e19062000745565b80601f01602080910402602001604051908101604052809291908181526020018280546200010f9062000745565b8015620001605780601f10620001345761010080835404028352916020019162000160565b820191906000526020600020905b8154815290600101906020018083116200014257829003601f168201915b505050505060078054620001749062000745565b80601f0160208091040260200160405190810160405280929190818152602001828054620001a29062000745565b8015620001f35780601f10620001c757610100808354040283529160200191620001f3565b820191906000526020600020905b815481529060010190602001808311620001d557829003601f168201915b50505050508160039080519060200190620002109291906200058b565b508060049080519060200190620002299291906200058b565b505050620002416000801b336200028d60201b60201c565b620002737f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a848336200028d60201b60201c565b6200028733600954620002a360201b60201c565b620007d9565b6200029f82826200041c60201b60201c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000316576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200030d906200068e565b60405180910390fd5b6200032a600083836200050e60201b60201c565b80600260008282546200033e9190620006de565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620003959190620006de565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620003fc9190620006b0565b60405180910390a362000418600083836200051360201b60201c565b5050565b6200042e82826200051860201b60201c565b6200050a5760016005600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620004af6200058360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b505050565b505050565b60006005600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600033905090565b828054620005999062000745565b90600052602060002090601f016020900481019282620005bd576000855562000609565b82601f10620005d857805160ff191683800117855562000609565b8280016001018555821562000609579182015b8281111562000608578251825591602001919060010190620005eb565b5b5090506200061891906200061c565b5090565b5b80821115620006375760008160009055506001016200061d565b5090565b60006200064a601f83620006cd565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b62000688816200073b565b82525050565b60006020820190508181036000830152620006a9816200063b565b9050919050565b6000602082019050620006c760008301846200067d565b92915050565b600082825260208201905092915050565b6000620006eb826200073b565b9150620006f8836200073b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000730576200072f6200077b565b5b828201905092915050565b6000819050919050565b600060028204905060018216806200075e57607f821691505b60208210811415620007755762000774620007aa565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b61250980620007e96000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c806339509351116100ad578063a217fddf11610071578063a217fddf1461036b578063a457c2d714610389578063a9059cbb146103b9578063d547741f146103e9578063dd62ed3e146104055761012c565b806339509351146102a157806370a08231146102d157806391d148541461030157806395d89b41146103315780639dc29fac1461034f5761012c565b8063248a9ca3116100f4578063248a9ca3146101fd578063282c51f31461022d5780632f2ff15d1461024b578063313ce5671461026757806336568abe146102855761012c565b806301ffc9a71461013157806306fdde0314610161578063095ea7b31461017f57806318160ddd146101af57806323b872dd146101cd575b600080fd5b61014b60048036038101906101469190611972565b610435565b6040516101589190611fd5565b60405180910390f35b6101696104af565b604051610176919061200b565b60405180910390f35b610199600480360381019061019491906118d1565b610541565b6040516101a69190611fd5565b60405180910390f35b6101b761055f565b6040516101c491906121ad565b60405180910390f35b6101e760048036038101906101e29190611882565b610569565b6040516101f49190611fd5565b60405180910390f35b6102176004803603810190610212919061190d565b610661565b6040516102249190611ff0565b60405180910390f35b610235610681565b6040516102429190611ff0565b60405180910390f35b61026560048036038101906102609190611936565b6106a5565b005b61026f6106ce565b60405161027c91906121c8565b60405180910390f35b61029f600480360381019061029a9190611936565b6106e5565b005b6102bb60048036038101906102b691906118d1565b610768565b6040516102c89190611fd5565b60405180910390f35b6102eb60048036038101906102e6919061181d565b610814565b6040516102f891906121ad565b60405180910390f35b61031b60048036038101906103169190611936565b61085c565b6040516103289190611fd5565b60405180910390f35b6103396108c7565b604051610346919061200b565b60405180910390f35b610369600480360381019061036491906118d1565b610959565b005b610373610a10565b6040516103809190611ff0565b60405180910390f35b6103a3600480360381019061039e91906118d1565b610a17565b6040516103b09190611fd5565b60405180910390f35b6103d360048036038101906103ce91906118d1565b610b02565b6040516103e09190611fd5565b60405180910390f35b61040360048036038101906103fe9190611936565b610b20565b005b61041f600480360381019061041a9190611846565b610b49565b60405161042c91906121ad565b60405180910390f35b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806104a857506104a782610bd0565b5b9050919050565b6060600380546104be906123d6565b80601f01602080910402602001604051908101604052809291908181526020018280546104ea906123d6565b80156105375780601f1061050c57610100808354040283529160200191610537565b820191906000526020600020905b81548152906001019060200180831161051a57829003601f168201915b5050505050905090565b600061055561054e610c3a565b8484610c42565b6001905092915050565b6000600254905090565b6000610576848484610e0d565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105c1610c3a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610641576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610638906120cd565b60405180910390fd5b6106558561064d610c3a565b858403610c42565b60019150509392505050565b600060056000838152602001908152602001600020600101549050919050565b7f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84881565b6106ae82610661565b6106bf816106ba610c3a565b61108e565b6106c9838361112b565b505050565b6000600860009054906101000a900460ff16905090565b6106ed610c3a565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461075a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107519061218d565b60405180910390fd5b610764828261120c565b5050565b600061080a610775610c3a565b848460016000610783610c3a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610805919061220a565b610c42565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006005600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6060600480546108d6906123d6565b80601f0160208091040260200160405190810160405280929190818152602001828054610902906123d6565b801561094f5780601f106109245761010080835404028352916020019161094f565b820191906000526020600020905b81548152906001019060200180831161093257829003601f168201915b5050505050905090565b61098a7f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a848610985610c3a565b61085c565b6109c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c0906120ed565b60405180910390fd5b6109d382826112ee565b7f696de425f79f4a40bc6d2122ca50507f0efbeabbff86a84871b7196ab8ea8df78282604051610a04929190611fac565b60405180910390a15050565b6000801b81565b60008060016000610a26610c3a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ae3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ada9061216d565b60405180910390fd5b610af7610aee610c3a565b85858403610c42565b600191505092915050565b6000610b16610b0f610c3a565b8484610e0d565b6001905092915050565b610b2982610661565b610b3a81610b35610c3a565b61108e565b610b44838361120c565b505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610cb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca99061214d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d199061208d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610e0091906121ad565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e749061212d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610eed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee49061204d565b60405180910390fd5b610ef88383836114c5565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610f7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f75906120ad565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611011919061220a565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161107591906121ad565b60405180910390a36110888484846114ca565b50505050565b611098828261085c565b611127576110bd8173ffffffffffffffffffffffffffffffffffffffff1660146114cf565b6110cb8360001c60206114cf565b6040516020016110dc929190611f72565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111e919061200b565b60405180910390fd5b5050565b611135828261085c565b6112085760016005600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506111ad610c3a565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b611216828261085c565b156112ea5760006005600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061128f610c3a565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561135e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113559061210d565b60405180910390fd5b61136a826000836114c5565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156113f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e79061206d565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816002600082825461144791906122ba565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114ac91906121ad565b60405180910390a36114c0836000846114ca565b505050565b505050565b505050565b6060600060028360026114e29190612260565b6114ec919061220a565b67ffffffffffffffff81111561152b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801561155d5781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106115bb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611645577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026116859190612260565b61168f919061220a565b90505b600181111561177b577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106116f7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b1a60f81b828281518110611734577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080611774906123ac565b9050611692565b50600084146117bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b69061202d565b60405180910390fd5b8091505092915050565b6000813590506117d881612477565b92915050565b6000813590506117ed8161248e565b92915050565b600081359050611802816124a5565b92915050565b600081359050611817816124bc565b92915050565b60006020828403121561182f57600080fd5b600061183d848285016117c9565b91505092915050565b6000806040838503121561185957600080fd5b6000611867858286016117c9565b9250506020611878858286016117c9565b9150509250929050565b60008060006060848603121561189757600080fd5b60006118a5868287016117c9565b93505060206118b6868287016117c9565b92505060406118c786828701611808565b9150509250925092565b600080604083850312156118e457600080fd5b60006118f2858286016117c9565b925050602061190385828601611808565b9150509250929050565b60006020828403121561191f57600080fd5b600061192d848285016117de565b91505092915050565b6000806040838503121561194957600080fd5b6000611957858286016117de565b9250506020611968858286016117c9565b9150509250929050565b60006020828403121561198457600080fd5b6000611992848285016117f3565b91505092915050565b6119a4816122ee565b82525050565b6119b381612300565b82525050565b6119c28161230c565b82525050565b60006119d3826121e3565b6119dd81856121ee565b93506119ed818560208601612379565b6119f681612466565b840191505092915050565b6000611a0c826121e3565b611a1681856121ff565b9350611a26818560208601612379565b80840191505092915050565b6000611a3f6020836121ee565b91507f537472696e67733a20686578206c656e67746820696e73756666696369656e746000830152602082019050919050565b6000611a7f6023836121ee565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611ae56022836121ee565b91507f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008301527f63650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611b4b6022836121ee565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611bb16026836121ee565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611c176028836121ee565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206160008301527f6c6c6f77616e63650000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611c7d6021836121ee565b91507f56414e20546f6b656e3a2043616c6c6572206973206e6f742061206275726e6560008301527f72000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611ce36021836121ee565b91507f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008301527f73000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611d496025836121ee565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611daf6024836121ee565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611e156017836121ff565b91507f416363657373436f6e74726f6c3a206163636f756e74200000000000000000006000830152601782019050919050565b6000611e556025836121ee565b91507f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611ebb6011836121ff565b91507f206973206d697373696e6720726f6c65200000000000000000000000000000006000830152601182019050919050565b6000611efb602f836121ee565b91507f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008301527f20726f6c657320666f722073656c6600000000000000000000000000000000006020830152604082019050919050565b611f5d81612362565b82525050565b611f6c8161236c565b82525050565b6000611f7d82611e08565b9150611f898285611a01565b9150611f9482611eae565b9150611fa08284611a01565b91508190509392505050565b6000604082019050611fc1600083018561199b565b611fce6020830184611f54565b9392505050565b6000602082019050611fea60008301846119aa565b92915050565b600060208201905061200560008301846119b9565b92915050565b6000602082019050818103600083015261202581846119c8565b905092915050565b6000602082019050818103600083015261204681611a32565b9050919050565b6000602082019050818103600083015261206681611a72565b9050919050565b6000602082019050818103600083015261208681611ad8565b9050919050565b600060208201905081810360008301526120a681611b3e565b9050919050565b600060208201905081810360008301526120c681611ba4565b9050919050565b600060208201905081810360008301526120e681611c0a565b9050919050565b6000602082019050818103600083015261210681611c70565b9050919050565b6000602082019050818103600083015261212681611cd6565b9050919050565b6000602082019050818103600083015261214681611d3c565b9050919050565b6000602082019050818103600083015261216681611da2565b9050919050565b6000602082019050818103600083015261218681611e48565b9050919050565b600060208201905081810360008301526121a681611eee565b9050919050565b60006020820190506121c26000830184611f54565b92915050565b60006020820190506121dd6000830184611f63565b92915050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600061221582612362565b915061222083612362565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561225557612254612408565b5b828201905092915050565b600061226b82612362565b915061227683612362565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156122af576122ae612408565b5b828202905092915050565b60006122c582612362565b91506122d083612362565b9250828210156122e3576122e2612408565b5b828203905092915050565b60006122f982612342565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561239757808201518184015260208101905061237c565b838111156123a6576000848401525b50505050565b60006123b782612362565b915060008214156123cb576123ca612408565b5b600182039050919050565b600060028204905060018216806123ee57607f821691505b6020821081141561240257612401612437565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b612480816122ee565b811461248b57600080fd5b50565b6124978161230c565b81146124a257600080fd5b50565b6124ae81612316565b81146124b957600080fd5b50565b6124c581612362565b81146124d057600080fd5b5056fea2646970667358221220fdce76140e2b3d64dca19779bae8ccaedd6e922734b6a6e4e94273fa9b6ff69664736f6c63430008000033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061012c5760003560e01c806339509351116100ad578063a217fddf11610071578063a217fddf1461036b578063a457c2d714610389578063a9059cbb146103b9578063d547741f146103e9578063dd62ed3e146104055761012c565b806339509351146102a157806370a08231146102d157806391d148541461030157806395d89b41146103315780639dc29fac1461034f5761012c565b8063248a9ca3116100f4578063248a9ca3146101fd578063282c51f31461022d5780632f2ff15d1461024b578063313ce5671461026757806336568abe146102855761012c565b806301ffc9a71461013157806306fdde0314610161578063095ea7b31461017f57806318160ddd146101af57806323b872dd146101cd575b600080fd5b61014b60048036038101906101469190611972565b610435565b6040516101589190611fd5565b60405180910390f35b6101696104af565b604051610176919061200b565b60405180910390f35b610199600480360381019061019491906118d1565b610541565b6040516101a69190611fd5565b60405180910390f35b6101b761055f565b6040516101c491906121ad565b60405180910390f35b6101e760048036038101906101e29190611882565b610569565b6040516101f49190611fd5565b60405180910390f35b6102176004803603810190610212919061190d565b610661565b6040516102249190611ff0565b60405180910390f35b610235610681565b6040516102429190611ff0565b60405180910390f35b61026560048036038101906102609190611936565b6106a5565b005b61026f6106ce565b60405161027c91906121c8565b60405180910390f35b61029f600480360381019061029a9190611936565b6106e5565b005b6102bb60048036038101906102b691906118d1565b610768565b6040516102c89190611fd5565b60405180910390f35b6102eb60048036038101906102e6919061181d565b610814565b6040516102f891906121ad565b60405180910390f35b61031b60048036038101906103169190611936565b61085c565b6040516103289190611fd5565b60405180910390f35b6103396108c7565b604051610346919061200b565b60405180910390f35b610369600480360381019061036491906118d1565b610959565b005b610373610a10565b6040516103809190611ff0565b60405180910390f35b6103a3600480360381019061039e91906118d1565b610a17565b6040516103b09190611fd5565b60405180910390f35b6103d360048036038101906103ce91906118d1565b610b02565b6040516103e09190611fd5565b60405180910390f35b61040360048036038101906103fe9190611936565b610b20565b005b61041f600480360381019061041a9190611846565b610b49565b60405161042c91906121ad565b60405180910390f35b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806104a857506104a782610bd0565b5b9050919050565b6060600380546104be906123d6565b80601f01602080910402602001604051908101604052809291908181526020018280546104ea906123d6565b80156105375780601f1061050c57610100808354040283529160200191610537565b820191906000526020600020905b81548152906001019060200180831161051a57829003601f168201915b5050505050905090565b600061055561054e610c3a565b8484610c42565b6001905092915050565b6000600254905090565b6000610576848484610e0d565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105c1610c3a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610641576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610638906120cd565b60405180910390fd5b6106558561064d610c3a565b858403610c42565b60019150509392505050565b600060056000838152602001908152602001600020600101549050919050565b7f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84881565b6106ae82610661565b6106bf816106ba610c3a565b61108e565b6106c9838361112b565b505050565b6000600860009054906101000a900460ff16905090565b6106ed610c3a565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461075a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107519061218d565b60405180910390fd5b610764828261120c565b5050565b600061080a610775610c3a565b848460016000610783610c3a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610805919061220a565b610c42565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006005600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6060600480546108d6906123d6565b80601f0160208091040260200160405190810160405280929190818152602001828054610902906123d6565b801561094f5780601f106109245761010080835404028352916020019161094f565b820191906000526020600020905b81548152906001019060200180831161093257829003601f168201915b5050505050905090565b61098a7f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a848610985610c3a565b61085c565b6109c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c0906120ed565b60405180910390fd5b6109d382826112ee565b7f696de425f79f4a40bc6d2122ca50507f0efbeabbff86a84871b7196ab8ea8df78282604051610a04929190611fac565b60405180910390a15050565b6000801b81565b60008060016000610a26610c3a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ae3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ada9061216d565b60405180910390fd5b610af7610aee610c3a565b85858403610c42565b600191505092915050565b6000610b16610b0f610c3a565b8484610e0d565b6001905092915050565b610b2982610661565b610b3a81610b35610c3a565b61108e565b610b44838361120c565b505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610cb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca99061214d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d199061208d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610e0091906121ad565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e749061212d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610eed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee49061204d565b60405180910390fd5b610ef88383836114c5565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610f7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f75906120ad565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611011919061220a565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161107591906121ad565b60405180910390a36110888484846114ca565b50505050565b611098828261085c565b611127576110bd8173ffffffffffffffffffffffffffffffffffffffff1660146114cf565b6110cb8360001c60206114cf565b6040516020016110dc929190611f72565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111e919061200b565b60405180910390fd5b5050565b611135828261085c565b6112085760016005600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506111ad610c3a565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b611216828261085c565b156112ea5760006005600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061128f610c3a565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561135e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113559061210d565b60405180910390fd5b61136a826000836114c5565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156113f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e79061206d565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816002600082825461144791906122ba565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114ac91906121ad565b60405180910390a36114c0836000846114ca565b505050565b505050565b505050565b6060600060028360026114e29190612260565b6114ec919061220a565b67ffffffffffffffff81111561152b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801561155d5781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106115bb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611645577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026116859190612260565b61168f919061220a565b90505b600181111561177b577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106116f7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b1a60f81b828281518110611734577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080611774906123ac565b9050611692565b50600084146117bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b69061202d565b60405180910390fd5b8091505092915050565b6000813590506117d881612477565b92915050565b6000813590506117ed8161248e565b92915050565b600081359050611802816124a5565b92915050565b600081359050611817816124bc565b92915050565b60006020828403121561182f57600080fd5b600061183d848285016117c9565b91505092915050565b6000806040838503121561185957600080fd5b6000611867858286016117c9565b9250506020611878858286016117c9565b9150509250929050565b60008060006060848603121561189757600080fd5b60006118a5868287016117c9565b93505060206118b6868287016117c9565b92505060406118c786828701611808565b9150509250925092565b600080604083850312156118e457600080fd5b60006118f2858286016117c9565b925050602061190385828601611808565b9150509250929050565b60006020828403121561191f57600080fd5b600061192d848285016117de565b91505092915050565b6000806040838503121561194957600080fd5b6000611957858286016117de565b9250506020611968858286016117c9565b9150509250929050565b60006020828403121561198457600080fd5b6000611992848285016117f3565b91505092915050565b6119a4816122ee565b82525050565b6119b381612300565b82525050565b6119c28161230c565b82525050565b60006119d3826121e3565b6119dd81856121ee565b93506119ed818560208601612379565b6119f681612466565b840191505092915050565b6000611a0c826121e3565b611a1681856121ff565b9350611a26818560208601612379565b80840191505092915050565b6000611a3f6020836121ee565b91507f537472696e67733a20686578206c656e67746820696e73756666696369656e746000830152602082019050919050565b6000611a7f6023836121ee565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611ae56022836121ee565b91507f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008301527f63650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611b4b6022836121ee565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611bb16026836121ee565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611c176028836121ee565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206160008301527f6c6c6f77616e63650000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611c7d6021836121ee565b91507f56414e20546f6b656e3a2043616c6c6572206973206e6f742061206275726e6560008301527f72000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611ce36021836121ee565b91507f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008301527f73000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611d496025836121ee565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611daf6024836121ee565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611e156017836121ff565b91507f416363657373436f6e74726f6c3a206163636f756e74200000000000000000006000830152601782019050919050565b6000611e556025836121ee565b91507f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611ebb6011836121ff565b91507f206973206d697373696e6720726f6c65200000000000000000000000000000006000830152601182019050919050565b6000611efb602f836121ee565b91507f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008301527f20726f6c657320666f722073656c6600000000000000000000000000000000006020830152604082019050919050565b611f5d81612362565b82525050565b611f6c8161236c565b82525050565b6000611f7d82611e08565b9150611f898285611a01565b9150611f9482611eae565b9150611fa08284611a01565b91508190509392505050565b6000604082019050611fc1600083018561199b565b611fce6020830184611f54565b9392505050565b6000602082019050611fea60008301846119aa565b92915050565b600060208201905061200560008301846119b9565b92915050565b6000602082019050818103600083015261202581846119c8565b905092915050565b6000602082019050818103600083015261204681611a32565b9050919050565b6000602082019050818103600083015261206681611a72565b9050919050565b6000602082019050818103600083015261208681611ad8565b9050919050565b600060208201905081810360008301526120a681611b3e565b9050919050565b600060208201905081810360008301526120c681611ba4565b9050919050565b600060208201905081810360008301526120e681611c0a565b9050919050565b6000602082019050818103600083015261210681611c70565b9050919050565b6000602082019050818103600083015261212681611cd6565b9050919050565b6000602082019050818103600083015261214681611d3c565b9050919050565b6000602082019050818103600083015261216681611da2565b9050919050565b6000602082019050818103600083015261218681611e48565b9050919050565b600060208201905081810360008301526121a681611eee565b9050919050565b60006020820190506121c26000830184611f54565b92915050565b60006020820190506121dd6000830184611f63565b92915050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600061221582612362565b915061222083612362565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561225557612254612408565b5b828201905092915050565b600061226b82612362565b915061227683612362565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156122af576122ae612408565b5b828202905092915050565b60006122c582612362565b91506122d083612362565b9250828210156122e3576122e2612408565b5b828203905092915050565b60006122f982612342565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561239757808201518184015260208101905061237c565b838111156123a6576000848401525b50505050565b60006123b782612362565b915060008214156123cb576123ca612408565b5b600182039050919050565b600060028204905060018216806123ee57607f821691505b6020821081141561240257612401612437565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b612480816122ee565b811461248b57600080fd5b50565b6124978161230c565b81146124a257600080fd5b50565b6124ae81612316565b81146124b957600080fd5b50565b6124c581612362565b81146124d057600080fd5b5056fea2646970667358221220fdce76140e2b3d64dca19779bae8ccaedd6e922734b6a6e4e94273fa9b6ff69664736f6c63430008000033
Deployed Bytecode Sourcemap
31312:872:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10546:204;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21249:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23416:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22369:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24067:492;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11957:123;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31528:62;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12342:147;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32078:101;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13390:218;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24968:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22540:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10842:139;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21468:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31854:216;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9933:49;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25686:413;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22880:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12734:149;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23118:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10546:204;10631:4;10670:32;10655:47;;;:11;:47;;;;:87;;;;10706:36;10730:11;10706:23;:36::i;:::-;10655:87;10648:94;;10546:204;;;:::o;21249:100::-;21303:13;21336:5;21329:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21249:100;:::o;23416:169::-;23499:4;23516:39;23525:12;:10;:12::i;:::-;23539:7;23548:6;23516:8;:39::i;:::-;23573:4;23566:11;;23416:169;;;;:::o;22369:108::-;22430:7;22457:12;;22450:19;;22369:108;:::o;24067:492::-;24207:4;24224:36;24234:6;24242:9;24253:6;24224:9;:36::i;:::-;24273:24;24300:11;:19;24312:6;24300:19;;;;;;;;;;;;;;;:33;24320:12;:10;:12::i;:::-;24300:33;;;;;;;;;;;;;;;;24273:60;;24372:6;24352:16;:26;;24344:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;24459:57;24468:6;24476:12;:10;:12::i;:::-;24509:6;24490:16;:25;24459:8;:57::i;:::-;24547:4;24540:11;;;24067:492;;;;;:::o;11957:123::-;12023:7;12050:6;:12;12057:4;12050:12;;;;;;;;;;;:22;;;12043:29;;11957:123;;;:::o;31528:62::-;31566:24;31528:62;:::o;12342:147::-;12425:18;12438:4;12425:12;:18::i;:::-;10424:30;10435:4;10441:12;:10;:12::i;:::-;10424:10;:30::i;:::-;12456:25:::1;12467:4;12473:7;12456:10;:25::i;:::-;12342:147:::0;;;:::o;32078:101::-;32136:5;32161:10;;;;;;;;;;;32154:17;;32078:101;:::o;13390:218::-;13497:12;:10;:12::i;:::-;13486:23;;:7;:23;;;13478:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;13574:26;13586:4;13592:7;13574:11;:26::i;:::-;13390:218;;:::o;24968:215::-;25056:4;25073:80;25082:12;:10;:12::i;:::-;25096:7;25142:10;25105:11;:25;25117:12;:10;:12::i;:::-;25105:25;;;;;;;;;;;;;;;:34;25131:7;25105:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;25073:8;:80::i;:::-;25171:4;25164:11;;24968:215;;;;:::o;22540:127::-;22614:7;22641:9;:18;22651:7;22641:18;;;;;;;;;;;;;;;;22634:25;;22540:127;;;:::o;10842:139::-;10920:4;10944:6;:12;10951:4;10944:12;;;;;;;;;;;:20;;:29;10965:7;10944:29;;;;;;;;;;;;;;;;;;;;;;;;;10937:36;;10842:139;;;;:::o;21468:104::-;21524:13;21557:7;21550:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21468:104;:::o;31854:216::-;31924:34;31566:24;31945:12;:10;:12::i;:::-;31924:7;:34::i;:::-;31916:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;32007:19;32013:4;32019:6;32007:5;:19::i;:::-;32042:20;32049:4;32055:6;32042:20;;;;;;;:::i;:::-;;;;;;;;31854:216;;:::o;9933:49::-;9978:4;9933:49;;;:::o;25686:413::-;25779:4;25796:24;25823:11;:25;25835:12;:10;:12::i;:::-;25823:25;;;;;;;;;;;;;;;:34;25849:7;25823:34;;;;;;;;;;;;;;;;25796:61;;25896:15;25876:16;:35;;25868:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;25989:67;25998:12;:10;:12::i;:::-;26012:7;26040:15;26021:16;:34;25989:8;:67::i;:::-;26087:4;26080:11;;;25686:413;;;;:::o;22880:175::-;22966:4;22983:42;22993:12;:10;:12::i;:::-;23007:9;23018:6;22983:9;:42::i;:::-;23043:4;23036:11;;22880:175;;;;:::o;12734:149::-;12818:18;12831:4;12818:12;:18::i;:::-;10424:30;10435:4;10441:12;:10;:12::i;:::-;10424:10;:30::i;:::-;12849:26:::1;12861:4;12867:7;12849:11;:26::i;:::-;12734:149:::0;;;:::o;23118:151::-;23207:7;23234:11;:18;23246:5;23234:18;;;;;;;;;;;;;;;:27;23253:7;23234:27;;;;;;;;;;;;;;;;23227:34;;23118:151;;;;:::o;7818:157::-;7903:4;7942:25;7927:40;;;:11;:40;;;;7920:47;;7818:157;;;:::o;3712:98::-;3765:7;3792:10;3785:17;;3712:98;:::o;29370:380::-;29523:1;29506:19;;:5;:19;;;;29498:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29604:1;29585:21;;:7;:21;;;;29577:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29688:6;29658:11;:18;29670:5;29658:18;;;;;;;;;;;;;;;:27;29677:7;29658:27;;;;;;;;;;;;;;;:36;;;;29726:7;29710:32;;29719:5;29710:32;;;29735:6;29710:32;;;;;;:::i;:::-;;;;;;;;29370:380;;;:::o;26589:733::-;26747:1;26729:20;;:6;:20;;;;26721:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;26831:1;26810:23;;:9;:23;;;;26802:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;26886:47;26907:6;26915:9;26926:6;26886:20;:47::i;:::-;26946:21;26970:9;:17;26980:6;26970:17;;;;;;;;;;;;;;;;26946:41;;27023:6;27006:13;:23;;26998:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;27144:6;27128:13;:22;27108:9;:17;27118:6;27108:17;;;;;;;;;;;;;;;:42;;;;27196:6;27172:9;:20;27182:9;27172:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;27237:9;27220:35;;27229:6;27220:35;;;27248:6;27220:35;;;;;;:::i;:::-;;;;;;;;27268:46;27288:6;27296:9;27307:6;27268:19;:46::i;:::-;26589:733;;;;:::o;11271:497::-;11352:22;11360:4;11366:7;11352;:22::i;:::-;11347:414;;11540:41;11568:7;11540:41;;11578:2;11540:19;:41::i;:::-;11654:38;11682:4;11674:13;;11689:2;11654:19;:38::i;:::-;11445:270;;;;;;;;;:::i;:::-;;;;;;;;;;;;;11391:358;;;;;;;;;;;:::i;:::-;;;;;;;;11347:414;11271:497;;:::o;14891:238::-;14975:22;14983:4;14989:7;14975;:22::i;:::-;14970:152;;15046:4;15014:6;:12;15021:4;15014:12;;;;;;;;;;;:20;;:29;15035:7;15014:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;15097:12;:10;:12::i;:::-;15070:40;;15088:7;15070:40;;15082:4;15070:40;;;;;;;;;;14970:152;14891:238;;:::o;15261:239::-;15345:22;15353:4;15359:7;15345;:22::i;:::-;15341:152;;;15416:5;15384:6;:12;15391:4;15384:12;;;;;;;;;;;:20;;:29;15405:7;15384:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;15468:12;:10;:12::i;:::-;15441:40;;15459:7;15441:40;;15453:4;15441:40;;;;;;;;;;15341:152;15261:239;;:::o;28341:591::-;28444:1;28425:21;;:7;:21;;;;28417:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28497:49;28518:7;28535:1;28539:6;28497:20;:49::i;:::-;28559:22;28584:9;:18;28594:7;28584:18;;;;;;;;;;;;;;;;28559:43;;28639:6;28621:14;:24;;28613:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;28758:6;28741:14;:23;28720:9;:18;28730:7;28720:18;;;;;;;;;;;;;;;:44;;;;28802:6;28786:12;;:22;;;;;;;:::i;:::-;;;;;;;;28852:1;28826:37;;28835:7;28826:37;;;28856:6;28826:37;;;;;;:::i;:::-;;;;;;;;28876:48;28896:7;28913:1;28917:6;28876:19;:48::i;:::-;28341:591;;;:::o;30350:125::-;;;;:::o;31079:124::-;;;;:::o;5588:451::-;5663:13;5689:19;5734:1;5725:6;5721:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;5711:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5689:47;;5747:15;:6;5754:1;5747:9;;;;;;;;;;;;;;;;;;;:15;;;;;;;;;;;5773;:6;5780:1;5773:9;;;;;;;;;;;;;;;;;;;:15;;;;;;;;;;;5804:9;5829:1;5820:6;5816:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;5804:26;;5799:135;5836:1;5832;:5;5799:135;;;5871:12;5892:3;5884:5;:11;5871:25;;;;;;;;;;;;;;;;;;5859:6;5866:1;5859:9;;;;;;;;;;;;;;;;;;;:37;;;;;;;;;;;5921:1;5911:11;;;;;5839:3;;;;:::i;:::-;;;5799:135;;;;5961:1;5952:5;:10;5944:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;6024:6;6010:21;;;5588:451;;;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:139::-;;236:6;223:20;214:29;;252:33;279:5;252:33;:::i;:::-;204:87;;;;:::o;297:137::-;;380:6;367:20;358:29;;396:32;422:5;396:32;:::i;:::-;348:86;;;;:::o;440:139::-;;524:6;511:20;502:29;;540:33;567:5;540:33;:::i;:::-;492:87;;;;:::o;585:262::-;;693:2;681:9;672:7;668:23;664:32;661:2;;;709:1;706;699:12;661:2;752:1;777:53;822:7;813:6;802:9;798:22;777:53;:::i;:::-;767:63;;723:117;651:196;;;;:::o;853:407::-;;;978:2;966:9;957:7;953:23;949:32;946:2;;;994:1;991;984:12;946:2;1037:1;1062:53;1107:7;1098:6;1087:9;1083:22;1062:53;:::i;:::-;1052:63;;1008:117;1164:2;1190:53;1235:7;1226:6;1215:9;1211:22;1190:53;:::i;:::-;1180:63;;1135:118;936:324;;;;;:::o;1266:552::-;;;;1408:2;1396:9;1387:7;1383:23;1379:32;1376:2;;;1424:1;1421;1414:12;1376:2;1467:1;1492:53;1537:7;1528:6;1517:9;1513:22;1492:53;:::i;:::-;1482:63;;1438:117;1594:2;1620:53;1665:7;1656:6;1645:9;1641:22;1620:53;:::i;:::-;1610:63;;1565:118;1722:2;1748:53;1793:7;1784:6;1773:9;1769:22;1748:53;:::i;:::-;1738:63;;1693:118;1366:452;;;;;:::o;1824:407::-;;;1949:2;1937:9;1928:7;1924:23;1920:32;1917:2;;;1965:1;1962;1955:12;1917:2;2008:1;2033:53;2078:7;2069:6;2058:9;2054:22;2033:53;:::i;:::-;2023:63;;1979:117;2135:2;2161:53;2206:7;2197:6;2186:9;2182:22;2161:53;:::i;:::-;2151:63;;2106:118;1907:324;;;;;:::o;2237:262::-;;2345:2;2333:9;2324:7;2320:23;2316:32;2313:2;;;2361:1;2358;2351:12;2313:2;2404:1;2429:53;2474:7;2465:6;2454:9;2450:22;2429:53;:::i;:::-;2419:63;;2375:117;2303:196;;;;:::o;2505:407::-;;;2630:2;2618:9;2609:7;2605:23;2601:32;2598:2;;;2646:1;2643;2636:12;2598:2;2689:1;2714:53;2759:7;2750:6;2739:9;2735:22;2714:53;:::i;:::-;2704:63;;2660:117;2816:2;2842:53;2887:7;2878:6;2867:9;2863:22;2842:53;:::i;:::-;2832:63;;2787:118;2588:324;;;;;:::o;2918:260::-;;3025:2;3013:9;3004:7;3000:23;2996:32;2993:2;;;3041:1;3038;3031:12;2993:2;3084:1;3109:52;3153:7;3144:6;3133:9;3129:22;3109:52;:::i;:::-;3099:62;;3055:116;2983:195;;;;:::o;3184:118::-;3271:24;3289:5;3271:24;:::i;:::-;3266:3;3259:37;3249:53;;:::o;3308:109::-;3389:21;3404:5;3389:21;:::i;:::-;3384:3;3377:34;3367:50;;:::o;3423:118::-;3510:24;3528:5;3510:24;:::i;:::-;3505:3;3498:37;3488:53;;:::o;3547:364::-;;3663:39;3696:5;3663:39;:::i;:::-;3718:71;3782:6;3777:3;3718:71;:::i;:::-;3711:78;;3798:52;3843:6;3838:3;3831:4;3824:5;3820:16;3798:52;:::i;:::-;3875:29;3897:6;3875:29;:::i;:::-;3870:3;3866:39;3859:46;;3639:272;;;;;:::o;3917:377::-;;4051:39;4084:5;4051:39;:::i;:::-;4106:89;4188:6;4183:3;4106:89;:::i;:::-;4099:96;;4204:52;4249:6;4244:3;4237:4;4230:5;4226:16;4204:52;:::i;:::-;4281:6;4276:3;4272:16;4265:23;;4027:267;;;;;:::o;4300:330::-;;4463:67;4527:2;4522:3;4463:67;:::i;:::-;4456:74;;4560:34;4556:1;4551:3;4547:11;4540:55;4621:2;4616:3;4612:12;4605:19;;4446:184;;;:::o;4636:367::-;;4799:67;4863:2;4858:3;4799:67;:::i;:::-;4792:74;;4896:34;4892:1;4887:3;4883:11;4876:55;4962:5;4957:2;4952:3;4948:12;4941:27;4994:2;4989:3;4985:12;4978:19;;4782:221;;;:::o;5009:366::-;;5172:67;5236:2;5231:3;5172:67;:::i;:::-;5165:74;;5269:34;5265:1;5260:3;5256:11;5249:55;5335:4;5330:2;5325:3;5321:12;5314:26;5366:2;5361:3;5357:12;5350:19;;5155:220;;;:::o;5381:366::-;;5544:67;5608:2;5603:3;5544:67;:::i;:::-;5537:74;;5641:34;5637:1;5632:3;5628:11;5621:55;5707:4;5702:2;5697:3;5693:12;5686:26;5738:2;5733:3;5729:12;5722:19;;5527:220;;;:::o;5753:370::-;;5916:67;5980:2;5975:3;5916:67;:::i;:::-;5909:74;;6013:34;6009:1;6004:3;6000:11;5993:55;6079:8;6074:2;6069:3;6065:12;6058:30;6114:2;6109:3;6105:12;6098:19;;5899:224;;;:::o;6129:372::-;;6292:67;6356:2;6351:3;6292:67;:::i;:::-;6285:74;;6389:34;6385:1;6380:3;6376:11;6369:55;6455:10;6450:2;6445:3;6441:12;6434:32;6492:2;6487:3;6483:12;6476:19;;6275:226;;;:::o;6507:365::-;;6670:67;6734:2;6729:3;6670:67;:::i;:::-;6663:74;;6767:34;6763:1;6758:3;6754:11;6747:55;6833:3;6828:2;6823:3;6819:12;6812:25;6863:2;6858:3;6854:12;6847:19;;6653:219;;;:::o;6878:365::-;;7041:67;7105:2;7100:3;7041:67;:::i;:::-;7034:74;;7138:34;7134:1;7129:3;7125:11;7118:55;7204:3;7199:2;7194:3;7190:12;7183:25;7234:2;7229:3;7225:12;7218:19;;7024:219;;;:::o;7249:369::-;;7412:67;7476:2;7471:3;7412:67;:::i;:::-;7405:74;;7509:34;7505:1;7500:3;7496:11;7489:55;7575:7;7570:2;7565:3;7561:12;7554:29;7609:2;7604:3;7600:12;7593:19;;7395:223;;;:::o;7624:368::-;;7787:67;7851:2;7846:3;7787:67;:::i;:::-;7780:74;;7884:34;7880:1;7875:3;7871:11;7864:55;7950:6;7945:2;7940:3;7936:12;7929:28;7983:2;7978:3;7974:12;7967:19;;7770:222;;;:::o;7998:357::-;;8179:85;8261:2;8256:3;8179:85;:::i;:::-;8172:92;;8294:25;8290:1;8285:3;8281:11;8274:46;8346:2;8341:3;8337:12;8330:19;;8162:193;;;:::o;8361:369::-;;8524:67;8588:2;8583:3;8524:67;:::i;:::-;8517:74;;8621:34;8617:1;8612:3;8608:11;8601:55;8687:7;8682:2;8677:3;8673:12;8666:29;8721:2;8716:3;8712:12;8705:19;;8507:223;;;:::o;8736:351::-;;8917:85;8999:2;8994:3;8917:85;:::i;:::-;8910:92;;9032:19;9028:1;9023:3;9019:11;9012:40;9078:2;9073:3;9069:12;9062:19;;8900:187;;;:::o;9093:379::-;;9256:67;9320:2;9315:3;9256:67;:::i;:::-;9249:74;;9353:34;9349:1;9344:3;9340:11;9333:55;9419:17;9414:2;9409:3;9405:12;9398:39;9463:2;9458:3;9454:12;9447:19;;9239:233;;;:::o;9478:118::-;9565:24;9583:5;9565:24;:::i;:::-;9560:3;9553:37;9543:53;;:::o;9602:112::-;9685:22;9701:5;9685:22;:::i;:::-;9680:3;9673:35;9663:51;;:::o;9720:967::-;;10124:148;10268:3;10124:148;:::i;:::-;10117:155;;10289:95;10380:3;10371:6;10289:95;:::i;:::-;10282:102;;10401:148;10545:3;10401:148;:::i;:::-;10394:155;;10566:95;10657:3;10648:6;10566:95;:::i;:::-;10559:102;;10678:3;10671:10;;10106:581;;;;;:::o;10693:332::-;;10852:2;10841:9;10837:18;10829:26;;10865:71;10933:1;10922:9;10918:17;10909:6;10865:71;:::i;:::-;10946:72;11014:2;11003:9;10999:18;10990:6;10946:72;:::i;:::-;10819:206;;;;;:::o;11031:210::-;;11156:2;11145:9;11141:18;11133:26;;11169:65;11231:1;11220:9;11216:17;11207:6;11169:65;:::i;:::-;11123:118;;;;:::o;11247:222::-;;11378:2;11367:9;11363:18;11355:26;;11391:71;11459:1;11448:9;11444:17;11435:6;11391:71;:::i;:::-;11345:124;;;;:::o;11475:313::-;;11626:2;11615:9;11611:18;11603:26;;11675:9;11669:4;11665:20;11661:1;11650:9;11646:17;11639:47;11703:78;11776:4;11767:6;11703:78;:::i;:::-;11695:86;;11593:195;;;;:::o;11794:419::-;;11998:2;11987:9;11983:18;11975:26;;12047:9;12041:4;12037:20;12033:1;12022:9;12018:17;12011:47;12075:131;12201:4;12075:131;:::i;:::-;12067:139;;11965:248;;;:::o;12219:419::-;;12423:2;12412:9;12408:18;12400:26;;12472:9;12466:4;12462:20;12458:1;12447:9;12443:17;12436:47;12500:131;12626:4;12500:131;:::i;:::-;12492:139;;12390:248;;;:::o;12644:419::-;;12848:2;12837:9;12833:18;12825:26;;12897:9;12891:4;12887:20;12883:1;12872:9;12868:17;12861:47;12925:131;13051:4;12925:131;:::i;:::-;12917:139;;12815:248;;;:::o;13069:419::-;;13273:2;13262:9;13258:18;13250:26;;13322:9;13316:4;13312:20;13308:1;13297:9;13293:17;13286:47;13350:131;13476:4;13350:131;:::i;:::-;13342:139;;13240:248;;;:::o;13494:419::-;;13698:2;13687:9;13683:18;13675:26;;13747:9;13741:4;13737:20;13733:1;13722:9;13718:17;13711:47;13775:131;13901:4;13775:131;:::i;:::-;13767:139;;13665:248;;;:::o;13919:419::-;;14123:2;14112:9;14108:18;14100:26;;14172:9;14166:4;14162:20;14158:1;14147:9;14143:17;14136:47;14200:131;14326:4;14200:131;:::i;:::-;14192:139;;14090:248;;;:::o;14344:419::-;;14548:2;14537:9;14533:18;14525:26;;14597:9;14591:4;14587:20;14583:1;14572:9;14568:17;14561:47;14625:131;14751:4;14625:131;:::i;:::-;14617:139;;14515:248;;;:::o;14769:419::-;;14973:2;14962:9;14958:18;14950:26;;15022:9;15016:4;15012:20;15008:1;14997:9;14993:17;14986:47;15050:131;15176:4;15050:131;:::i;:::-;15042:139;;14940:248;;;:::o;15194:419::-;;15398:2;15387:9;15383:18;15375:26;;15447:9;15441:4;15437:20;15433:1;15422:9;15418:17;15411:47;15475:131;15601:4;15475:131;:::i;:::-;15467:139;;15365:248;;;:::o;15619:419::-;;15823:2;15812:9;15808:18;15800:26;;15872:9;15866:4;15862:20;15858:1;15847:9;15843:17;15836:47;15900:131;16026:4;15900:131;:::i;:::-;15892:139;;15790:248;;;:::o;16044:419::-;;16248:2;16237:9;16233:18;16225:26;;16297:9;16291:4;16287:20;16283:1;16272:9;16268:17;16261:47;16325:131;16451:4;16325:131;:::i;:::-;16317:139;;16215:248;;;:::o;16469:419::-;;16673:2;16662:9;16658:18;16650:26;;16722:9;16716:4;16712:20;16708:1;16697:9;16693:17;16686:47;16750:131;16876:4;16750:131;:::i;:::-;16742:139;;16640:248;;;:::o;16894:222::-;;17025:2;17014:9;17010:18;17002:26;;17038:71;17106:1;17095:9;17091:17;17082:6;17038:71;:::i;:::-;16992:124;;;;:::o;17122:214::-;;17249:2;17238:9;17234:18;17226:26;;17262:67;17326:1;17315:9;17311:17;17302:6;17262:67;:::i;:::-;17216:120;;;;:::o;17342:99::-;;17428:5;17422:12;17412:22;;17401:40;;;:::o;17447:169::-;;17565:6;17560:3;17553:19;17605:4;17600:3;17596:14;17581:29;;17543:73;;;;:::o;17622:148::-;;17761:3;17746:18;;17736:34;;;;:::o;17776:305::-;;17835:20;17853:1;17835:20;:::i;:::-;17830:25;;17869:20;17887:1;17869:20;:::i;:::-;17864:25;;18023:1;17955:66;17951:74;17948:1;17945:81;17942:2;;;18029:18;;:::i;:::-;17942:2;18073:1;18070;18066:9;18059:16;;17820:261;;;;:::o;18087:348::-;;18150:20;18168:1;18150:20;:::i;:::-;18145:25;;18184:20;18202:1;18184:20;:::i;:::-;18179:25;;18372:1;18304:66;18300:74;18297:1;18294:81;18289:1;18282:9;18275:17;18271:105;18268:2;;;18379:18;;:::i;:::-;18268:2;18427:1;18424;18420:9;18409:20;;18135:300;;;;:::o;18441:191::-;;18501:20;18519:1;18501:20;:::i;:::-;18496:25;;18535:20;18553:1;18535:20;:::i;:::-;18530:25;;18574:1;18571;18568:8;18565:2;;;18579:18;;:::i;:::-;18565:2;18624:1;18621;18617:9;18609:17;;18486:146;;;;:::o;18638:96::-;;18704:24;18722:5;18704:24;:::i;:::-;18693:35;;18683:51;;;:::o;18740:90::-;;18817:5;18810:13;18803:21;18792:32;;18782:48;;;:::o;18836:77::-;;18902:5;18891:16;;18881:32;;;:::o;18919:149::-;;18995:66;18988:5;18984:78;18973:89;;18963:105;;;:::o;19074:126::-;;19151:42;19144:5;19140:54;19129:65;;19119:81;;;:::o;19206:77::-;;19272:5;19261:16;;19251:32;;;:::o;19289:86::-;;19364:4;19357:5;19353:16;19342:27;;19332:43;;;:::o;19381:307::-;19449:1;19459:113;19473:6;19470:1;19467:13;19459:113;;;19558:1;19553:3;19549:11;19543:18;19539:1;19534:3;19530:11;19523:39;19495:2;19492:1;19488:10;19483:15;;19459:113;;;19590:6;19587:1;19584:13;19581:2;;;19670:1;19661:6;19656:3;19652:16;19645:27;19581:2;19430:258;;;;:::o;19694:171::-;;19756:24;19774:5;19756:24;:::i;:::-;19747:33;;19802:4;19795:5;19792:15;19789:2;;;19810:18;;:::i;:::-;19789:2;19857:1;19850:5;19846:13;19839:20;;19737:128;;;:::o;19871:320::-;;19952:1;19946:4;19942:12;19932:22;;19999:1;19993:4;19989:12;20020:18;20010:2;;20076:4;20068:6;20064:17;20054:27;;20010:2;20138;20130:6;20127:14;20107:18;20104:38;20101:2;;;20157:18;;:::i;:::-;20101:2;19922:269;;;;:::o;20197:180::-;20245:77;20242:1;20235:88;20342:4;20339:1;20332:15;20366:4;20363:1;20356:15;20383:180;20431:77;20428:1;20421:88;20528:4;20525:1;20518:15;20552:4;20549:1;20542:15;20569:102;;20661:2;20657:7;20652:2;20645:5;20641:14;20637:28;20627:38;;20617:54;;;:::o;20677:122::-;20750:24;20768:5;20750:24;:::i;:::-;20743:5;20740:35;20730:2;;20789:1;20786;20779:12;20730:2;20720:79;:::o;20805:122::-;20878:24;20896:5;20878:24;:::i;:::-;20871:5;20868:35;20858:2;;20917:1;20914;20907:12;20858:2;20848:79;:::o;20933:120::-;21005:23;21022:5;21005:23;:::i;:::-;20998:5;20995:34;20985:2;;21043:1;21040;21033:12;20985:2;20975:78;:::o;21059:122::-;21132:24;21150:5;21132:24;:::i;:::-;21125:5;21122:35;21112:2;;21171:1;21168;21161:12;21112:2;21102:79;:::o
Swarm Source
ipfs://fdce76140e2b3d64dca19779bae8ccaedd6e922734b6a6e4e94273fa9b6ff696
Loading...
Loading
Loading...
Loading
OVERVIEW
Vanspor Token is the official fan token of the Vanspor Football Club, a sports club taking place in the 2nd League.Multichain Portfolio | 27 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.