Token
Mysterium (MYST)
ERC-20
Overview
Max Total Supply
2,560,005.01 MYST
Holders
29,343
Market
Price
$0.00 @ 0.000000 POL
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
5,342.607212668361990168 MYSTLoading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
MystToken
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: GPL-3.0 pragma solidity 0.8.9; import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import { Context } from "@openzeppelin/contracts/utils/Context.sol"; import { Address } from "@openzeppelin/contracts/utils/Address.sol"; import "./interfaces/IUpgradeAgent.sol"; contract MystToken is Context, IERC20, IUpgradeAgent { using Address for address; address immutable _originalToken; // Address of MYSTv1 token uint256 immutable _originalSupply; // Token supply of MYSTv1 token // The original MYST token and the new MYST token have a decimal difference of 10. // As such, minted values as well as the total supply comparisons need to offset all values // by 10 zeros to properly compare them. uint256 constant private DECIMAL_OFFSET = 1e10; bool constant public override isUpgradeAgent = true; // Upgradeability interface marker address private _upgradeMaster; // He can enable future token migration IUpgradeAgent private _upgradeAgent; // The next contract where the tokens will be migrated uint256 private _totalUpgraded; // How many tokens we have upgraded by now mapping(address => uint256) private _balances; uint256 private _totalSupply; string constant public name = "Mysterium"; string constant public symbol = "MYST"; uint8 constant public decimals = 18; // EIP712 bytes32 public DOMAIN_SEPARATOR; // keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"); bytes32 public constant PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9; // The nonces mapping is given for replay protection in permit function. mapping(address => uint) public nonces; // ERC20-allowances mapping (address => mapping (address => uint256)) private _allowances; event Minted(address indexed to, uint256 amount); event Burned(address indexed from, uint256 amount); // State of token upgrade enum UpgradeState {Unknown, NotAllowed, WaitingForAgent, ReadyToUpgrade, Upgrading, Completed} // Token upgrade events event Upgrade(address indexed from, address agent, uint256 _value); event UpgradeAgentSet(address agent); event UpgradeMasterSet(address master); constructor(address tokenAddress) { // upgradability settings _originalToken = tokenAddress; _originalSupply = IERC20(tokenAddress).totalSupply(); // set upgrade master _upgradeMaster = _msgSender(); // construct EIP712 domain separator DOMAIN_SEPARATOR = keccak256( abi.encode( keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'), keccak256(bytes(name)), keccak256(bytes('1')), _chainID(), address(this) ) ); } function totalSupply() public view override(IERC20) returns (uint256) { return _totalSupply; } function balanceOf(address tokenHolder) public view override(IERC20) returns (uint256) { return _balances[tokenHolder]; } function transfer(address recipient, uint256 amount) public override returns (bool) { _move(_msgSender(), recipient, amount); return true; } function burn(uint256 amount) public { _burn(_msgSender(), amount); } function allowance(address holder, address spender) public view override returns (uint256) { return _allowances[holder][spender]; } function approve(address spender, uint256 value) public override returns (bool) { _approve(_msgSender(), spender, value); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue); return true; } /** * ERC2612 `permit`: 712-signed token approvals */ function permit(address holder, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external { require(deadline >= block.timestamp, 'MYST: Permit expired'); bytes32 digest = keccak256( abi.encodePacked( '\x19\x01', DOMAIN_SEPARATOR, keccak256(abi.encode(PERMIT_TYPEHASH, holder, spender, value, nonces[holder]++, deadline)) ) ); address recoveredAddress = ecrecover(digest, v, r, s); require(recoveredAddress != address(0) && recoveredAddress == holder, 'MYST: invalid signature'); _approve(holder, spender, value); } /** * Note that we're not decreasing allowance of uint(-1). This makes it simple to ERC777 operator. */ function transferFrom(address holder, address recipient, uint256 amount) public override returns (bool) { // require(recipient != address(0), "MYST: transfer to the zero address"); require(holder != address(0), "MYST: transfer from the zero address"); address spender = _msgSender(); // Allowance for uint256(-1) means "always allowed" and is analog for erc777 operators but in erc20 semantics. if (holder != spender && _allowances[holder][spender] != type(uint256).max) { _approve(holder, spender, _allowances[holder][spender] - amount); } _move(holder, recipient, amount); return true; } /** * Creates `amount` tokens and assigns them to `holder`, increasing * the total supply. */ function _mint(address holder, uint256 amount) internal { require(holder != address(0), "MYST: mint to the zero address"); // Update state variables _totalSupply = _totalSupply + amount; _balances[holder] = _balances[holder] + amount; emit Minted(holder, amount); emit Transfer(address(0), holder, amount); } function _burn(address from, uint256 amount) internal { require(from != address(0), "MYST: burn from the zero address"); // Update state variables _balances[from] = _balances[from] - amount; _totalSupply = _totalSupply - amount; emit Transfer(from, address(0), amount); emit Burned(from, amount); } function _move(address from, address to, uint256 amount) private { // Sending to zero address is equal burning if (to == address(0)) { _burn(from, amount); return; } _balances[from] = _balances[from] - amount; _balances[to] = _balances[to] + amount; emit Transfer(from, to, amount); } function _approve(address holder, address spender, uint256 value) internal { require(holder != address(0), "MYST: approve from the zero address"); require(spender != address(0), "MYST: approve to the zero address"); _allowances[holder][spender] = value; emit Approval(holder, spender, value); } // -------------- UPGRADE FROM v1 TOKEN -------------- function originalToken() public view override returns (address) { return _originalToken; } function originalSupply() public view override returns (uint256) { return _originalSupply; } function upgradeFrom(address _account, uint256 _value) public override { require(msg.sender == originalToken(), "only original token can call upgradeFrom"); // Value is multiplied by 0e10 as old token had decimals = 8? _mint(_account, _value * DECIMAL_OFFSET); require(totalSupply() <= originalSupply() * DECIMAL_OFFSET, "can not mint more tokens than in original contract"); } // -------------- PREPARE FOR FUTURE UPGRADABILITY -------------- function upgradeMaster() public view returns (address) { return _upgradeMaster; } function upgradeAgent() public view returns (address) { return address(_upgradeAgent); } function totalUpgraded() public view returns (uint256) { return _totalUpgraded; } /** * Tokens can be upgraded by calling this function. */ function upgrade(uint256 amount) public { UpgradeState state = getUpgradeState(); require(state == UpgradeState.ReadyToUpgrade || state == UpgradeState.Upgrading, "MYST: token is not in upgrading state"); require(amount != 0, "MYST: upgradable amount should be more than 0"); address holder = _msgSender(); // Burn tokens to be upgraded _burn(holder, amount); // Remember how many tokens we have upgraded _totalUpgraded = _totalUpgraded + amount; // Upgrade agent upgrades/reissues tokens _upgradeAgent.upgradeFrom(holder, amount); emit Upgrade(holder, upgradeAgent(), amount); } function setUpgradeMaster(address newUpgradeMaster) external { require(newUpgradeMaster != address(0x0), "MYST: upgrade master can't be zero address"); require(_msgSender() == _upgradeMaster, "MYST: only upgrade master can set new one"); _upgradeMaster = newUpgradeMaster; emit UpgradeMasterSet(upgradeMaster()); } function setUpgradeAgent(address agent) external { require(_msgSender()== _upgradeMaster, "MYST: only a master can designate the next agent"); require(agent != address(0x0), "MYST: upgrade agent can't be zero address"); require(getUpgradeState() != UpgradeState.Upgrading, "MYST: upgrade has already begun"); _upgradeAgent = IUpgradeAgent(agent); require(_upgradeAgent.isUpgradeAgent(), "MYST: agent should implement IUpgradeAgent interface"); // Make sure that token supplies match in source and target require(_upgradeAgent.originalSupply() == totalSupply(), "MYST: upgrade agent should know token's total supply"); emit UpgradeAgentSet(upgradeAgent()); } function getUpgradeState() public view returns(UpgradeState) { if(address(_upgradeAgent) == address(0x00)) return UpgradeState.WaitingForAgent; else if(_totalUpgraded == 0) return UpgradeState.ReadyToUpgrade; else if(totalSupply() == 0) return UpgradeState.Completed; else return UpgradeState.Upgrading; } // -------------- FUNDS RECOVERY -------------- address internal _fundsDestination; event FundsRecoveryDestinationChanged(address indexed previousDestination, address indexed newDestination); /** * Setting new destination of funds recovery. */ function setFundsDestination(address newDestination) public { require(_msgSender()== _upgradeMaster, "MYST: only a master can set funds destination"); require(newDestination != address(0), "MYST: funds destination can't be zero addreess"); _fundsDestination = newDestination; emit FundsRecoveryDestinationChanged(_fundsDestination, newDestination); } /** * Getting funds destination address. */ function getFundsDestination() public view returns (address) { return _fundsDestination; } /** Transfers selected tokens into `_fundsDestination` address. */ function claimTokens(address token) public { require(_fundsDestination != address(0)); uint256 amount = IERC20(token).balanceOf(address(this)); IERC20(token).transfer(_fundsDestination, amount); } // -------------- HELPERS -------------- function _chainID() private view returns (uint256) { uint256 chainID; assembly { chainID := chainid() } return chainID; } // -------------- TESTNET ONLY FUNCTIONS -------------- function mint(address _account, uint _amount) public { require(_msgSender()== _upgradeMaster, "MYST: only a master can mint"); _mint(_account, _amount); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @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) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } /** * @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"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } }
// SPDX-License-Identifier: MIT 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; } }
// SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.8.4; /** * Upgrade agent interface inspired by Lunyr. * * Upgrade agent transfers tokens to a new contract. * Upgrade agent itself can be the token contract, or just a middle man contract doing the heavy lifting. */ abstract contract IUpgradeAgent { function isUpgradeAgent() external virtual pure returns (bool); function upgradeFrom(address _from, uint256 _value) public virtual; function originalSupply() public virtual view returns (uint256); function originalToken() public virtual view returns (address); }
{ "remappings": [], "optimizer": { "enabled": true, "runs": 200 }, "evmVersion": "london", "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } } }
[{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Burned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousDestination","type":"address"},{"indexed":true,"internalType":"address","name":"newDestination","type":"address"}],"name":"FundsRecoveryDestinationChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Minted","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":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"address","name":"agent","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Upgrade","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"agent","type":"address"}],"name":"UpgradeAgentSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"master","type":"address"}],"name":"UpgradeMasterSet","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenHolder","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":"token","type":"address"}],"name":"claimTokens","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":[],"name":"getFundsDestination","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUpgradeState","outputs":[{"internalType":"enum MystToken.UpgradeState","name":"","type":"uint8"}],"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":"isUpgradeAgent","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"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":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"originalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"originalToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newDestination","type":"address"}],"name":"setFundsDestination","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"agent","type":"address"}],"name":"setUpgradeAgent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newUpgradeMaster","type":"address"}],"name":"setUpgradeMaster","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":[],"name":"totalUpgraded","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":"holder","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":"uint256","name":"amount","type":"uint256"}],"name":"upgrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"upgradeAgent","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"upgradeFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"upgradeMaster","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60c06040523480156200001157600080fd5b5060405162001ca938038062001ca983398101604081905262000034916200019c565b6001600160a01b0381166080819052604080516318160ddd60e01b815290516318160ddd91600480820192602092909190829003018186803b1580156200007a57600080fd5b505afa1580156200008f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000b59190620001ce565b60a0908152600080546001600160a01b0319163317905560408051808201825260098152684d797374657269756d60b81b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f5a6b6ed89c9a1a7ef403de5fac83d634f25f39cd4318f8dabc0fdddabbba7bd1818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606082015246608082015230818501528251808203909401845260c001909152815191012060055550620001e8565b600060208284031215620001af57600080fd5b81516001600160a01b0381168114620001c757600080fd5b9392505050565b600060208284031215620001e157600080fd5b5051919050565b60805160a051611a8d6200021c600039600081816103570152610a8801526000818161024d01526109e70152611a8d6000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c8063600440cb1161010f578063a9059cbb116100a2578063dd62ed3e11610071578063dd62ed3e1461048d578063df8de3e7146104c6578063f58c5b6e146104d9578063ffeb7d75146104ea57600080fd5b8063a9059cbb1461044c578063c752ff621461045f578063d505accf14610467578063d7e7088a1461047a57600080fd5b80637ecebe00116100de5780637ecebe00146103e15780638444b3911461040157806395d89b4114610416578063a457c2d71461043957600080fd5b8063600440cb1461038c57806361d3d7a61461039d57806370a08231146103a5578063753e88e5146103ce57600080fd5b8063313ce5671161018757806342966c681161015657806342966c681461032f57806345977d03146103425780634b2ba0dd146103555780635de4ccb01461037b57600080fd5b8063313ce567146102e65780633644e51514610300578063395093511461030957806340c10f191461031c57600080fd5b806318160ddd116101c357806318160ddd14610285578063238e130a1461029757806323b872dd146102ac57806330adf81f146102bf57600080fd5b806306fdde03146101ea578063095ea7b3146102285780630e7c1cb51461024b575b600080fd5b610212604051806040016040528060098152602001684d797374657269756d60b81b81525081565b60405161021f91906117a7565b60405180910390f35b61023b610236366004611818565b6104fd565b604051901515815260200161021f565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b03909116815260200161021f565b6004545b60405190815260200161021f565b6102aa6102a5366004611842565b610513565b005b61023b6102ba366004611864565b61064a565b6102897f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6102ee601281565b60405160ff909116815260200161021f565b61028960055481565b61023b610317366004611818565b610748565b6102aa61032a366004611818565b61077f565b6102aa61033d3660046118a0565b6107f0565b6102aa6103503660046118a0565b6107fd565b7f0000000000000000000000000000000000000000000000000000000000000000610289565b6001546001600160a01b031661026d565b6000546001600160a01b031661026d565b61023b600181565b6102896103b3366004611842565b6001600160a01b031660009081526003602052604090205490565b6102aa6103dc366004611818565b6109dc565b6102896103ef366004611842565b60066020526000908152604090205481565b610409610b18565b60405161021f91906118cf565b61021260405180604001604052806004815260200163135654d560e21b81525081565b61023b610447366004611818565b610b51565b61023b61045a366004611818565b610b88565b600254610289565b6102aa6104753660046118f7565b610b95565b6102aa610488366004611842565b610dab565b61028961049b36600461196a565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b6102aa6104d4366004611842565b611131565b6008546001600160a01b031661026d565b6102aa6104f8366004611842565b61124d565b600061050a338484611370565b50600192915050565b6000546001600160a01b0316336001600160a01b0316146105915760405162461bcd60e51b815260206004820152602d60248201527f4d5953543a206f6e6c792061206d61737465722063616e207365742066756e6460448201526c39903232b9ba34b730ba34b7b760991b60648201526084015b60405180910390fd5b6001600160a01b0381166105fe5760405162461bcd60e51b815260206004820152602e60248201527f4d5953543a2066756e64732064657374696e6174696f6e2063616e277420626560448201526d207a65726f20616464726565737360901b6064820152608401610588565b600880546001600160a01b0319166001600160a01b03831690811790915560405181907f2e1db88922daae16be4e3c1a1f4bfab0cf6741938844967bd985ac8b2a12c80490600090a350565b60006001600160a01b0384166106ae5760405162461bcd60e51b8152602060048201526024808201527f4d5953543a207472616e736665722066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610588565b336001600160a01b03851681148015906106ef57506001600160a01b0380861660009081526007602090815260408083209385168352929052205460001914155b15610732576001600160a01b03808616600090815260076020908152604080832093851683529290522054610732908690839061072d9087906119b3565b611370565b61073d858585611494565b506001949350505050565b3360008181526007602090815260408083206001600160a01b0387168452909152812054909161050a91859061072d9086906119ca565b6000546001600160a01b0316336001600160a01b0316146107e25760405162461bcd60e51b815260206004820152601c60248201527f4d5953543a206f6e6c792061206d61737465722063616e206d696e74000000006044820152606401610588565b6107ec8282611554565b5050565b6107fa338261167b565b50565b6000610807610b18565b9050600381600581111561081d5761081d6118b9565b148061083a57506004816005811115610838576108386118b9565b145b6108945760405162461bcd60e51b815260206004820152602560248201527f4d5953543a20746f6b656e206973206e6f7420696e20757067726164696e6720604482015264737461746560d81b6064820152608401610588565b816108f75760405162461bcd60e51b815260206004820152602d60248201527f4d5953543a2075706772616461626c6520616d6f756e742073686f756c64206260448201526c065206d6f7265207468616e203609c1b6064820152608401610588565b33610902818461167b565b8260025461091091906119ca565b60025560015460405163753e88e560e01b81526001600160a01b038381166004830152602482018690529091169063753e88e590604401600060405180830381600087803b15801561096157600080fd5b505af1158015610975573d6000803e3d6000fd5b50505050806001600160a01b03167f7e5c344a8141a805725cb476f76c6953b842222b967edd1f78ddb6e8b3f397ac6109b66001546001600160a01b031690565b604080516001600160a01b039092168252602082018790520160405180910390a2505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a655760405162461bcd60e51b815260206004820152602860248201527f6f6e6c79206f726967696e616c20746f6b656e2063616e2063616c6c207570676044820152677261646546726f6d60c01b6064820152608401610588565b610a7d82610a786402540be400846119e2565b611554565b610aac6402540be4007f00000000000000000000000000000000000000000000000000000000000000006119e2565b60045411156107ec5760405162461bcd60e51b815260206004820152603260248201527f63616e206e6f74206d696e74206d6f726520746f6b656e73207468616e20696e604482015271081bdc9a59da5b985b0818dbdb9d1c9858dd60721b6064820152608401610588565b6001546000906001600160a01b0316610b315750600290565b600254610b3e5750600390565b600454610b4b5750600590565b50600490565b3360008181526007602090815260408083206001600160a01b0387168452909152812054909161050a91859061072d9086906119b3565b600061050a338484611494565b42841015610bdc5760405162461bcd60e51b8152602060048201526014602482015273135654d50e8814195c9b5a5d08195e1c1a5c995960621b6044820152606401610588565b6005546001600160a01b038816600090815260066020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b919087610c2f83611a01565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e00160405160208183030381529060405280519060200120604051602001610ca892919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015610d13573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590610d495750886001600160a01b0316816001600160a01b0316145b610d955760405162461bcd60e51b815260206004820152601760248201527f4d5953543a20696e76616c6964207369676e61747572650000000000000000006044820152606401610588565b610da0898989611370565b505050505050505050565b6000546001600160a01b0316336001600160a01b031614610e275760405162461bcd60e51b815260206004820152603060248201527f4d5953543a206f6e6c792061206d61737465722063616e2064657369676e617460448201526f19481d1a19481b995e1d081859d95b9d60821b6064820152608401610588565b6001600160a01b038116610e8f5760405162461bcd60e51b815260206004820152602960248201527f4d5953543a2075706772616465206167656e742063616e2774206265207a65726044820152686f206164647265737360b81b6064820152608401610588565b6004610e99610b18565b6005811115610eaa57610eaa6118b9565b1415610ef85760405162461bcd60e51b815260206004820152601f60248201527f4d5953543a20757067726164652068617320616c726561647920626567756e006044820152606401610588565b600180546001600160a01b0319166001600160a01b038316908117909155604080516330e9ebd360e11b815290516361d3d7a691600480820192602092909190829003018186803b158015610f4c57600080fd5b505afa158015610f60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f849190611a1c565b610fed5760405162461bcd60e51b815260206004820152603460248201527f4d5953543a206167656e742073686f756c6420696d706c656d656e742049557060448201527367726164654167656e7420696e7465726661636560601b6064820152608401610588565b600454600160009054906101000a90046001600160a01b03166001600160a01b0316634b2ba0dd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561103e57600080fd5b505afa158015611052573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110769190611a3e565b146110e05760405162461bcd60e51b815260206004820152603460248201527f4d5953543a2075706772616465206167656e742073686f756c64206b6e6f7720604482015273746f6b656e277320746f74616c20737570706c7960601b6064820152608401610588565b7f7845d5aa74cc410e35571258d954f23b82276e160fe8c188fa80566580f279cc6111136001546001600160a01b031690565b6040516001600160a01b03909116815260200160405180910390a150565b6008546001600160a01b031661114657600080fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a082319060240160206040518083038186803b15801561118857600080fd5b505afa15801561119c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c09190611a3e565b60085460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925083169063a9059cbb90604401602060405180830381600087803b15801561121057600080fd5b505af1158015611224573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112489190611a1c565b505050565b6001600160a01b0381166112b65760405162461bcd60e51b815260206004820152602a60248201527f4d5953543a2075706772616465206d61737465722063616e2774206265207a65604482015269726f206164647265737360b01b6064820152608401610588565b6000546001600160a01b0316336001600160a01b03161461132b5760405162461bcd60e51b815260206004820152602960248201527f4d5953543a206f6e6c792075706772616465206d61737465722063616e20736560448201526874206e6577206f6e6560b81b6064820152608401610588565b600080546001600160a01b0319166001600160a01b0383169081179091557f0bae748e6d38d2b1532af619519837d91d74845ad693f6f229677b4ac20b2d5090611113565b6001600160a01b0383166113d25760405162461bcd60e51b815260206004820152602360248201527f4d5953543a20617070726f76652066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610588565b6001600160a01b0382166114325760405162461bcd60e51b815260206004820152602160248201527f4d5953543a20617070726f766520746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610588565b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0382166114ac57611248838261167b565b6001600160a01b0383166000908152600360205260409020546114d09082906119b3565b6001600160a01b0380851660009081526003602052604080822093909355908416815220546115009082906119ca565b6001600160a01b0380841660008181526003602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114879085815260200190565b6001600160a01b0382166115aa5760405162461bcd60e51b815260206004820152601e60248201527f4d5953543a206d696e7420746f20746865207a65726f206164647265737300006044820152606401610588565b806004546115b891906119ca565b6004556001600160a01b0382166000908152600360205260409020546115df9082906119ca565b6001600160a01b038316600081815260036020526040908190209290925590517f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe9061162e9084815260200190565b60405180910390a26040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b0382166116d15760405162461bcd60e51b815260206004820181905260248201527f4d5953543a206275726e2066726f6d20746865207a65726f20616464726573736044820152606401610588565b6001600160a01b0382166000908152600360205260409020546116f59082906119b3565b6001600160a01b03831660009081526003602052604090205560045461171c9082906119b3565b6004556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3816001600160a01b03167f696de425f79f4a40bc6d2122ca50507f0efbeabbff86a84871b7196ab8ea8df78260405161179b91815260200190565b60405180910390a25050565b600060208083528351808285015260005b818110156117d4578581018301518582016040015282016117b8565b818111156117e6576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461181357600080fd5b919050565b6000806040838503121561182b57600080fd5b611834836117fc565b946020939093013593505050565b60006020828403121561185457600080fd5b61185d826117fc565b9392505050565b60008060006060848603121561187957600080fd5b611882846117fc565b9250611890602085016117fc565b9150604084013590509250925092565b6000602082840312156118b257600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60208101600683106118f157634e487b7160e01b600052602160045260246000fd5b91905290565b600080600080600080600060e0888a03121561191257600080fd5b61191b886117fc565b9650611929602089016117fc565b95506040880135945060608801359350608088013560ff8116811461194d57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561197d57600080fd5b611986836117fc565b9150611994602084016117fc565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b6000828210156119c5576119c561199d565b500390565b600082198211156119dd576119dd61199d565b500190565b60008160001904831182151516156119fc576119fc61199d565b500290565b6000600019821415611a1557611a1561199d565b5060010190565b600060208284031215611a2e57600080fd5b8151801515811461185d57600080fd5b600060208284031215611a5057600080fd5b505191905056fea2646970667358221220648ff44524a84483a155252e91d43ce845b165c82019b2235db9aa2aa7efd5db64736f6c634300080900330000000000000000000000001ba2df26371e83d87afee2f27a42f5a7fe9e5219
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101e55760003560e01c8063600440cb1161010f578063a9059cbb116100a2578063dd62ed3e11610071578063dd62ed3e1461048d578063df8de3e7146104c6578063f58c5b6e146104d9578063ffeb7d75146104ea57600080fd5b8063a9059cbb1461044c578063c752ff621461045f578063d505accf14610467578063d7e7088a1461047a57600080fd5b80637ecebe00116100de5780637ecebe00146103e15780638444b3911461040157806395d89b4114610416578063a457c2d71461043957600080fd5b8063600440cb1461038c57806361d3d7a61461039d57806370a08231146103a5578063753e88e5146103ce57600080fd5b8063313ce5671161018757806342966c681161015657806342966c681461032f57806345977d03146103425780634b2ba0dd146103555780635de4ccb01461037b57600080fd5b8063313ce567146102e65780633644e51514610300578063395093511461030957806340c10f191461031c57600080fd5b806318160ddd116101c357806318160ddd14610285578063238e130a1461029757806323b872dd146102ac57806330adf81f146102bf57600080fd5b806306fdde03146101ea578063095ea7b3146102285780630e7c1cb51461024b575b600080fd5b610212604051806040016040528060098152602001684d797374657269756d60b81b81525081565b60405161021f91906117a7565b60405180910390f35b61023b610236366004611818565b6104fd565b604051901515815260200161021f565b7f0000000000000000000000001ba2df26371e83d87afee2f27a42f5a7fe9e52195b6040516001600160a01b03909116815260200161021f565b6004545b60405190815260200161021f565b6102aa6102a5366004611842565b610513565b005b61023b6102ba366004611864565b61064a565b6102897f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6102ee601281565b60405160ff909116815260200161021f565b61028960055481565b61023b610317366004611818565b610748565b6102aa61032a366004611818565b61077f565b6102aa61033d3660046118a0565b6107f0565b6102aa6103503660046118a0565b6107fd565b7f0000000000000000000000000000000000000000000000000000000000000000610289565b6001546001600160a01b031661026d565b6000546001600160a01b031661026d565b61023b600181565b6102896103b3366004611842565b6001600160a01b031660009081526003602052604090205490565b6102aa6103dc366004611818565b6109dc565b6102896103ef366004611842565b60066020526000908152604090205481565b610409610b18565b60405161021f91906118cf565b61021260405180604001604052806004815260200163135654d560e21b81525081565b61023b610447366004611818565b610b51565b61023b61045a366004611818565b610b88565b600254610289565b6102aa6104753660046118f7565b610b95565b6102aa610488366004611842565b610dab565b61028961049b36600461196a565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b6102aa6104d4366004611842565b611131565b6008546001600160a01b031661026d565b6102aa6104f8366004611842565b61124d565b600061050a338484611370565b50600192915050565b6000546001600160a01b0316336001600160a01b0316146105915760405162461bcd60e51b815260206004820152602d60248201527f4d5953543a206f6e6c792061206d61737465722063616e207365742066756e6460448201526c39903232b9ba34b730ba34b7b760991b60648201526084015b60405180910390fd5b6001600160a01b0381166105fe5760405162461bcd60e51b815260206004820152602e60248201527f4d5953543a2066756e64732064657374696e6174696f6e2063616e277420626560448201526d207a65726f20616464726565737360901b6064820152608401610588565b600880546001600160a01b0319166001600160a01b03831690811790915560405181907f2e1db88922daae16be4e3c1a1f4bfab0cf6741938844967bd985ac8b2a12c80490600090a350565b60006001600160a01b0384166106ae5760405162461bcd60e51b8152602060048201526024808201527f4d5953543a207472616e736665722066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610588565b336001600160a01b03851681148015906106ef57506001600160a01b0380861660009081526007602090815260408083209385168352929052205460001914155b15610732576001600160a01b03808616600090815260076020908152604080832093851683529290522054610732908690839061072d9087906119b3565b611370565b61073d858585611494565b506001949350505050565b3360008181526007602090815260408083206001600160a01b0387168452909152812054909161050a91859061072d9086906119ca565b6000546001600160a01b0316336001600160a01b0316146107e25760405162461bcd60e51b815260206004820152601c60248201527f4d5953543a206f6e6c792061206d61737465722063616e206d696e74000000006044820152606401610588565b6107ec8282611554565b5050565b6107fa338261167b565b50565b6000610807610b18565b9050600381600581111561081d5761081d6118b9565b148061083a57506004816005811115610838576108386118b9565b145b6108945760405162461bcd60e51b815260206004820152602560248201527f4d5953543a20746f6b656e206973206e6f7420696e20757067726164696e6720604482015264737461746560d81b6064820152608401610588565b816108f75760405162461bcd60e51b815260206004820152602d60248201527f4d5953543a2075706772616461626c6520616d6f756e742073686f756c64206260448201526c065206d6f7265207468616e203609c1b6064820152608401610588565b33610902818461167b565b8260025461091091906119ca565b60025560015460405163753e88e560e01b81526001600160a01b038381166004830152602482018690529091169063753e88e590604401600060405180830381600087803b15801561096157600080fd5b505af1158015610975573d6000803e3d6000fd5b50505050806001600160a01b03167f7e5c344a8141a805725cb476f76c6953b842222b967edd1f78ddb6e8b3f397ac6109b66001546001600160a01b031690565b604080516001600160a01b039092168252602082018790520160405180910390a2505050565b336001600160a01b037f0000000000000000000000001ba2df26371e83d87afee2f27a42f5a7fe9e52191614610a655760405162461bcd60e51b815260206004820152602860248201527f6f6e6c79206f726967696e616c20746f6b656e2063616e2063616c6c207570676044820152677261646546726f6d60c01b6064820152608401610588565b610a7d82610a786402540be400846119e2565b611554565b610aac6402540be4007f00000000000000000000000000000000000000000000000000000000000000006119e2565b60045411156107ec5760405162461bcd60e51b815260206004820152603260248201527f63616e206e6f74206d696e74206d6f726520746f6b656e73207468616e20696e604482015271081bdc9a59da5b985b0818dbdb9d1c9858dd60721b6064820152608401610588565b6001546000906001600160a01b0316610b315750600290565b600254610b3e5750600390565b600454610b4b5750600590565b50600490565b3360008181526007602090815260408083206001600160a01b0387168452909152812054909161050a91859061072d9086906119b3565b600061050a338484611494565b42841015610bdc5760405162461bcd60e51b8152602060048201526014602482015273135654d50e8814195c9b5a5d08195e1c1a5c995960621b6044820152606401610588565b6005546001600160a01b038816600090815260066020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b919087610c2f83611a01565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e00160405160208183030381529060405280519060200120604051602001610ca892919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015610d13573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590610d495750886001600160a01b0316816001600160a01b0316145b610d955760405162461bcd60e51b815260206004820152601760248201527f4d5953543a20696e76616c6964207369676e61747572650000000000000000006044820152606401610588565b610da0898989611370565b505050505050505050565b6000546001600160a01b0316336001600160a01b031614610e275760405162461bcd60e51b815260206004820152603060248201527f4d5953543a206f6e6c792061206d61737465722063616e2064657369676e617460448201526f19481d1a19481b995e1d081859d95b9d60821b6064820152608401610588565b6001600160a01b038116610e8f5760405162461bcd60e51b815260206004820152602960248201527f4d5953543a2075706772616465206167656e742063616e2774206265207a65726044820152686f206164647265737360b81b6064820152608401610588565b6004610e99610b18565b6005811115610eaa57610eaa6118b9565b1415610ef85760405162461bcd60e51b815260206004820152601f60248201527f4d5953543a20757067726164652068617320616c726561647920626567756e006044820152606401610588565b600180546001600160a01b0319166001600160a01b038316908117909155604080516330e9ebd360e11b815290516361d3d7a691600480820192602092909190829003018186803b158015610f4c57600080fd5b505afa158015610f60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f849190611a1c565b610fed5760405162461bcd60e51b815260206004820152603460248201527f4d5953543a206167656e742073686f756c6420696d706c656d656e742049557060448201527367726164654167656e7420696e7465726661636560601b6064820152608401610588565b600454600160009054906101000a90046001600160a01b03166001600160a01b0316634b2ba0dd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561103e57600080fd5b505afa158015611052573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110769190611a3e565b146110e05760405162461bcd60e51b815260206004820152603460248201527f4d5953543a2075706772616465206167656e742073686f756c64206b6e6f7720604482015273746f6b656e277320746f74616c20737570706c7960601b6064820152608401610588565b7f7845d5aa74cc410e35571258d954f23b82276e160fe8c188fa80566580f279cc6111136001546001600160a01b031690565b6040516001600160a01b03909116815260200160405180910390a150565b6008546001600160a01b031661114657600080fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a082319060240160206040518083038186803b15801561118857600080fd5b505afa15801561119c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c09190611a3e565b60085460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925083169063a9059cbb90604401602060405180830381600087803b15801561121057600080fd5b505af1158015611224573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112489190611a1c565b505050565b6001600160a01b0381166112b65760405162461bcd60e51b815260206004820152602a60248201527f4d5953543a2075706772616465206d61737465722063616e2774206265207a65604482015269726f206164647265737360b01b6064820152608401610588565b6000546001600160a01b0316336001600160a01b03161461132b5760405162461bcd60e51b815260206004820152602960248201527f4d5953543a206f6e6c792075706772616465206d61737465722063616e20736560448201526874206e6577206f6e6560b81b6064820152608401610588565b600080546001600160a01b0319166001600160a01b0383169081179091557f0bae748e6d38d2b1532af619519837d91d74845ad693f6f229677b4ac20b2d5090611113565b6001600160a01b0383166113d25760405162461bcd60e51b815260206004820152602360248201527f4d5953543a20617070726f76652066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610588565b6001600160a01b0382166114325760405162461bcd60e51b815260206004820152602160248201527f4d5953543a20617070726f766520746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610588565b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0382166114ac57611248838261167b565b6001600160a01b0383166000908152600360205260409020546114d09082906119b3565b6001600160a01b0380851660009081526003602052604080822093909355908416815220546115009082906119ca565b6001600160a01b0380841660008181526003602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114879085815260200190565b6001600160a01b0382166115aa5760405162461bcd60e51b815260206004820152601e60248201527f4d5953543a206d696e7420746f20746865207a65726f206164647265737300006044820152606401610588565b806004546115b891906119ca565b6004556001600160a01b0382166000908152600360205260409020546115df9082906119ca565b6001600160a01b038316600081815260036020526040908190209290925590517f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe9061162e9084815260200190565b60405180910390a26040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b0382166116d15760405162461bcd60e51b815260206004820181905260248201527f4d5953543a206275726e2066726f6d20746865207a65726f20616464726573736044820152606401610588565b6001600160a01b0382166000908152600360205260409020546116f59082906119b3565b6001600160a01b03831660009081526003602052604090205560045461171c9082906119b3565b6004556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3816001600160a01b03167f696de425f79f4a40bc6d2122ca50507f0efbeabbff86a84871b7196ab8ea8df78260405161179b91815260200190565b60405180910390a25050565b600060208083528351808285015260005b818110156117d4578581018301518582016040015282016117b8565b818111156117e6576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461181357600080fd5b919050565b6000806040838503121561182b57600080fd5b611834836117fc565b946020939093013593505050565b60006020828403121561185457600080fd5b61185d826117fc565b9392505050565b60008060006060848603121561187957600080fd5b611882846117fc565b9250611890602085016117fc565b9150604084013590509250925092565b6000602082840312156118b257600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60208101600683106118f157634e487b7160e01b600052602160045260246000fd5b91905290565b600080600080600080600060e0888a03121561191257600080fd5b61191b886117fc565b9650611929602089016117fc565b95506040880135945060608801359350608088013560ff8116811461194d57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561197d57600080fd5b611986836117fc565b9150611994602084016117fc565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b6000828210156119c5576119c561199d565b500390565b600082198211156119dd576119dd61199d565b500190565b60008160001904831182151516156119fc576119fc61199d565b500290565b6000600019821415611a1557611a1561199d565b5060010190565b600060208284031215611a2e57600080fd5b8151801515811461185d57600080fd5b600060208284031215611a5057600080fd5b505191905056fea2646970667358221220648ff44524a84483a155252e91d43ce845b165c82019b2235db9aa2aa7efd5db64736f6c63430008090033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000001ba2df26371e83d87afee2f27a42f5a7fe9e5219
-----Decoded View---------------
Arg [0] : tokenAddress (address): 0x1ba2DF26371E83D87Afee2F27a42f5A7FE9e5219
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000001ba2df26371e83d87afee2f27a42f5a7fe9e5219
Deployed Bytecode Sourcemap
313:11957:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1371:41;;;;;;;;;;;;;;;-1:-1:-1;;;1371:41:3;;;;;;;;;;;;:::i;:::-;;;;;;;;3714:156;;;;;;:::i;:::-;;:::i;:::-;;;1218:14:5;;1211:22;1193:41;;1181:2;1166:18;3714:156:3;1053:187:5;7463:102:3;7544:14;7463:102;;;-1:-1:-1;;;;;1409:32:5;;;1391:51;;1379:2;1364:18;7463:102:3;1245:203:5;3061:106:3;3148:12;;3061:106;;;1599:25:5;;;1587:2;1572:18;3061:106:3;1453:177:5;10942:387:3;;;;;;:::i;:::-;;:::i;:::-;;5182:671;;;;;;:::i;:::-;;:::i;1660:108::-;;1702:66;1660:108;;1462:35;;1495:2;1462:35;;;;;2513:4:5;2501:17;;;2483:36;;2471:2;2456:18;1462:35:3;2341:184:5;1518:31:3;;;;;;3876:212;;;;;;:::i;:::-;;:::i;12094:174::-;;;;;;:::i;:::-;;:::i;3478:81::-;;;;;;:::i;:::-;;:::i;8550:676::-;;;;;;:::i;:::-;;:::i;7571:104::-;7653:15;7571:104;;8273:100;8352:13;;-1:-1:-1;;;;;8352:13:3;8273:100;;8174:93;8220:7;8246:14;-1:-1:-1;;;;;8246:14:3;8174:93;;867:51;;914:4;867:51;;3173:133;;;;;;:::i;:::-;-1:-1:-1;;;;;3277:22:3;3251:7;3277:22;;;:9;:22;;;;;;;3173:133;7681:415;;;;;;:::i;:::-;;:::i;1852:38::-;;;;;;:::i;:::-;;;;;;;;;;;;;;10323:341;;;:::i;:::-;;;;;;;:::i;1418:38::-;;;;;;;;;;;;;;;-1:-1:-1;;;1418:38:3;;;;;4094:222;;;;;;:::i;:::-;;:::i;3312:160::-;;;;;;:::i;:::-;;:::i;8379:93::-;8451:14;;8379:93;;4390:670;;;;;;:::i;:::-;;:::i;9589:728::-;;;;;;:::i;:::-;;:::i;3565:143::-;;;;;;:::i;:::-;-1:-1:-1;;;;;3673:19:3;;;3647:7;3673:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;3565:143;11582:224;;;;;;:::i;:::-;;:::i;11392:102::-;11470:17;;-1:-1:-1;;;;;11470:17:3;11392:102;;9232:351;;;;;;:::i;:::-;;:::i;3714:156::-;3788:4;3804:38;666:10:2;3827:7:3;3836:5;3804:8;:38::i;:::-;-1:-1:-1;3859:4:3;3714:156;;;;:::o;10942:387::-;11035:14;;-1:-1:-1;;;;;11035:14:3;666:10:2;-1:-1:-1;;;;;11020:29:3;;11012:87;;;;-1:-1:-1;;;11012:87:3;;4361:2:5;11012:87:3;;;4343:21:5;4400:2;4380:18;;;4373:30;4439:34;4419:18;;;4412:62;-1:-1:-1;;;4490:18:5;;;4483:43;4543:19;;11012:87:3;;;;;;;;;-1:-1:-1;;;;;11117:28:3;;11109:87;;;;-1:-1:-1;;;11109:87:3;;4775:2:5;11109:87:3;;;4757:21:5;4814:2;4794:18;;;4787:30;4853:34;4833:18;;;4826:62;-1:-1:-1;;;4904:18:5;;;4897:44;4958:19;;11109:87:3;4573:410:5;11109:87:3;11207:17;:34;;-1:-1:-1;;;;;;11207:34:3;-1:-1:-1;;;;;11207:34:3;;;;;;;;11256:66;;11207:34;;11256:66;;-1:-1:-1;;11256:66:3;10942:387;:::o;5182:671::-;5280:4;-1:-1:-1;;;;;5387:20:3;;5379:69;;;;-1:-1:-1;;;5379:69:3;;5190:2:5;5379:69:3;;;5172:21:5;5229:2;5209:18;;;5202:30;5268:34;5248:18;;;5241:62;-1:-1:-1;;;5319:18:5;;;5312:34;5363:19;;5379:69:3;4988:400:5;5379:69:3;666:10:2;-1:-1:-1;;;;;5622:17:3;;;;;;;:70;;-1:-1:-1;;;;;;5643:19:3;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;-1:-1:-1;;5643:49:3;;5622:70;5618:165;;;-1:-1:-1;;;;;5734:19:3;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;5708:64;;5717:6;;5725:7;;5734:37;;5765:6;;5734:37;:::i;:::-;5708:8;:64::i;:::-;5793:32;5799:6;5807:9;5818:6;5793:5;:32::i;:::-;-1:-1:-1;5842:4:3;;5182:671;-1:-1:-1;;;;5182:671:3:o;3876:212::-;666:10:2;3964:4:3;4012:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4012:34:3;;;;;;;;;;3964:4;;3980:80;;4003:7;;4012:47;;4049:10;;4012:47;:::i;12094:174::-;12180:14;;-1:-1:-1;;;;;12180:14:3;666:10:2;-1:-1:-1;;;;;12165:29:3;;12157:70;;;;-1:-1:-1;;;12157:70:3;;5990:2:5;12157:70:3;;;5972:21:5;6029:2;6009:18;;;6002:30;6068;6048:18;;;6041:58;6116:18;;12157:70:3;5788:352:5;12157:70:3;12237:24;12243:8;12253:7;12237:5;:24::i;:::-;12094:174;;:::o;3478:81::-;3525:27;666:10:2;3545:6:3;3525:5;:27::i;:::-;3478:81;:::o;8550:676::-;8600:18;8621:17;:15;:17::i;:::-;8600:38;-1:-1:-1;8665:27:3;8656:5;:36;;;;;;;;:::i;:::-;;:71;;;-1:-1:-1;8705:22:3;8696:5;:31;;;;;;;;:::i;:::-;;8656:71;8648:121;;;;-1:-1:-1;;;8648:121:3;;6347:2:5;8648:121:3;;;6329:21:5;6386:2;6366:18;;;6359:30;6425:34;6405:18;;;6398:62;-1:-1:-1;;;6476:18:5;;;6469:35;6521:19;;8648:121:3;6145:401:5;8648:121:3;8788:11;8780:69;;;;-1:-1:-1;;;8780:69:3;;6753:2:5;8780:69:3;;;6735:21:5;6792:2;6772:18;;;6765:30;6831:34;6811:18;;;6804:62;-1:-1:-1;;;6882:18:5;;;6875:43;6935:19;;8780:69:3;6551:409:5;8780:69:3;666:10:2;8938:21:3;666:10:2;8952:6:3;8938:5;:21::i;:::-;9057:6;9040:14;;:23;;;;:::i;:::-;9023:14;:40;9124:13;;:41;;-1:-1:-1;;;9124:41:3;;-1:-1:-1;;;;;7157:32:5;;;9124:41:3;;;7139:51:5;7206:18;;;7199:34;;;9124:13:3;;;;:25;;7112:18:5;;9124:41:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9188:6;-1:-1:-1;;;;;9180:39:3;;9196:14;8352:13;;-1:-1:-1;;;;;8352:13:3;;8273:100;9196:14;9180:39;;;-1:-1:-1;;;;;7157:32:5;;;7139:51;;7221:2;7206:18;;7199:34;;;7112:18;9180:39:3;;;;;;;8590:636;;8550:676;:::o;7681:415::-;7770:10;-1:-1:-1;;;;;7544:14:3;7770:29;;7762:82;;;;-1:-1:-1;;;7762:82:3;;7446:2:5;7762:82:3;;;7428:21:5;7485:2;7465:18;;;7458:30;7524:34;7504:18;;;7497:62;-1:-1:-1;;;7575:18:5;;;7568:38;7623:19;;7762:82:3;7244:404:5;7762:82:3;7925:40;7931:8;7941:23;856:4;7941:6;:23;:::i;:::-;7925:5;:40::i;:::-;8001:33;856:4;7653:15;8001:33;:::i;:::-;3148:12;;7984:50;;7976:113;;;;-1:-1:-1;;;7976:113:3;;8028:2:5;7976:113:3;;;8010:21:5;8067:2;8047:18;;;8040:30;8106:34;8086:18;;;8079:62;-1:-1:-1;;;8157:18:5;;;8150:48;8215:19;;7976:113:3;7826:414:5;10323:341:3;10405:13;;10370:12;;-1:-1:-1;;;;;10405:13:3;10394:263;;-1:-1:-1;10445:28:3;;10323:341::o;10394:263::-;10491:14;;10488:169;;-1:-1:-1;10519:27:3;;10323:341::o;10488:169::-;3148:12;;10561:96;;-1:-1:-1;10591:22:3;;10323:341::o;10561:96::-;-1:-1:-1;10635:22:3;;10323:341::o;4094:222::-;666:10:2;4187:4:3;4235:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4235:34:3;;;;;;;;;;4187:4;;4203:85;;4226:7;;4235:52;;4272:15;;4235:52;:::i;3312:160::-;3390:4;3406:38;666:10:2;3426:9:3;3437:6;3406:5;:38::i;4390:670::-;4542:15;4530:8;:27;;4522:60;;;;-1:-1:-1;;;4522:60:3;;8447:2:5;4522:60:3;;;8429:21:5;8486:2;8466:18;;;8459:30;-1:-1:-1;;;8505:18:5;;;8498:50;8565:18;;4522:60:3;8245:344:5;4522:60:3;4694:16;;-1:-1:-1;;;;;4790:14:3;;4592;4790;;;:6;:14;;;;;:16;;4592:14;;4694:16;1702:66;;4766:6;;4774:7;;4783:5;;4790:16;4592:14;4790:16;;;:::i;:::-;;;;-1:-1:-1;4738:79:3;;;;;;9021:25:5;;;;-1:-1:-1;;;;;9120:15:5;;;9100:18;;;9093:43;9172:15;;;;9152:18;;;9145:43;9204:18;;;9197:34;9247:19;;;9240:35;9291:19;;;9284:35;;;8993:19;;4738:79:3;;;;;;;;;;;;4728:90;;;;;;4632:200;;;;;;;;-1:-1:-1;;;9588:27:5;;9640:1;9631:11;;9624:27;;;;9676:2;9667:12;;9660:28;9713:2;9704:12;;9330:392;4632:200:3;;;;-1:-1:-1;;4632:200:3;;;;;;;;;4609:233;;4632:200;4609:233;;;;4852:24;4879:26;;;;;;;;;9954:25:5;;;10027:4;10015:17;;9995:18;;;9988:45;;;;10049:18;;;10042:34;;;10092:18;;;10085:34;;;4609:233:3;;-1:-1:-1;4852:24:3;4879:26;;9926:19:5;;4879:26:3;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4879:26:3;;-1:-1:-1;;4879:26:3;;;-1:-1:-1;;;;;;;4923:30:3;;;;;;:60;;;4977:6;-1:-1:-1;;;;;4957:26:3;:16;-1:-1:-1;;;;;4957:26:3;;4923:60;4915:96;;;;-1:-1:-1;;;4915:96:3;;10332:2:5;4915:96:3;;;10314:21:5;10371:2;10351:18;;;10344:30;10410:25;10390:18;;;10383:53;10453:18;;4915:96:3;10130:347:5;4915:96:3;5021:32;5030:6;5038:7;5047:5;5021:8;:32::i;:::-;4512:548;;4390:670;;;;;;;:::o;9589:728::-;9671:14;;-1:-1:-1;;;;;9671:14:3;666:10:2;-1:-1:-1;;;;;9656:29:3;;9648:90;;;;-1:-1:-1;;;9648:90:3;;10684:2:5;9648:90:3;;;10666:21:5;10723:2;10703:18;;;10696:30;10762:34;10742:18;;;10735:62;-1:-1:-1;;;10813:18:5;;;10806:46;10869:19;;9648:90:3;10482:412:5;9648:90:3;-1:-1:-1;;;;;9756:21:3;;9748:75;;;;-1:-1:-1;;;9748:75:3;;11101:2:5;9748:75:3;;;11083:21:5;11140:2;11120:18;;;11113:30;11179:34;11159:18;;;11152:62;-1:-1:-1;;;11230:18:5;;;11223:39;11279:19;;9748:75:3;10899:405:5;9748:75:3;9862:22;9841:17;:15;:17::i;:::-;:43;;;;;;;;:::i;:::-;;;9833:87;;;;-1:-1:-1;;;9833:87:3;;11511:2:5;9833:87:3;;;11493:21:5;11550:2;11530:18;;;11523:30;11589:33;11569:18;;;11562:61;11640:18;;9833:87:3;11309:355:5;9833:87:3;9931:13;:36;;-1:-1:-1;;;;;;9931:36:3;-1:-1:-1;;;;;9931:36:3;;;;;;;;9985:30;;;-1:-1:-1;;;9985:30:3;;;;:28;;:30;;;;;;;;;;;;;;;9931:36;9985:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9977:95;;;;-1:-1:-1;;;9977:95:3;;12153:2:5;9977:95:3;;;12135:21:5;12192:2;12172:18;;;12165:30;12231:34;12211:18;;;12204:62;-1:-1:-1;;;12282:18:5;;;12275:50;12342:19;;9977:95:3;11951:416:5;9977:95:3;3148:12;;10159:13;;;;;;;;;-1:-1:-1;;;;;10159:13:3;-1:-1:-1;;;;;10159:28:3;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:47;10151:112;;;;-1:-1:-1;;;10151:112:3;;12763:2:5;10151:112:3;;;12745:21:5;12802:2;12782:18;;;12775:30;12841:34;12821:18;;;12814:62;-1:-1:-1;;;12892:18:5;;;12885:50;12952:19;;10151:112:3;12561:416:5;10151:112:3;10279:31;10295:14;8352:13;;-1:-1:-1;;;;;8352:13:3;;8273:100;10295:14;10279:31;;-1:-1:-1;;;;;1409:32:5;;;1391:51;;1379:2;1364:18;10279:31:3;;;;;;;9589:728;:::o;11582:224::-;11643:17;;-1:-1:-1;;;;;11643:17:3;11635:40;;;;;;11702:38;;-1:-1:-1;;;11702:38:3;;11734:4;11702:38;;;1391:51:5;11685:14:3;;-1:-1:-1;;;;;11702:23:3;;;;;1364:18:5;;11702:38:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11773:17;;11750:49;;-1:-1:-1;;;11750:49:3;;-1:-1:-1;;;;;11773:17:3;;;11750:49;;;7139:51:5;7206:18;;;7199:34;;;11685:55:3;;-1:-1:-1;11750:22:3;;;;;7112:18:5;;11750:49:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11625:181;11582:224;:::o;9232:351::-;-1:-1:-1;;;;;9311:32:3;;9303:87;;;;-1:-1:-1;;;9303:87:3;;13184:2:5;9303:87:3;;;13166:21:5;13223:2;13203:18;;;13196:30;13262:34;13242:18;;;13235:62;-1:-1:-1;;;13313:18:5;;;13306:40;13363:19;;9303:87:3;12982:406:5;9303:87:3;9424:14;;-1:-1:-1;;;;;9424:14:3;666:10:2;-1:-1:-1;;;;;9408:30:3;;9400:84;;;;-1:-1:-1;;;9400:84:3;;13595:2:5;9400:84:3;;;13577:21:5;13634:2;13614:18;;;13607:30;13673:34;13653:18;;;13646:62;-1:-1:-1;;;13724:18:5;;;13717:39;13773:19;;9400:84:3;13393:405:5;9400:84:3;9494:14;:33;;-1:-1:-1;;;;;;9494:33:3;-1:-1:-1;;;;;9494:33:3;;;;;;;;9543;;9560:15;8174:93;7066:331;-1:-1:-1;;;;;7159:20:3;;7151:68;;;;-1:-1:-1;;;7151:68:3;;14005:2:5;7151:68:3;;;13987:21:5;14044:2;14024:18;;;14017:30;14083:34;14063:18;;;14056:62;-1:-1:-1;;;14134:18:5;;;14127:33;14177:19;;7151:68:3;13803:399:5;7151:68:3;-1:-1:-1;;;;;7237:21:3;;7229:67;;;;-1:-1:-1;;;7229:67:3;;14409:2:5;7229:67:3;;;14391:21:5;14448:2;14428:18;;;14421:30;14487:34;14467:18;;;14460:62;-1:-1:-1;;;14538:18:5;;;14531:31;14579:19;;7229:67:3;14207:397:5;7229:67:3;-1:-1:-1;;;;;7307:19:3;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:36;;;7358:32;;1599:25:5;;;7358:32:3;;1572:18:5;7358:32:3;;;;;;;;7066:331;;;:::o;6698:362::-;-1:-1:-1;;;;;6829:16:3;;6825:86;;6861:19;6867:4;6873:6;6861:5;:19::i;6825:86::-;-1:-1:-1;;;;;6939:15:3;;;;;;:9;:15;;;;;;:24;;6957:6;;6939:24;:::i;:::-;-1:-1:-1;;;;;6921:15:3;;;;;;;:9;:15;;;;;;:42;;;;6989:13;;;;;;;:22;;7005:6;;6989:22;:::i;:::-;-1:-1:-1;;;;;6973:13:3;;;;;;;:9;:13;;;;;;;:38;;;;7027:26;;;;;;;;;;7046:6;1599:25:5;;1587:2;1572:18;;1453:177;5972:362:3;-1:-1:-1;;;;;6046:20:3;;6038:63;;;;-1:-1:-1;;;6038:63:3;;14811:2:5;6038:63:3;;;14793:21:5;14850:2;14830:18;;;14823:30;14889:32;14869:18;;;14862:60;14939:18;;6038:63:3;14609:354:5;6038:63:3;6176:6;6161:12;;:21;;;;:::i;:::-;6146:12;:36;-1:-1:-1;;;;;6212:17:3;;;;;;:9;:17;;;;;;:26;;6232:6;;6212:26;:::i;:::-;-1:-1:-1;;;;;6192:17:3;;;;;;:9;:17;;;;;;;:46;;;;6254:22;;;;;;6269:6;1599:25:5;;1587:2;1572:18;;1453:177;6254:22:3;;;;;;;;6291:36;;1599:25:5;;;-1:-1:-1;;;;;6291:36:3;;;6308:1;;6291:36;;1587:2:5;1572:18;6291:36:3;;;;;;;5972:362;;:::o;6340:352::-;-1:-1:-1;;;;;6412:18:3;;6404:63;;;;-1:-1:-1;;;6404:63:3;;15170:2:5;6404:63:3;;;15152:21:5;;;15189:18;;;15182:30;15248:34;15228:18;;;15221:62;15300:18;;6404:63:3;14968:356:5;6404:63:3;-1:-1:-1;;;;;6530:15:3;;;;;;:9;:15;;;;;;:24;;6548:6;;6530:24;:::i;:::-;-1:-1:-1;;;;;6512:15:3;;;;;;:9;:15;;;;;:42;6579:12;;:21;;6594:6;;6579:21;:::i;:::-;6564:12;:36;6616:34;;1599:25:5;;;6639:1:3;;-1:-1:-1;;;;;6616:34:3;;;;;1587:2:5;1572:18;6616:34:3;;;;;;;6672:4;-1:-1:-1;;;;;6665:20:3;;6678:6;6665:20;;;;1599:25:5;;1587:2;1572:18;;1453:177;6665:20:3;;;;;;;;6340:352;;:::o;14:597:5:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:5;574:15;-1:-1:-1;;570:29:5;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:5:o;616:173::-;684:20;;-1:-1:-1;;;;;733:31:5;;723:42;;713:70;;779:1;776;769:12;713:70;616:173;;;:::o;794:254::-;862:6;870;923:2;911:9;902:7;898:23;894:32;891:52;;;939:1;936;929:12;891:52;962:29;981:9;962:29;:::i;:::-;952:39;1038:2;1023:18;;;;1010:32;;-1:-1:-1;;;794:254:5:o;1635:186::-;1694:6;1747:2;1735:9;1726:7;1722:23;1718:32;1715:52;;;1763:1;1760;1753:12;1715:52;1786:29;1805:9;1786:29;:::i;:::-;1776:39;1635:186;-1:-1:-1;;;1635:186:5:o;1826:328::-;1903:6;1911;1919;1972:2;1960:9;1951:7;1947:23;1943:32;1940:52;;;1988:1;1985;1978:12;1940:52;2011:29;2030:9;2011:29;:::i;:::-;2001:39;;2059:38;2093:2;2082:9;2078:18;2059:38;:::i;:::-;2049:48;;2144:2;2133:9;2129:18;2116:32;2106:42;;1826:328;;;;;:::o;2530:180::-;2589:6;2642:2;2630:9;2621:7;2617:23;2613:32;2610:52;;;2658:1;2655;2648:12;2610:52;-1:-1:-1;2681:23:5;;2530:180;-1:-1:-1;2530:180:5:o;2715:127::-;2776:10;2771:3;2767:20;2764:1;2757:31;2807:4;2804:1;2797:15;2831:4;2828:1;2821:15;2847:344;2995:2;2980:18;;3028:1;3017:13;;3007:144;;3073:10;3068:3;3064:20;3061:1;3054:31;3108:4;3105:1;3098:15;3136:4;3133:1;3126:15;3007:144;3160:25;;;2847:344;:::o;3196:693::-;3307:6;3315;3323;3331;3339;3347;3355;3408:3;3396:9;3387:7;3383:23;3379:33;3376:53;;;3425:1;3422;3415:12;3376:53;3448:29;3467:9;3448:29;:::i;:::-;3438:39;;3496:38;3530:2;3519:9;3515:18;3496:38;:::i;:::-;3486:48;;3581:2;3570:9;3566:18;3553:32;3543:42;;3632:2;3621:9;3617:18;3604:32;3594:42;;3686:3;3675:9;3671:19;3658:33;3731:4;3724:5;3720:16;3713:5;3710:27;3700:55;;3751:1;3748;3741:12;3700:55;3196:693;;;;-1:-1:-1;3196:693:5;;;;3774:5;3826:3;3811:19;;3798:33;;-1:-1:-1;3878:3:5;3863:19;;;3850:33;;3196:693;-1:-1:-1;;3196:693:5:o;3894:260::-;3962:6;3970;4023:2;4011:9;4002:7;3998:23;3994:32;3991:52;;;4039:1;4036;4029:12;3991:52;4062:29;4081:9;4062:29;:::i;:::-;4052:39;;4110:38;4144:2;4133:9;4129:18;4110:38;:::i;:::-;4100:48;;3894:260;;;;;:::o;5393:127::-;5454:10;5449:3;5445:20;5442:1;5435:31;5485:4;5482:1;5475:15;5509:4;5506:1;5499:15;5525:125;5565:4;5593:1;5590;5587:8;5584:34;;;5598:18;;:::i;:::-;-1:-1:-1;5635:9:5;;5525:125::o;5655:128::-;5695:3;5726:1;5722:6;5719:1;5716:13;5713:39;;;5732:18;;:::i;:::-;-1:-1:-1;5768:9:5;;5655:128::o;7653:168::-;7693:7;7759:1;7755;7751:6;7747:14;7744:1;7741:21;7736:1;7729:9;7722:17;7718:45;7715:71;;;7766:18;;:::i;:::-;-1:-1:-1;7806:9:5;;7653:168::o;8594:135::-;8633:3;-1:-1:-1;;8654:17:5;;8651:43;;;8674:18;;:::i;:::-;-1:-1:-1;8721:1:5;8710:13;;8594:135::o;11669:277::-;11736:6;11789:2;11777:9;11768:7;11764:23;11760:32;11757:52;;;11805:1;11802;11795:12;11757:52;11837:9;11831:16;11890:5;11883:13;11876:21;11869:5;11866:32;11856:60;;11912:1;11909;11902:12;12372:184;12442:6;12495:2;12483:9;12474:7;12470:23;12466:32;12463:52;;;12511:1;12508;12501:12;12463:52;-1:-1:-1;12534:16:5;;12372:184;-1:-1:-1;12372:184:5:o
Swarm Source
ipfs://648ff44524a84483a155252e91d43ce845b165c82019b2235db9aa2aa7efd5db
[ 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.