ERC-20
Overview
Max Total Supply
200,000,000 WNT
Holders
8,111
Total Transfers
-
Market
Price
$0.00 @ 0.000000 POL
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
WicryptNetworkToken
Compiler Version
v0.7.0+commit.9e61f92b
Contract Source Code (Solidity)
/** *Submitted for verification at polygonscan.com on 2021-12-02 */ //SPDX-License-Identifier: Unlicense pragma solidity 0.7.0; /** *Submitted for verification at polygonscan.com on 2021-11-08 */ // File: Ownable.sol /* * Ownable * * Base contract with an owner. * Provides onlyOwner modifier, which prevents function from running if it is called by anyone other than the owner. */ abstract contract Ownable { address payable public owner; constructor() { owner = msg.sender; } modifier onlyOwner() { require(msg.sender == owner, "Unauthorized access to contract"); _; } function transferOwnership(address payable newOwner) public onlyOwner { if (newOwner != address(0)) { owner = newOwner; } } } // File: Address.sol /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require( address(this).balance >= amount, "Address: insufficient balance" ); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{value: amount}(""); require( success, "Address: unable to send value, recipient may have reverted" ); } } // File: SafeMath.sol /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } // File: interfaces/IERC20.sol /** * @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: SafeERC20.sol library SafeERC20 { using SafeMath for uint256; using Address for address; function safeTransfer( IERC20 token, address to, uint256 value ) internal { callOptionalReturn( token, abi.encodeWithSelector(token.transfer.selector, to, value) ); } function safeTransferFrom( IERC20 token, address from, address to, uint256 value ) internal { callOptionalReturn( token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value) ); } function safeApprove( IERC20 token, address spender, uint256 value ) internal { require( (value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); callOptionalReturn( token, abi.encodeWithSelector(token.approve.selector, spender, value) ); } function safeIncreaseAllowance( IERC20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender).add( value ); callOptionalReturn( token, abi.encodeWithSelector( token.approve.selector, spender, newAllowance ) ); } function safeDecreaseAllowance( IERC20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender).sub( value, "SafeERC20: decreased allowance below zero" ); callOptionalReturn( token, abi.encodeWithSelector( token.approve.selector, spender, newAllowance ) ); } function callOptionalReturn(IERC20 token, bytes memory data) private { require(address(token).isContract(), "SafeERC20: call to non-contract"); (bool success, bytes memory returndata) = address(token).call(data); require(success, "SafeERC20: low-level call failed"); if (returndata.length > 0) { require( abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed" ); } } } // File: Context.sol /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with GSN 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 payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } // File: Pausable.sol /** * @dev Contract module which allows children to implement an emergency stop * mechanism that can be triggered by an authorized account. * * This module is used through inheritance. It will make available the * modifiers `whenNotPaused` and `whenPaused`, which can be applied to * the functions of your contract. Note that they will not be pausable by * simply including this module, only once the modifiers are put in place. */ abstract contract Pausable is Context, Ownable { /** * @dev Emitted when the pause is triggered by `account`. */ event Paused(address account); /** * @dev Emitted when the pause is lifted by `account`. */ event Unpaused(address account); bool private _paused; /** * @dev Initializes the contract in unpaused state. */ constructor() { _paused = false; } /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view returns (bool) { return _paused; } /** * @dev Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused() { require(!_paused, "Pausable: paused"); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused() { require(_paused, "Pausable: not paused"); _; } /** * @dev Triggers stopped state. * * Requirements: * * - The contract must not be paused. */ function _pause() internal virtual onlyOwner whenNotPaused { _paused = true; emit Paused(_msgSender()); } /** * @dev Returns to normal state. * * Requirements: * * - The contract must be paused. */ function _unpause() internal virtual onlyOwner whenPaused { _paused = false; emit Unpaused(_msgSender()); } } // File: ERC20.sol /** * @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 guidelines: functions revert instead * of 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}. */ abstract contract ERC20 is Context, IERC20 { using SafeMath for uint256; using Address for address; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; uint8 private _decimals; /** * @dev Sets the values for {name} and {symbol}, initializes {decimals} with * a default value of 18. * * To select a different value for {decimals}, use {_setupDecimals}. * * All three of these values are immutable: they can only be set once during * construction. */ constructor( string memory name, string memory symbol, uint8 decimals, uint256 totalSupply ) { _name = name; _symbol = symbol; _decimals = decimals; _totalSupply = totalSupply; _totalSupply = totalSupply; _balances[msg.sender] = totalSupply; emit Transfer(address(0), msg.sender, totalSupply); } /** * @dev Returns the name of the token. */ function name() public view returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view 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 {_setupDecimals} is * called. * * 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 returns (uint8) { return _decimals; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view 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); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub( amount, "ERC20: transfer amount exceeds allowance" ) ); 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].add(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) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender].sub( subtractedValue, "ERC20: decreased allowance below zero" ) ); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is 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); _balances[sender] = _balances[sender].sub( amount, "ERC20: transfer amount exceeds balance" ); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(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 * * - `to` 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 = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(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); _balances[account] = _balances[account].sub( amount, "ERC20: burn amount exceeds balance" ); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens. * * This is 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 to 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 {} } // File: ERC20Pausable.sol /** * @dev ERC20 token with pausable token transfers, minting and burning. * * Useful for scenarios such as preventing trades until the end of an evaluation * period, or having an emergency switch for freezing all token transfers in the * event of a large bug. */ abstract contract ERC20Pausable is ERC20, Pausable { /** * @dev See {ERC20-_beforeTokenTransfer}. * * Requirements: * * - the contract must not be paused. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual override { super._beforeTokenTransfer(from, to, amount); require(!paused(), "ERC20Pausable: token transfer while paused"); } } // File: WicrptNetworkToken.sol interface ILiquidityRestrictor { function assureByAgent( address token, address from, address to ) external returns (bool allow, string memory message); function assureLiquidityRestrictions(address from, address to) external returns (bool allow, string memory message); } interface IAntisnipe { function assureCanTransfer( address sender, address from, address to, uint256 amount ) external returns (bool response); } contract WicryptNetworkToken is ERC20Pausable { using SafeMath for uint256; using SafeERC20 for IERC20; uint256 private _price; constructor() ERC20("Wicrypt Network Token", "WNT", 18, 200000000000000000000000000) {} function mint(uint256 amount) public virtual onlyOwner { address account = msg.sender; _mint(account, amount); } function withdrawTokens() public virtual onlyOwner { address contractAddress = address(this); uint256 tokenBalance = balanceOf(contractAddress); _transfer(contractAddress, owner, tokenBalance); } function price() public view returns (uint256) { return _price; } function SetPrice(uint256 priceInWei) public onlyOwner { _price = priceInWei; } /** * @dev Destroys `amount` tokens from the caller. * * See {ERC20-_burn}. */ function burn(uint256 amount) public virtual { _burn(_msgSender(), amount); } /** * @dev Destroys `amount` tokens from `account`, deducting from the caller's * allowance. * * See {ERC20-_burn} and {ERC20-allowance}. * * Requirements: * * - the caller must have allowance for ``accounts``'s tokens of at least * `amount`. */ function burnFrom(address account, uint256 amount) public virtual { uint256 decreasedAllowance = allowance(account, _msgSender()).sub( amount, "ERC20: burn amount exceeds allowance" ); _approve(account, _msgSender(), decreasedAllowance); _burn(account, amount); } function withdraw() external onlyOwner { uint256 balance = address(this).balance; msg.sender.transfer(balance); } function withdraw(address tokenAddress) external onlyOwner { IERC20 token = IERC20(tokenAddress); uint256 balance = token.balanceOf(address(this)); token.safeTransfer(_msgSender(), balance); } IAntisnipe public antisnipe = IAntisnipe(0x2306b42Baca1b34770EA489F4eC2023f5340B0Ca); ILiquidityRestrictor public liquidityRestrictor = ILiquidityRestrictor(0x9841BBb35BDeeDDD737103E02eD97a525b3FA85C); bool public antisnipeEnabled = true; bool public liquidityRestrictionEnabled = true; event AntisnipeDisabled(uint256 timestamp, address user); event LiquidityRestrictionDisabled(uint256 timestamp, address user); event AntisnipeAddressChanged(address addr); event LiquidityRestrictionAddressChanged(address addr); function _beforeTokenTransfer( address from, address to, uint256 amount ) internal override { if (from == address(0) || to == address(0)) return; if ( liquidityRestrictionEnabled && address(liquidityRestrictor) != address(0) ) { (bool allow, string memory message) = liquidityRestrictor .assureLiquidityRestrictions(from, to); require(allow, message); } if (antisnipeEnabled && address(antisnipe) != address(0)) { require(antisnipe.assureCanTransfer(msg.sender, from, to, amount)); } } function setAntisnipeDisable() external onlyOwner { require(antisnipeEnabled); antisnipeEnabled = false; emit AntisnipeDisabled(block.timestamp, msg.sender); } function setLiquidityRestrictorDisable() external onlyOwner { require(liquidityRestrictionEnabled); liquidityRestrictionEnabled = false; emit LiquidityRestrictionDisabled(block.timestamp, msg.sender); } function setAntisnipeAddress(address addr) external onlyOwner { antisnipe = IAntisnipe(addr); emit AntisnipeAddressChanged(addr); } function setLiquidityRestrictionAddress(address addr) external onlyOwner { liquidityRestrictor = ILiquidityRestrictor(addr); emit LiquidityRestrictionAddressChanged(addr); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"addr","type":"address"}],"name":"AntisnipeAddressChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":false,"internalType":"address","name":"user","type":"address"}],"name":"AntisnipeDisabled","type":"event"},{"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"}],"name":"LiquidityRestrictionAddressChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":false,"internalType":"address","name":"user","type":"address"}],"name":"LiquidityRestrictionDisabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"uint256","name":"priceInWei","type":"uint256"}],"name":"SetPrice","outputs":[],"stateMutability":"nonpayable","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":[],"name":"antisnipe","outputs":[{"internalType":"contract IAntisnipe","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antisnipeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"liquidityRestrictionEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityRestrictor","outputs":[{"internalType":"contract ILiquidityRestrictor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setAntisnipeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setAntisnipeDisable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setLiquidityRestrictionAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setLiquidityRestrictorDisable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawTokens","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080604052600780546001600160a01b0319908116732306b42baca1b34770ea489f4ec2023f5340b0ca179091556008805460ff60a81b1960ff60a01b1991909316739841bbb35bdeeddd737103e02ed97a525b3fa85c1716600160a01b1791909116600160a81b1790553480156200007757600080fd5b506040518060400160405280601581526020017f57696372797074204e6574776f726b20546f6b656e00000000000000000000008152506040518060400160405280600381526020016215d39560ea1b81525060126aa56fa5b99019a5c80000008360039080519060200190620000f092919062000189565b5082516200010690600490602086019062000189565b506005805460ff191660ff8416179055600281905533600081815260208181526040808320859055805185815290517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a3505060058054610100600160a81b03191633610100021760ff60a81b1916905550620002259050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001cc57805160ff1916838001178555620001fc565b82800160010185558215620001fc579182015b82811115620001fc578251825591602001919060010190620001df565b506200020a9291506200020e565b5090565b5b808211156200020a57600081556001016200020f565b611b3680620002356000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c8063611bf629116101045780638da5cb5b116100a2578063a457c2d711610071578063a457c2d7146104cf578063a9059cbb146104fb578063dd62ed3e14610527578063f2fde38b14610555576101da565b80638da5cb5b1461049a57806395d89b41146104a2578063a035b1fe146104aa578063a0712d68146104b2576101da565b806379cc6790116100de57806379cc67901461043a578063882cfb3f1461046657806389adfcbe1461048a5780638d8f2adb14610492576101da565b8063611bf629146103e657806370a082311461040c57806374fb20e114610432576101da565b8063313ce5671161017c57806342966c681161014b57806342966c681461037e5780634f5539c01461039b57806351cff8d9146103b85780635c975abb146103de576101da565b8063313ce5671461032457806339509351146103425780633a7bf1161461036e5780633ccfd60b14610376576101da565b80630b8a053f116101b85780630b8a053f146102a657806318160ddd146102cc5780631c8aeb0c146102e657806323b872dd146102ee576101da565b806306fdde03146101df578063081e1b581461025c578063095ea7b314610266575b600080fd5b6101e761057b565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610221578181015183820152602001610209565b50505050905090810190601f16801561024e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610264610611565b005b6102926004803603604081101561027c57600080fd5b506001600160a01b0381351690602001356106c2565b604080519115158252519081900360200190f35b610264600480360360208110156102bc57600080fd5b50356001600160a01b03166106df565b6102d4610785565b60408051918252519081900360200190f35b61029261078b565b6102926004803603606081101561030457600080fd5b506001600160a01b0381358116916020810135909116906040013561079b565b61032c610822565b6040805160ff9092168252519081900360200190f35b6102926004803603604081101561035857600080fd5b506001600160a01b03813516906020013561082b565b610292610879565b610264610889565b6102646004803603602081101561039457600080fd5b503561090e565b610264600480360360208110156103b157600080fd5b5035610922565b610264600480360360208110156103ce57600080fd5b50356001600160a01b0316610979565b610292610a65565b610264600480360360208110156103fc57600080fd5b50356001600160a01b0316610a75565b6102d46004803603602081101561042257600080fd5b50356001600160a01b0316610b1b565b610264610b36565b6102646004803603604081101561045057600080fd5b506001600160a01b038135169060200135610be7565b61046e610c3c565b604080516001600160a01b039092168252519081900360200190f35b61046e610c4b565b610264610c5a565b61046e610cda565b6101e7610cee565b6102d4610d4f565b610264600480360360208110156104c857600080fd5b5035610d55565b610292600480360360408110156104e557600080fd5b506001600160a01b038135169060200135610db2565b6102926004803603604081101561051157600080fd5b506001600160a01b038135169060200135610e1a565b6102d46004803603604081101561053d57600080fd5b506001600160a01b0381358116916020013516610e2e565b6102646004803603602081101561056b57600080fd5b50356001600160a01b0316610e59565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106075780601f106105dc57610100808354040283529160200191610607565b820191906000526020600020905b8154815290600101906020018083116105ea57829003601f168201915b5050505050905090565b60055461010090046001600160a01b03163314610663576040805162461bcd60e51b815260206004820152601f60248201526000805160206119dc833981519152604482015290519081900360640190fd5b600854600160a81b900460ff1661067957600080fd5b6008805460ff60a81b191690556040805142815233602082015281517fa7b7c47467a4845f1e5674a850f933e344db4e09cc8211d9942ca31169bb5379929181900390910190a1565b60006106d66106cf610edf565b8484610ee3565b50600192915050565b60055461010090046001600160a01b03163314610731576040805162461bcd60e51b815260206004820152601f60248201526000805160206119dc833981519152604482015290519081900360640190fd5b600880546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f9e3246f6884b272cd75c9ed84b4f68fdf7b3baf148c910868612774b92cbd6b79181900360200190a150565b60025490565b600854600160a01b900460ff1681565b60006107a8848484610fcf565b610818846107b4610edf565b610813856040518060600160405280602881526020016119fc602891396001600160a01b038a166000908152600160205260408120906107f2610edf565b6001600160a01b03168152602081019190915260400160002054919061112a565b610ee3565b5060019392505050565b60055460ff1690565b60006106d6610838610edf565b846108138560016000610849610edf565b6001600160a01b03908116825260208083019390935260409182016000908120918c1681529252902054906111c1565b600854600160a81b900460ff1681565b60055461010090046001600160a01b031633146108db576040805162461bcd60e51b815260206004820152601f60248201526000805160206119dc833981519152604482015290519081900360640190fd5b6040514790339082156108fc029083906000818181858888f1935050505015801561090a573d6000803e3d6000fd5b5050565b61091f610919610edf565b82611222565b50565b60055461010090046001600160a01b03163314610974576040805162461bcd60e51b815260206004820152601f60248201526000805160206119dc833981519152604482015290519081900360640190fd5b600655565b60055461010090046001600160a01b031633146109cb576040805162461bcd60e51b815260206004820152601f60248201526000805160206119dc833981519152604482015290519081900360640190fd5b604080516370a0823160e01b8152306004820152905182916000916001600160a01b038416916370a08231916024808301926020929190829003018186803b158015610a1657600080fd5b505afa158015610a2a573d6000803e3d6000fd5b505050506040513d6020811015610a4057600080fd5b50519050610a60610a4f610edf565b6001600160a01b038416908361131e565b505050565b600554600160a81b900460ff1690565b60055461010090046001600160a01b03163314610ac7576040805162461bcd60e51b815260206004820152601f60248201526000805160206119dc833981519152604482015290519081900360640190fd5b600780546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f34863999b0d3bab27b00576286a28d673d24705d352ad2e9ed37684e086cc60a9181900360200190a150565b6001600160a01b031660009081526020819052604090205490565b60055461010090046001600160a01b03163314610b88576040805162461bcd60e51b815260206004820152601f60248201526000805160206119dc833981519152604482015290519081900360640190fd5b600854600160a01b900460ff16610b9e57600080fd5b6008805460ff60a01b191690556040805142815233602082015281517f0179e84ca303c5e1e271e1d05ddf82be1d8edba86bccf0ac217ec2b285acf2d1929181900390910190a1565b6000610c1e82604051806060016040528060248152602001611a2460249139610c1786610c12610edf565b610e2e565b919061112a565b9050610c3283610c2c610edf565b83610ee3565b610a608383611222565b6007546001600160a01b031681565b6008546001600160a01b031681565b60055461010090046001600160a01b03163314610cac576040805162461bcd60e51b815260206004820152601f60248201526000805160206119dc833981519152604482015290519081900360640190fd5b306000610cb882610b1b565b905061090a82600560019054906101000a90046001600160a01b031683610fcf565b60055461010090046001600160a01b031681565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106075780601f106105dc57610100808354040283529160200191610607565b60065490565b60055461010090046001600160a01b03163314610da7576040805162461bcd60e51b815260206004820152601f60248201526000805160206119dc833981519152604482015290519081900360640190fd5b3361090a8183611370565b60006106d6610dbf610edf565b8461081385604051806060016040528060258152602001611adc6025913960016000610de9610edf565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919061112a565b60006106d6610e27610edf565b8484610fcf565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60055461010090046001600160a01b03163314610eab576040805162461bcd60e51b815260206004820152601f60248201526000805160206119dc833981519152604482015290519081900360640190fd5b6001600160a01b0381161561091f57600580546001600160a01b03831661010002610100600160a81b031990911617905550565b3390565b6001600160a01b038316610f285760405162461bcd60e51b8152600401808060200182810382526024815260200180611a8e6024913960400191505060405180910390fd5b6001600160a01b038216610f6d5760405162461bcd60e51b81526004018080602001828103825260228152602001806119946022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166110145760405162461bcd60e51b8152600401808060200182810382526025815260200180611a696025913960400191505060405180910390fd5b6001600160a01b0382166110595760405162461bcd60e51b815260040180806020018281038252602381526020018061194f6023913960400191505060405180910390fd5b611064838383611460565b6110a1816040518060600160405280602681526020016119b6602691396001600160a01b038616600090815260208190526040902054919061112a565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546110d090826111c1565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156111b95760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561117e578181015183820152602001611166565b50505050905090810190601f1680156111ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008282018381101561121b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b0382166112675760405162461bcd60e51b8152600401808060200182810382526021815260200180611a486021913960400191505060405180910390fd5b61127382600083611460565b6112b081604051806060016040528060228152602001611972602291396001600160a01b038516600090815260208190526040902054919061112a565b6001600160a01b0383166000908152602081905260409020556002546112d69082611712565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610a60908490611754565b6001600160a01b0382166113cb576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6113d760008383611460565b6002546113e490826111c1565b6002556001600160a01b03821660009081526020819052604090205461140a90826111c1565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6001600160a01b038316158061147d57506001600160a01b038216155b1561148757610a60565b600854600160a81b900460ff1680156114aa57506008546001600160a01b031615155b156116515760085460408051635f5a31a760e01b81526001600160a01b038681166004830152858116602483015291516000936060931691635f5a31a7916044808301928792919082900301818387803b15801561150757600080fd5b505af115801561151b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604090815281101561154457600080fd5b81516020830180516040519294929383019291908464010000000082111561156b57600080fd5b90830190602082018581111561158057600080fd5b825164010000000081118282018810171561159a57600080fd5b82525081516020918201929091019080838360005b838110156115c75781810151838201526020016115af565b50505050905090810190601f1680156115f45780820380516001836020036101000a031916815260200191505b506040525050509150915081819061164d5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561117e578181015183820152602001611166565b5050505b600854600160a01b900460ff16801561167457506007546001600160a01b031615155b15610a605760075460408051635d37a8dd60e01b81523360048201526001600160a01b03868116602483015285811660448301526064820185905291519190921691635d37a8dd9160848083019260209291908290030181600087803b1580156116dd57600080fd5b505af11580156116f1573d6000803e3d6000fd5b505050506040513d602081101561170757600080fd5b5051610a6057600080fd5b600061121b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061112a565b611766826001600160a01b0316611912565b6117b7576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106117f55780518252601f1990920191602091820191016117d6565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611857576040519150601f19603f3d011682016040523d82523d6000602084013e61185c565b606091505b5091509150816118b3576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561190c578080602001905160208110156118cf57600080fd5b505161190c5760405162461bcd60e51b815260040180806020018281038252602a815260200180611ab2602a913960400191505060405180910390fd5b50505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061194657508115155b94935050505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365556e617574686f72697a65642061636365737320746f20636f6e74726163740045524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220bef2f4e7a9bff42b5ccfdd530e21a9f5d1f4bff0cb78f54010361bdcb17ea1bc64736f6c63430007000033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101da5760003560e01c8063611bf629116101045780638da5cb5b116100a2578063a457c2d711610071578063a457c2d7146104cf578063a9059cbb146104fb578063dd62ed3e14610527578063f2fde38b14610555576101da565b80638da5cb5b1461049a57806395d89b41146104a2578063a035b1fe146104aa578063a0712d68146104b2576101da565b806379cc6790116100de57806379cc67901461043a578063882cfb3f1461046657806389adfcbe1461048a5780638d8f2adb14610492576101da565b8063611bf629146103e657806370a082311461040c57806374fb20e114610432576101da565b8063313ce5671161017c57806342966c681161014b57806342966c681461037e5780634f5539c01461039b57806351cff8d9146103b85780635c975abb146103de576101da565b8063313ce5671461032457806339509351146103425780633a7bf1161461036e5780633ccfd60b14610376576101da565b80630b8a053f116101b85780630b8a053f146102a657806318160ddd146102cc5780631c8aeb0c146102e657806323b872dd146102ee576101da565b806306fdde03146101df578063081e1b581461025c578063095ea7b314610266575b600080fd5b6101e761057b565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610221578181015183820152602001610209565b50505050905090810190601f16801561024e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610264610611565b005b6102926004803603604081101561027c57600080fd5b506001600160a01b0381351690602001356106c2565b604080519115158252519081900360200190f35b610264600480360360208110156102bc57600080fd5b50356001600160a01b03166106df565b6102d4610785565b60408051918252519081900360200190f35b61029261078b565b6102926004803603606081101561030457600080fd5b506001600160a01b0381358116916020810135909116906040013561079b565b61032c610822565b6040805160ff9092168252519081900360200190f35b6102926004803603604081101561035857600080fd5b506001600160a01b03813516906020013561082b565b610292610879565b610264610889565b6102646004803603602081101561039457600080fd5b503561090e565b610264600480360360208110156103b157600080fd5b5035610922565b610264600480360360208110156103ce57600080fd5b50356001600160a01b0316610979565b610292610a65565b610264600480360360208110156103fc57600080fd5b50356001600160a01b0316610a75565b6102d46004803603602081101561042257600080fd5b50356001600160a01b0316610b1b565b610264610b36565b6102646004803603604081101561045057600080fd5b506001600160a01b038135169060200135610be7565b61046e610c3c565b604080516001600160a01b039092168252519081900360200190f35b61046e610c4b565b610264610c5a565b61046e610cda565b6101e7610cee565b6102d4610d4f565b610264600480360360208110156104c857600080fd5b5035610d55565b610292600480360360408110156104e557600080fd5b506001600160a01b038135169060200135610db2565b6102926004803603604081101561051157600080fd5b506001600160a01b038135169060200135610e1a565b6102d46004803603604081101561053d57600080fd5b506001600160a01b0381358116916020013516610e2e565b6102646004803603602081101561056b57600080fd5b50356001600160a01b0316610e59565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106075780601f106105dc57610100808354040283529160200191610607565b820191906000526020600020905b8154815290600101906020018083116105ea57829003601f168201915b5050505050905090565b60055461010090046001600160a01b03163314610663576040805162461bcd60e51b815260206004820152601f60248201526000805160206119dc833981519152604482015290519081900360640190fd5b600854600160a81b900460ff1661067957600080fd5b6008805460ff60a81b191690556040805142815233602082015281517fa7b7c47467a4845f1e5674a850f933e344db4e09cc8211d9942ca31169bb5379929181900390910190a1565b60006106d66106cf610edf565b8484610ee3565b50600192915050565b60055461010090046001600160a01b03163314610731576040805162461bcd60e51b815260206004820152601f60248201526000805160206119dc833981519152604482015290519081900360640190fd5b600880546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f9e3246f6884b272cd75c9ed84b4f68fdf7b3baf148c910868612774b92cbd6b79181900360200190a150565b60025490565b600854600160a01b900460ff1681565b60006107a8848484610fcf565b610818846107b4610edf565b610813856040518060600160405280602881526020016119fc602891396001600160a01b038a166000908152600160205260408120906107f2610edf565b6001600160a01b03168152602081019190915260400160002054919061112a565b610ee3565b5060019392505050565b60055460ff1690565b60006106d6610838610edf565b846108138560016000610849610edf565b6001600160a01b03908116825260208083019390935260409182016000908120918c1681529252902054906111c1565b600854600160a81b900460ff1681565b60055461010090046001600160a01b031633146108db576040805162461bcd60e51b815260206004820152601f60248201526000805160206119dc833981519152604482015290519081900360640190fd5b6040514790339082156108fc029083906000818181858888f1935050505015801561090a573d6000803e3d6000fd5b5050565b61091f610919610edf565b82611222565b50565b60055461010090046001600160a01b03163314610974576040805162461bcd60e51b815260206004820152601f60248201526000805160206119dc833981519152604482015290519081900360640190fd5b600655565b60055461010090046001600160a01b031633146109cb576040805162461bcd60e51b815260206004820152601f60248201526000805160206119dc833981519152604482015290519081900360640190fd5b604080516370a0823160e01b8152306004820152905182916000916001600160a01b038416916370a08231916024808301926020929190829003018186803b158015610a1657600080fd5b505afa158015610a2a573d6000803e3d6000fd5b505050506040513d6020811015610a4057600080fd5b50519050610a60610a4f610edf565b6001600160a01b038416908361131e565b505050565b600554600160a81b900460ff1690565b60055461010090046001600160a01b03163314610ac7576040805162461bcd60e51b815260206004820152601f60248201526000805160206119dc833981519152604482015290519081900360640190fd5b600780546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f34863999b0d3bab27b00576286a28d673d24705d352ad2e9ed37684e086cc60a9181900360200190a150565b6001600160a01b031660009081526020819052604090205490565b60055461010090046001600160a01b03163314610b88576040805162461bcd60e51b815260206004820152601f60248201526000805160206119dc833981519152604482015290519081900360640190fd5b600854600160a01b900460ff16610b9e57600080fd5b6008805460ff60a01b191690556040805142815233602082015281517f0179e84ca303c5e1e271e1d05ddf82be1d8edba86bccf0ac217ec2b285acf2d1929181900390910190a1565b6000610c1e82604051806060016040528060248152602001611a2460249139610c1786610c12610edf565b610e2e565b919061112a565b9050610c3283610c2c610edf565b83610ee3565b610a608383611222565b6007546001600160a01b031681565b6008546001600160a01b031681565b60055461010090046001600160a01b03163314610cac576040805162461bcd60e51b815260206004820152601f60248201526000805160206119dc833981519152604482015290519081900360640190fd5b306000610cb882610b1b565b905061090a82600560019054906101000a90046001600160a01b031683610fcf565b60055461010090046001600160a01b031681565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106075780601f106105dc57610100808354040283529160200191610607565b60065490565b60055461010090046001600160a01b03163314610da7576040805162461bcd60e51b815260206004820152601f60248201526000805160206119dc833981519152604482015290519081900360640190fd5b3361090a8183611370565b60006106d6610dbf610edf565b8461081385604051806060016040528060258152602001611adc6025913960016000610de9610edf565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919061112a565b60006106d6610e27610edf565b8484610fcf565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60055461010090046001600160a01b03163314610eab576040805162461bcd60e51b815260206004820152601f60248201526000805160206119dc833981519152604482015290519081900360640190fd5b6001600160a01b0381161561091f57600580546001600160a01b03831661010002610100600160a81b031990911617905550565b3390565b6001600160a01b038316610f285760405162461bcd60e51b8152600401808060200182810382526024815260200180611a8e6024913960400191505060405180910390fd5b6001600160a01b038216610f6d5760405162461bcd60e51b81526004018080602001828103825260228152602001806119946022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166110145760405162461bcd60e51b8152600401808060200182810382526025815260200180611a696025913960400191505060405180910390fd5b6001600160a01b0382166110595760405162461bcd60e51b815260040180806020018281038252602381526020018061194f6023913960400191505060405180910390fd5b611064838383611460565b6110a1816040518060600160405280602681526020016119b6602691396001600160a01b038616600090815260208190526040902054919061112a565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546110d090826111c1565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156111b95760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561117e578181015183820152602001611166565b50505050905090810190601f1680156111ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008282018381101561121b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b0382166112675760405162461bcd60e51b8152600401808060200182810382526021815260200180611a486021913960400191505060405180910390fd5b61127382600083611460565b6112b081604051806060016040528060228152602001611972602291396001600160a01b038516600090815260208190526040902054919061112a565b6001600160a01b0383166000908152602081905260409020556002546112d69082611712565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610a60908490611754565b6001600160a01b0382166113cb576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6113d760008383611460565b6002546113e490826111c1565b6002556001600160a01b03821660009081526020819052604090205461140a90826111c1565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6001600160a01b038316158061147d57506001600160a01b038216155b1561148757610a60565b600854600160a81b900460ff1680156114aa57506008546001600160a01b031615155b156116515760085460408051635f5a31a760e01b81526001600160a01b038681166004830152858116602483015291516000936060931691635f5a31a7916044808301928792919082900301818387803b15801561150757600080fd5b505af115801561151b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604090815281101561154457600080fd5b81516020830180516040519294929383019291908464010000000082111561156b57600080fd5b90830190602082018581111561158057600080fd5b825164010000000081118282018810171561159a57600080fd5b82525081516020918201929091019080838360005b838110156115c75781810151838201526020016115af565b50505050905090810190601f1680156115f45780820380516001836020036101000a031916815260200191505b506040525050509150915081819061164d5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561117e578181015183820152602001611166565b5050505b600854600160a01b900460ff16801561167457506007546001600160a01b031615155b15610a605760075460408051635d37a8dd60e01b81523360048201526001600160a01b03868116602483015285811660448301526064820185905291519190921691635d37a8dd9160848083019260209291908290030181600087803b1580156116dd57600080fd5b505af11580156116f1573d6000803e3d6000fd5b505050506040513d602081101561170757600080fd5b5051610a6057600080fd5b600061121b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061112a565b611766826001600160a01b0316611912565b6117b7576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106117f55780518252601f1990920191602091820191016117d6565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611857576040519150601f19603f3d011682016040523d82523d6000602084013e61185c565b606091505b5091509150816118b3576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561190c578080602001905160208110156118cf57600080fd5b505161190c5760405162461bcd60e51b815260040180806020018281038252602a815260200180611ab2602a913960400191505060405180910390fd5b50505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061194657508115155b94935050505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365556e617574686f72697a65642061636365737320746f20636f6e74726163740045524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220bef2f4e7a9bff42b5ccfdd530e21a9f5d1f4bff0cb78f54010361bdcb17ea1bc64736f6c63430007000033
Deployed Bytecode Sourcemap
30245:4110:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19835:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33752:234;;;:::i;:::-;;22035:210;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22035:210:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;34156:196;;;;;;;;;;;;;;;;-1:-1:-1;34156:196:0;-1:-1:-1;;;;;34156:196:0;;:::i;20910:100::-;;;:::i;:::-;;;;;;;;;;;;;;;;32538:35;;;:::i;22719:454::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22719:454:0;;;;;;;;;;;;;;;;;:::i;20762:83::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23582:300;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;23582:300:0;;;;;;;;:::i;32580:46::-;;;:::i;31930:136::-;;;:::i;31180:91::-;;;;;;;;;;;;;;;;-1:-1:-1;31180:91:0;;:::i;30971:93::-;;;;;;;;;;;;;;;;-1:-1:-1;30971:93:0;;:::i;32074:224::-;;;;;;;;;;;;;;;;-1:-1:-1;32074:224:0;-1:-1:-1;;;;;32074:224:0;;:::i;16255:78::-;;;:::i;33994:154::-;;;;;;;;;;;;;;;;-1:-1:-1;33994:154:0;-1:-1:-1;;;;;33994:154:0;;:::i;21073:119::-;;;;;;;;;;;;;;;;-1:-1:-1;21073:119:0;-1:-1:-1;;;;;21073:119:0;;:::i;33553:191::-;;;:::i;31590:332::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;31590:332:0;;;;;;;;:::i;32306:93::-;;;:::i;:::-;;;;-1:-1:-1;;;;;32306:93:0;;;;;;;;;;;;;;32406:123;;;:::i;30649:227::-;;;:::i;372:28::-;;;:::i;20037:87::-;;;:::i;30884:79::-;;;:::i;30506:135::-;;;;;;;;;;;;;;;;-1:-1:-1;30506:135:0;;:::i;24385:400::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24385:400:0;;;;;;;;:::i;21405:216::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;21405:216:0;;;;;;;;:::i;21684:201::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;21684:201:0;;;;;;;;;;:::i;591:159::-;;;;;;;;;;;;;;;;-1:-1:-1;591:159:0;-1:-1:-1;;;;;591:159:0;;:::i;19835:83::-;19905:5;19898:12;;;;;;;;-1:-1:-1;;19898:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19872:13;;19898:12;;19905:5;;19898:12;;19905:5;19898:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19835:83;:::o;33752:234::-;522:5;;;;;-1:-1:-1;;;;;522:5:0;508:10;:19;500:63;;;;;-1:-1:-1;;;500:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;500:63:0;;;;;;;;;;;;;;;33831:27:::1;::::0;-1:-1:-1;;;33831:27:0;::::1;;;33823:36;;;::::0;::::1;;33870:27;:35:::0;;-1:-1:-1;;;;33870:35:0::1;::::0;;33921:57:::1;::::0;;33950:15:::1;33921:57:::0;;33967:10:::1;33921:57;::::0;::::1;::::0;;;::::1;::::0;;;;;;;;;::::1;33752:234::o:0;22035:210::-;22154:4;22176:39;22185:12;:10;:12::i;:::-;22199:7;22208:6;22176:8;:39::i;:::-;-1:-1:-1;22233:4:0;22035:210;;;;:::o;34156:196::-;522:5;;;;;-1:-1:-1;;;;;522:5:0;508:10;:19;500:63;;;;;-1:-1:-1;;;500:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;500:63:0;;;;;;;;;;;;;;;34240:19:::1;:48:::0;;-1:-1:-1;;;;;34240:48:0;::::1;-1:-1:-1::0;;;;;;34240:48:0;;::::1;::::0;::::1;::::0;;;34304:40:::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;34156:196:::0;:::o;20910:100::-;20990:12;;20910:100;:::o;32538:35::-;;;-1:-1:-1;;;32538:35:0;;;;;:::o;22719:454::-;22859:4;22876:36;22886:6;22894:9;22905:6;22876:9;:36::i;:::-;22923:220;22946:6;22967:12;:10;:12::i;:::-;22994:138;23050:6;22994:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22994:19:0;;;;;;:11;:19;;;;;;23014:12;:10;:12::i;:::-;-1:-1:-1;;;;;22994:33:0;;;;;;;;;;;;-1:-1:-1;22994:33:0;;;:138;:37;:138::i;:::-;22923:8;:220::i;:::-;-1:-1:-1;23161:4:0;22719:454;;;;;:::o;20762:83::-;20828:9;;;;20762:83;:::o;23582:300::-;23697:4;23719:133;23742:12;:10;:12::i;:::-;23769:7;23791:50;23830:10;23791:11;:25;23803:12;:10;:12::i;:::-;-1:-1:-1;;;;;23791:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;23791:25:0;;;:34;;;;;;;;;;;:38;:50::i;32580:46::-;;;-1:-1:-1;;;32580:46:0;;;;;:::o;31930:136::-;522:5;;;;;-1:-1:-1;;;;;522:5:0;508:10;:19;500:63;;;;;-1:-1:-1;;;500:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;500:63:0;;;;;;;;;;;;;;;32030:28:::1;::::0;31998:21:::1;::::0;32030:10:::1;::::0;:28;::::1;;;::::0;31998:21;;31980:15:::1;32030:28:::0;31980:15;32030:28;31998:21;32030:10;:28;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;574:1;31930:136::o:0;31180:91::-;31236:27;31242:12;:10;:12::i;:::-;31256:6;31236:5;:27::i;:::-;31180:91;:::o;30971:93::-;522:5;;;;;-1:-1:-1;;;;;522:5:0;508:10;:19;500:63;;;;;-1:-1:-1;;;500:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;500:63:0;;;;;;;;;;;;;;;31037:6:::1;:19:::0;30971:93::o;32074:224::-;522:5;;;;;-1:-1:-1;;;;;522:5:0;508:10;:19;500:63;;;;;-1:-1:-1;;;500:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;500:63:0;;;;;;;;;;;;;;;32208:30:::1;::::0;;-1:-1:-1;;;32208:30:0;;32232:4:::1;32208:30;::::0;::::1;::::0;;;32166:12;;32144::::1;::::0;-1:-1:-1;;;;;32208:15:0;::::1;::::0;::::1;::::0;:30;;;;;::::1;::::0;;;;;;;;:15;:30;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;32208:30:0;;-1:-1:-1;32249:41:0::1;32268:12;:10;:12::i;:::-;-1:-1:-1::0;;;;;32249:18:0;::::1;::::0;32282:7;32249:18:::1;:41::i;:::-;574:1;;32074:224:::0;:::o;16255:78::-;16318:7;;-1:-1:-1;;;16318:7:0;;;;;16255:78::o;33994:154::-;522:5;;;;;-1:-1:-1;;;;;522:5:0;508:10;:19;500:63;;;;;-1:-1:-1;;;500:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;500:63:0;;;;;;;;;;;;;;;34067:9:::1;:28:::0;;-1:-1:-1;;;;;34067:28:0;::::1;-1:-1:-1::0;;;;;;34067:28:0;;::::1;::::0;::::1;::::0;;;34111:29:::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;33994:154:::0;:::o;21073:119::-;-1:-1:-1;;;;;21166:18:0;21139:7;21166:18;;;;;;;;;;;;21073:119::o;33553:191::-;522:5;;;;;-1:-1:-1;;;;;522:5:0;508:10;:19;500:63;;;;;-1:-1:-1;;;500:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;500:63:0;;;;;;;;;;;;;;;33622:16:::1;::::0;-1:-1:-1;;;33622:16:0;::::1;;;33614:25;;;::::0;::::1;;33650:16;:24:::0;;-1:-1:-1;;;;33650:24:0::1;::::0;;33690:46:::1;::::0;;33708:15:::1;33690:46:::0;;33725:10:::1;33690:46;::::0;::::1;::::0;;;::::1;::::0;;;;;;;;;::::1;33553:191::o:0;31590:332::-;31667:26;31696:121;31747:6;31696:121;;;;;;;;;;;;;;;;;:32;31706:7;31715:12;:10;:12::i;:::-;31696:9;:32::i;:::-;:36;:121;:36;:121::i;:::-;31667:150;;31830:51;31839:7;31848:12;:10;:12::i;:::-;31862:18;31830:8;:51::i;:::-;31892:22;31898:7;31907:6;31892:5;:22::i;32306:93::-;;;-1:-1:-1;;;;;32306:93:0;;:::o;32406:123::-;;;-1:-1:-1;;;;;32406:123:0;;:::o;30649:227::-;522:5;;;;;-1:-1:-1;;;;;522:5:0;508:10;:19;500:63;;;;;-1:-1:-1;;;500:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;500:63:0;;;;;;;;;;;;;;;30745:4:::1;30711:23;30784:26;30745:4:::0;30784:9:::1;:26::i;:::-;30761:49;;30821:47;30831:15;30848:5;;;;;;;;;-1:-1:-1::0;;;;;30848:5:0::1;30855:12;30821:9;:47::i;372:28::-:0;;;;;;-1:-1:-1;;;;;372:28:0;;:::o;20037:87::-;20109:7;20102:14;;;;;;;;-1:-1:-1;;20102:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20076:13;;20102:14;;20109:7;;20102:14;;20109:7;20102:14;;;;;;;;;;;;;;;;;;;;;;;;30884:79;30949:6;;30884:79;:::o;30506:135::-;522:5;;;;;-1:-1:-1;;;;;522:5:0;508:10;:19;500:63;;;;;-1:-1:-1;;;500:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;500:63:0;;;;;;;;;;;;;;;30590:10:::1;30611:22;30590:10:::0;30626:6;30611:5:::1;:22::i;24385:400::-:0;24505:4;24527:228;24550:12;:10;:12::i;:::-;24577:7;24599:145;24656:15;24599:145;;;;;;;;;;;;;;;;;:11;:25;24611:12;:10;:12::i;:::-;-1:-1:-1;;;;;24599:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;24599:25:0;;;:34;;;;;;;;;;;:145;:38;:145::i;21405:216::-;21527:4;21549:42;21559:12;:10;:12::i;:::-;21573:9;21584:6;21549:9;:42::i;21684:201::-;-1:-1:-1;;;;;21850:18:0;;;21818:7;21850:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;21684:201::o;591:159::-;522:5;;;;;-1:-1:-1;;;;;522:5:0;508:10;:19;500:63;;;;;-1:-1:-1;;;500:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;500:63:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;676:22:0;::::1;::::0;672:71:::1;;715:5;:16:::0;;-1:-1:-1;;;;;715:16:0;::::1;;;-1:-1:-1::0;;;;;;715:16:0;;::::1;;::::0;;591:159;:::o;14884:106::-;14972:10;14884:106;:::o;27771:380::-;-1:-1:-1;;;;;27907:19:0;;27899:68;;;;-1:-1:-1;;;27899:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27986:21:0;;27978:68;;;;-1:-1:-1;;;27978:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;28059:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;28111:32;;;;;;;;;;;;;;;;;27771:380;;;:::o;25275:610::-;-1:-1:-1;;;;;25415:20:0;;25407:70;;;;-1:-1:-1;;;25407:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25496:23:0;;25488:71;;;;-1:-1:-1;;;25488:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25572:47;25593:6;25601:9;25612:6;25572:20;:47::i;:::-;25652:108;25688:6;25652:108;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25652:17:0;;:9;:17;;;;;;;;;;;;:108;:21;:108::i;:::-;-1:-1:-1;;;;;25632:17:0;;;:9;:17;;;;;;;;;;;:128;;;;25794:20;;;;;;;:32;;25819:6;25794:24;:32::i;:::-;-1:-1:-1;;;;;25771:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;25842:35;;;;;;;25771:20;;25842:35;;;;;;;;;;;;;25275:610;;;:::o;5258:226::-;5378:7;5414:12;5406:6;;;;5398:29;;;;-1:-1:-1;;;5398:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5450:5:0;;;5258:226::o;4371:181::-;4429:7;4461:5;;;4485:6;;;;4477:46;;;;;-1:-1:-1;;;4477:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;4543:1;4371:181;-1:-1:-1;;;4371:181:0:o;26876:455::-;-1:-1:-1;;;;;26960:21:0;;26952:67;;;;-1:-1:-1;;;26952:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27032:49;27053:7;27070:1;27074:6;27032:20;:49::i;:::-;27115:105;27152:6;27115:105;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27115:18:0;;:9;:18;;;;;;;;;;;;:105;:22;:105::i;:::-;-1:-1:-1;;;;;27094:18:0;;:9;:18;;;;;;;;;;:126;27246:12;;:24;;27263:6;27246:16;:24::i;:::-;27231:12;:39;27286:37;;;;;;;;27312:1;;-1:-1:-1;;;;;27286:37:0;;;;;;;;;;;;26876:455;;:::o;11855:247::-;12025:58;;;-1:-1:-1;;;;;12025:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12025:58:0;-1:-1:-1;;;12025:58:0;;;11972:122;;12005:5;;11972:18;:122::i;26166:378::-;-1:-1:-1;;;;;26250:21:0;;26242:65;;;;;-1:-1:-1;;;26242:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;26320:49;26349:1;26353:7;26362:6;26320:20;:49::i;:::-;26397:12;;:24;;26414:6;26397:16;:24::i;:::-;26382:12;:39;-1:-1:-1;;;;;26453:18:0;;:9;:18;;;;;;;;;;;:30;;26476:6;26453:22;:30::i;:::-;-1:-1:-1;;;;;26432:18:0;;:9;:18;;;;;;;;;;;:51;;;;26499:37;;;;;;;26432:18;;:9;;26499:37;;;;;;;;;;26166:378;;:::o;32885:660::-;-1:-1:-1;;;;;33024:18:0;;;;:38;;-1:-1:-1;;;;;;33046:16:0;;;33024:38;33020:51;;;33064:7;;33020:51;33099:27;;-1:-1:-1;;;33099:27:0;;;;:86;;;;-1:-1:-1;33151:19:0;;-1:-1:-1;;;;;33151:19:0;33143:42;;33099:86;33081:294;;;33250:19;;:75;;;-1:-1:-1;;;33250:75:0;;-1:-1:-1;;;;;33250:75:0;;;;;;;;;;;;;;;;33213:10;;33225:21;;33250:19;;:65;;:75;;;;;33213:10;;33250:75;;;;;;;33213:10;33250:19;:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;33250:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33250:75:0;;;;;;;;;;-1:-1:-1;33250:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33212:113;;;;33348:5;33355:7;33340:23;;;;;-1:-1:-1;;;33340:23:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33081:294;;;33391:16;;-1:-1:-1;;;33391:16:0;;;;:52;;;;-1:-1:-1;33419:9:0;;-1:-1:-1;;;;;33419:9:0;33411:32;;33391:52;33387:151;;;33468:9;;:57;;;-1:-1:-1;;;33468:57:0;;33496:10;33468:57;;;;-1:-1:-1;;;;;33468:57:0;;;;;;;;;;;;;;;;;;;;;;:9;;;;;:27;;:57;;;;;;;;;;;;;;:9;;:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33468:57:0;33460:66;;;;;4827:136;4885:7;4912:43;4916:1;4919;4912:43;;;;;;;;;;;;;;;;;:3;:43::i;13808:502::-;13896:27;13904:5;-1:-1:-1;;;;;13896:25:0;;:27::i;:::-;13888:71;;;;;-1:-1:-1;;;13888:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;13973:12;13987:23;14022:5;-1:-1:-1;;;;;14014:19:0;14034:4;14014:25;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14014:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13972:67;;;;14058:7;14050:52;;;;;-1:-1:-1;;;14050:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14119:17;;:21;14115:188;;14194:10;14183:30;;;;;;;;;;;;;;;-1:-1:-1;14183:30:0;14157:134;;;;-1:-1:-1;;;14157:134:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13808:502;;;;:::o;1462:641::-;1522:4;2003:20;;1833:66;2052:23;;;;;;:42;;-1:-1:-1;2079:15:0;;;2052:42;2044:51;1462:641;-1:-1:-1;;;;1462:641:0:o
Swarm Source
ipfs://bef2f4e7a9bff42b5ccfdd530e21a9f5d1f4bff0cb78f54010361bdcb17ea1bc
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.