ERC-721
Overview
Max Total Supply
3,566 HEIST
Holders
602
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
6 HEISTLoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
TokenCharacter
Compiler Version
v0.8.7+commit.e28d00a7
Optimization Enabled:
Yes with 1000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.7; /* ▄▄▄█████▓ ██░ ██ ▓█████ ██░ ██ ▓█████ ██▓ ██████ ▄▄▄█████▓ ▓ ██▒ ▓▒▓██░ ██▒▓█ ▀ ▓██░ ██▒▓█ ▀ ▓██▒▒██ ▒ ▓ ██▒ ▓▒ ▒ ▓██░ ▒░▒██▀▀██░▒███ ▒██▀▀██░▒███ ▒██▒░ ▓██▄ ▒ ▓██░ ▒░ ░ ▓██▓ ░ ░▓█ ░██ ▒▓█ ▄ ░▓█ ░██ ▒▓█ ▄ ░██░ ▒ ██▒░ ▓██▓ ░ ▒██▒ ░ ░▓█▒░██▓░▒████▒ ░▓█▒░██▓░▒████▒░██░▒██████▒▒ ▒██▒ ░ ▒ ░░ ▒ ░░▒░▒░░ ▒░ ░ ▒ ░░▒░▒░░ ▒░ ░░▓ ▒ ▒▓▒ ▒ ░ ▒ ░░ ░ ▒ ░▒░ ░ ░ ░ ░ ▒ ░▒░ ░ ░ ░ ░ ▒ ░░ ░▒ ░ ░ ░ ░ ░ ░░ ░ ░ ░ ░░ ░ ░ ▒ ░░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ;`. ,'/ |`.`-. _____ ,-;,'| | `-.\__,-' `-.__//' | | `| \ , | `. ``` , .' \_` \ / `_/ \ ^ \ / ^ / | X ____ X | | ,' `. | | ( O' O ) | `. \__,.__/ ,' `-._ `--' _,' `------' created with curiosity by .pwa group 2021. gm. wgmi. if you're reading this, you are early. */ import "./ERC721Custom.sol"; //Custom ERC721 implementation import "./Base/Pausable.sol"; //Pause critical functions contract TokenCharacter is Pausable, ERC721 { uint16 public constant MAX_CHARACTERS = 15000; //The hard limit. We may create less than this. constructor() ERC721( "The Heist Characters", "HEIST", MAX_CHARACTERS) { //gm } function Mint(uint8 amount, address to) external onlyControllers whenNotPaused { for (uint256 i = 0; i < amount; i++ ){ _mint(to, _totalMinted + 1); //start at tokenID = 1 } } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.7; //Custom ERC721 implemention for lower minting. //We stand on the shoulders of giants. // -8C30 import "./Base/Controllable.sol"; import "../Interfaces/I_MetadataHandler.sol"; contract ERC721 is Controllable { //ERC721 events event Transfer(address indexed from, address indexed to, uint256 indexed tokenID); event Approval(address indexed owner, address indexed spender, uint256 indexed tokenID); event ApprovalForAll(address indexed owner, address indexed operator, bool approved); string public name; string public symbol; uint16 public immutable maxSupply; //we only have 15k max tokens, so we're using uint16 for slight gas saving on gameplay functions //but keeping uint256 interfaces for compatibility uint16 public _totalMinted; //if contract allows burning, then # of minted can be > supply uint16 public _totalSupply16; mapping(uint16 => address) public _ownerOf16; mapping(uint16 => address) public getApproved; mapping(address => mapping(address => bool)) public isApprovedForAll; I_MetadataHandler metaDataHandler; constructor( string memory _name, string memory _symbol, uint16 _maxSupply ) { name = _name; symbol = _symbol; maxSupply = _maxSupply; } //Explicit version returning uint256 to fit with the EIP 721 specification function totalSupply() view external returns (uint256) { return uint256(_totalSupply16); } //Explicit version returning uint256 to fit with the EIP 721 specification function ownerOf(uint256 tokenID) view external returns (address) { return _ownerOf16[uint16(tokenID)]; } function supportsInterface(bytes4 interfaceId) external pure returns (bool supported) { supported = interfaceId == 0x80ac58cd || interfaceId == 0x5b5e139f; // || interfaceId == 0x780e9d63; } function approve(address spender, uint256 tokenID) external { uint16 _tokenID = uint16(tokenID); address owner_ = _ownerOf16[_tokenID]; require(msg.sender == owner_ || isApprovedForAll[owner_][msg.sender], "ERC721: Not approved"); getApproved[_tokenID] = spender; emit Approval(owner_, spender, tokenID); } function setApprovalForAll(address operator, bool approved) external { isApprovedForAll[msg.sender][operator] = approved; emit ApprovalForAll(msg.sender, operator, approved); } //called by the user who owns it function transfer_16(address to, uint16 tokenID) external { require(msg.sender == _ownerOf16[tokenID], "ERC721: Not owner"); _transfer(msg.sender, to, tokenID); } //called by the user who owns it function transfer(address to, uint256 tokenID) external { uint16 _tokenID = uint16(tokenID); require(msg.sender == _ownerOf16[_tokenID], "ERC721: Not owner"); _transfer(msg.sender, to, _tokenID); } function transferFrom(address owner_, address to, uint256 tokenID) public { uint16 _tokenID = uint16(tokenID); require( msg.sender == owner_ || controllers[msg.sender] || msg.sender == getApproved[_tokenID] || isApprovedForAll[owner_][msg.sender], "ERC721: Not approved" ); _transfer(owner_, to, _tokenID); } function safeTransferFrom(address, address to, uint256 tokenID) external { safeTransferFrom(address(0), to, tokenID, ""); } function safeTransferFrom(address, address to, uint256 tokenID, bytes memory data) public { transferFrom(address(0), to, tokenID); if (to.code.length != 0) { (, bytes memory returned) = to.staticcall(abi.encodeWithSelector(0x150b7a02, msg.sender, address(0), tokenID, data)); bytes4 selector = abi.decode(returned, (bytes4)); require(selector == 0x150b7a02, "ERC721: Address cannot receive"); } } //metadata function setMetadataHandler(address newHandlerAddress) external onlyOwner { metaDataHandler = I_MetadataHandler(newHandlerAddress); } function tokenURI(uint256 tokenID) external view returns (string memory) { uint16 _tokenID = uint16(tokenID); require(_ownerOf16[_tokenID] != address(0), "ERC721: Nonexistent token"); require(address(metaDataHandler) != address(0),"ERC721: No metadata handler set"); return metaDataHandler.tokenURI(tokenID); } //internal function _transfer(address from, address to, uint16 tokenID) internal { require(_ownerOf16[tokenID] == from, "ERC721: Not owner"); delete getApproved[tokenID]; _ownerOf16[tokenID] = to; emit Transfer(from, to, tokenID); } //specific tokenID allows ressurection after burning in the future if desired function _mint(address to, uint16 tokenID) internal { require(_ownerOf16[tokenID] == address(0), "ERC721: Token already minted"); require(_totalSupply16 < maxSupply, "ERC721: Reached Max Supply"); _ownerOf16[tokenID] = to; _totalMinted++; _totalSupply16++; emit Transfer(address(0), to, tokenID); } function _burn(uint16 tokenID) internal { address owner_ = _ownerOf16[tokenID]; require(owner_ != address(0), "ERC721: Nonexistent token"); _totalSupply16--; delete _ownerOf16[tokenID]; emit Transfer(owner_, address(0), tokenID); } //We do not require balance for any logic contracts, so this view is only used by UI function balanceOf(address owner_) public view returns (uint256) { require(owner_ != address(0), "ERC721: Non-existant address"); uint count = 0; for(uint16 i = 1; i < _totalSupply16 + 1; i++) { if(owner_ == _ownerOf16[i]) count++; } return count; } //ERC-721 Enumerable function tokenOfOwnerByIndex(address owner_, uint256 index) public view returns (uint256 tokenId) { require(index < balanceOf(owner_), "ERC721: Index greater than owner balance"); uint count; for(uint16 i = 1; i < _totalSupply16 + 1; i++) { if(owner_== _ownerOf16[i]){ if(count == index) return i; else count++; } } require(false, "ERC721Enumerable: owner index out of bounds"); } /* function tokenByIndex(uint256 _index) external view returns (uint256){ require(_index > 0, "ERC721Enumerable: Invalid index"); require(_index < _totalSupply16, "ERC721Enumerable: Invalid index"); return _index; } */ }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.7; import "@openzeppelin/contracts/access/Ownable.sol"; //allows pausing of critical functions in the contract contract Pausable is Ownable { bool public paused = false; //start unpaused event Paused(); event Unpaused(); modifier whenNotPaused() { require(!paused,"Contract is paused"); _; } modifier whenPaused() { require(paused,"Contract is not paused"); _; } function Pause() onlyOwner whenNotPaused external { paused = true; emit Paused(); } function Unpause() onlyOwner whenPaused external { paused = false; emit Unpaused(); } }
// SPDX-License-Identifier: CC0 pragma solidity ^0.8.7; import "@openzeppelin/contracts/access/Ownable.sol"; //Simple way of allowing authorized controllers to perform privileged functions contract Controllable is Ownable { mapping(address => bool) controllers; //authorized addresses modifier onlyControllers() { require(controllers[msg.sender], "Controllable: Authorized controllers only."); _; } function addController(address newController) external onlyOwner { controllers[newController] = true; } function addControllers(address[] calldata newControllers) external onlyOwner { for (uint i=0; i < newControllers.length; i++) { controllers[newControllers[i]] = true; } } function removeController(address toDelete) external onlyOwner { controllers[toDelete] = false; //same as del } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.7; interface I_MetadataHandler { function tokenURI(uint256 tokenID) external view returns (string memory); //our implementation may even be pure }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// 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; } }
{ "optimizer": { "enabled": true, "runs": 1000 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpaused","type":"event"},{"inputs":[],"name":"MAX_CHARACTERS","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"amount","type":"uint8"},{"internalType":"address","name":"to","type":"address"}],"name":"Mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"Pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"Unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"","type":"uint16"}],"name":"_ownerOf16","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalMinted","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalSupply16","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newController","type":"address"}],"name":"addController","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"newControllers","type":"address[]"}],"name":"addControllers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner_","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"","type":"uint16"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"toDelete","type":"address"}],"name":"removeController","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenID","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newHandlerAddress","type":"address"}],"name":"setMetadataHandler","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"supported","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"transfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint16","name":"tokenID","type":"uint16"}],"name":"transfer_16","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60a06040526000805460ff60a01b191690553480156200001e57600080fd5b506040518060400160405280601481526020017f54686520486569737420436861726163746572730000000000000000000000008152506040518060400160405280600581526020016412115254d560da1b815250613a98620000906200008a620000d560201b60201c565b620000d9565b8251620000a590600290602086019062000129565b508151620000bb90600390602085019062000129565b5060f01b6001600160f01b031916608052506200020c9050565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280546200013790620001cf565b90600052602060002090601f0160209004810192826200015b5760008555620001a6565b82601f106200017657805160ff1916838001178555620001a6565b82800160010185558215620001a6579182015b82811115620001a657825182559160200191906001019062000189565b50620001b4929150620001b8565b5090565b5b80821115620001b45760008155600101620001b9565b600181811c90821680620001e457607f821691505b602082108114156200020657634e487b7160e01b600052602260045260246000fd5b50919050565b60805160f01c611d95620002326000396000818161045801526115600152611d956000f3fe608060405234801561001057600080fd5b506004361061020b5760003560e01c806380b5dcb31161012a578063b88d4fde116100bd578063d639f7ba1161008c578063f2fde38b11610071578063f2fde38b146104d1578063f6a74ed7146104e4578063fe762024146104f757600080fd5b8063d639f7ba1461047a578063e985e9c5146104a357600080fd5b8063b88d4fde1461041a578063c87b56dd1461042d578063d2a1ba9114610440578063d5abeb011461045357600080fd5b806395d89b41116100f957806395d89b41146103d9578063a22cb465146103e1578063a7fc7a07146103f4578063a9059cbb1461040757600080fd5b806380b5dcb3146103825780638660e48e146103965780638da5cb5b1461039f57806393b871f2146103b057600080fd5b80635c975abb116101a2578063715018a611610171578063715018a61461033e578063736bf5911461034657806376eb4044146103675780637805862f1461037a57600080fd5b80635c975abb146102ca5780636352211e146102de5780636985a0221461032357806370a082311461032b57600080fd5b806318160ddd116101de57806318160ddd1461027557806323b872dd146102915780632f745c59146102a457806342842e0e146102b757600080fd5b806301ffc9a7146102105780630276e5a41461023857806306fdde031461024d578063095ea7b314610262575b600080fd5b61022361021e366004611a44565b61050a565b60405190151581526020015b60405180910390f35b61024b610246366004611b29565b610573565b005b610255610699565b60405161022f9190611bd1565b61024b6102703660046119a5565b610727565b60045462010000900461ffff165b60405190815260200161022f565b61024b61029f366004611858565b610825565b6102836102b23660046119a5565b6108fd565b61024b6102c5366004611858565b610a73565b60005461022390600160a01b900460ff1681565b61030b6102ec366004611b10565b61ffff166000908152600560205260409020546001600160a01b031690565b6040516001600160a01b03909116815260200161022f565b61024b610a8f565b61028361033936600461180a565b610b7f565b61024b610c51565b6004546103549061ffff1681565b60405161ffff909116815260200161022f565b61024b61037536600461197b565b610cb7565b61024b610d25565b6004546103549062010000900461ffff1681565b610354613a9881565b6000546001600160a01b031661030b565b61030b6103be366004611af5565b6006602052600090815260409020546001600160a01b031681565b610255610e0e565b61024b6103ef36600461193f565b610e1b565b61024b61040236600461180a565b610e87565b61024b6104153660046119a5565b610f08565b61024b610428366004611894565b610f74565b61025561043b366004611b10565b6110e4565b61024b61044e3660046119cf565b61124a565b6103547f000000000000000000000000000000000000000000000000000000000000000081565b61030b610488366004611af5565b6005602052600090815260409020546001600160a01b031681565b6102236104b1366004611825565b600760209081526000928352604080842090915290825290205460ff1681565b61024b6104df36600461180a565b611315565b61024b6104f236600461180a565b6113f7565b61024b61050536600461180a565b611472565b60007f80ac58cd000000000000000000000000000000000000000000000000000000006001600160e01b03198316148061056d57507f5b5e139f000000000000000000000000000000000000000000000000000000006001600160e01b03198316145b92915050565b3360009081526001602052604090205460ff166105fd5760405162461bcd60e51b815260206004820152602a60248201527f436f6e74726f6c6c61626c653a20417574686f72697a656420636f6e74726f6c60448201527f6c657273206f6e6c792e0000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b600054600160a01b900460ff16156106575760405162461bcd60e51b815260206004820152601260248201527f436f6e747261637420697320706175736564000000000000000000000000000060448201526064016105f4565b60005b8260ff168110156106945760045461068290839061067d9061ffff166001611c3d565b6114ee565b8061068c81611cec565b91505061065a565b505050565b600280546106a690611c8f565b80601f01602080910402602001604051908101604052809291908181526020018280546106d290611c8f565b801561071f5780601f106106f45761010080835404028352916020019161071f565b820191906000526020600020905b81548152906001019060200180831161070257829003601f168201915b505050505081565b61ffff811660009081526005602052604090205481906001600160a01b03163381148061077757506001600160a01b038116600090815260076020908152604080832033845290915290205460ff165b6107c35760405162461bcd60e51b815260206004820152601460248201527f4552433732313a204e6f7420617070726f76656400000000000000000000000060448201526064016105f4565b61ffff821660009081526006602052604080822080546001600160a01b0319166001600160a01b0388811691821790925591518693918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a450505050565b80336001600160a01b038516148061084c57503360009081526001602052604090205460ff165b80610872575061ffff81166000908152600660205260409020546001600160a01b031633145b806108a057506001600160a01b038416600090815260076020908152604080832033845290915290205460ff165b6108ec5760405162461bcd60e51b815260206004820152601460248201527f4552433732313a204e6f7420617070726f76656400000000000000000000000060448201526064016105f4565b6108f78484836116b5565b50505050565b600061090883610b7f565b821061097c5760405162461bcd60e51b815260206004820152602860248201527f4552433732313a20496e6465782067726561746572207468616e206f776e657260448201527f2062616c616e636500000000000000000000000000000000000000000000000060648201526084016105f4565b600060015b6004546109999062010000900461ffff166001611c3d565b61ffff168161ffff161015610a045761ffff81166000908152600560205260409020546001600160a01b03868116911614156109f257838214156109e45761ffff16915061056d9050565b816109ee81611cec565b9250505b806109fc81611cca565b915050610981565b5060405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201527f74206f6620626f756e647300000000000000000000000000000000000000000060648201526084016105f4565b6106946000838360405180602001604052806000815250610f74565b6000546001600160a01b03163314610ae95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105f4565b600054600160a01b900460ff1615610b435760405162461bcd60e51b815260206004820152601260248201527f436f6e747261637420697320706175736564000000000000000000000000000060448201526064016105f4565b6000805460ff60a01b1916600160a01b1781556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e7529190a1565b60006001600160a01b038216610bd75760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a204e6f6e2d6578697374616e7420616464726573730000000060448201526064016105f4565b600060015b600454610bf49062010000900461ffff166001611c3d565b61ffff168161ffff161015610c4a5761ffff81166000908152600560205260409020546001600160a01b0385811691161415610c385781610c3481611cec565b9250505b80610c4281611cca565b915050610bdc565b5092915050565b6000546001600160a01b03163314610cab5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105f4565b610cb5600061178c565b565b61ffff81166000908152600560205260409020546001600160a01b03163314610d165760405162461bcd60e51b815260206004820152601160248201527022a9219b99189d102737ba1037bbb732b960791b60448201526064016105f4565b610d213383836116b5565b5050565b6000546001600160a01b03163314610d7f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105f4565b600054600160a01b900460ff16610dd85760405162461bcd60e51b815260206004820152601660248201527f436f6e7472616374206973206e6f74207061757365640000000000000000000060448201526064016105f4565b6000805460ff60a01b191681556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d169339190a1565b600380546106a690611c8f565b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6000546001600160a01b03163314610ee15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105f4565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b61ffff811660009081526005602052604090205481906001600160a01b03163314610f695760405162461bcd60e51b815260206004820152601160248201527022a9219b99189d102737ba1037bbb732b960791b60448201526064016105f4565b6106943384836116b5565b610f8060008484610825565b6001600160a01b0383163b156108f7576000836001600160a01b031663150b7a023360008686604051602401610fb99493929190611b95565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516110079190611b79565b600060405180830381855afa9150503d8060008114611042576040519150601f19603f3d011682016040523d82523d6000602084013e611047565b606091505b509150506000818060200190518101906110619190611a61565b90507f150b7a02000000000000000000000000000000000000000000000000000000006001600160e01b03198216146110dc5760405162461bcd60e51b815260206004820152601e60248201527f4552433732313a20416464726573732063616e6e6f742072656365697665000060448201526064016105f4565b505050505050565b61ffff811660009081526005602052604090205460609082906001600160a01b03166111525760405162461bcd60e51b815260206004820152601960248201527f4552433732313a204e6f6e6578697374656e7420746f6b656e0000000000000060448201526064016105f4565b6008546001600160a01b03166111aa5760405162461bcd60e51b815260206004820152601f60248201527f4552433732313a204e6f206d657461646174612068616e646c6572207365740060448201526064016105f4565b6008546040517fc87b56dd000000000000000000000000000000000000000000000000000000008152600481018590526001600160a01b039091169063c87b56dd9060240160006040518083038186803b15801561120757600080fd5b505afa15801561121b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112439190810190611a7e565b9392505050565b6000546001600160a01b031633146112a45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105f4565b60005b818110156106945760018060008585858181106112c6576112c6611d1d565b90506020020160208101906112db919061180a565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061130d81611cec565b9150506112a7565b6000546001600160a01b0316331461136f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105f4565b6001600160a01b0381166113eb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016105f4565b6113f48161178c565b50565b6000546001600160a01b031633146114515760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105f4565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b031633146114cc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105f4565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b61ffff81166000908152600560205260409020546001600160a01b0316156115585760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20546f6b656e20616c7265616479206d696e7465640000000060448201526064016105f4565b60045461ffff7f000000000000000000000000000000000000000000000000000000000000000081166201000090920416106115d65760405162461bcd60e51b815260206004820152601a60248201527f4552433732313a2052656163686564204d617820537570706c7900000000000060448201526064016105f4565b61ffff818116600090815260056020526040812080546001600160a01b0319166001600160a01b03861617905560048054909216919061161583611cca565b91906101000a81548161ffff021916908361ffff160217905550506004600281819054906101000a900461ffff168092919061165090611cca565b91906101000a81548161ffff021916908361ffff160217905550508061ffff16826001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b61ffff81166000908152600560205260409020546001600160a01b038481169116146117175760405162461bcd60e51b815260206004820152601160248201527022a9219b99189d102737ba1037bbb732b960791b60448201526064016105f4565b61ffff8116600081815260066020908152604080832080546001600160a01b0319908116909155600590925280832080546001600160a01b0388811691909416811790915590519092918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80356001600160a01b03811681146117f357600080fd5b919050565b803561ffff811681146117f357600080fd5b60006020828403121561181c57600080fd5b611243826117dc565b6000806040838503121561183857600080fd5b611841836117dc565b915061184f602084016117dc565b90509250929050565b60008060006060848603121561186d57600080fd5b611876846117dc565b9250611884602085016117dc565b9150604084013590509250925092565b600080600080608085870312156118aa57600080fd5b6118b3856117dc565b93506118c1602086016117dc565b925060408501359150606085013567ffffffffffffffff8111156118e457600080fd5b8501601f810187136118f557600080fd5b803561190861190382611c15565b611be4565b81815288602083850101111561191d57600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b6000806040838503121561195257600080fd5b61195b836117dc565b91506020830135801515811461197057600080fd5b809150509250929050565b6000806040838503121561198e57600080fd5b611997836117dc565b915061184f602084016117f8565b600080604083850312156119b857600080fd5b6119c1836117dc565b946020939093013593505050565b600080602083850312156119e257600080fd5b823567ffffffffffffffff808211156119fa57600080fd5b818501915085601f830112611a0e57600080fd5b813581811115611a1d57600080fd5b8660208260051b8501011115611a3257600080fd5b60209290920196919550909350505050565b600060208284031215611a5657600080fd5b813561124381611d49565b600060208284031215611a7357600080fd5b815161124381611d49565b600060208284031215611a9057600080fd5b815167ffffffffffffffff811115611aa757600080fd5b8201601f81018413611ab857600080fd5b8051611ac661190382611c15565b818152856020838501011115611adb57600080fd5b611aec826020830160208601611c63565b95945050505050565b600060208284031215611b0757600080fd5b611243826117f8565b600060208284031215611b2257600080fd5b5035919050565b60008060408385031215611b3c57600080fd5b823560ff8116811461184157600080fd5b60008151808452611b65816020860160208601611c63565b601f01601f19169290920160200192915050565b60008251611b8b818460208701611c63565b9190910192915050565b60006001600160a01b03808716835280861660208401525083604083015260806060830152611bc76080830184611b4d565b9695505050505050565b6020815260006112436020830184611b4d565b604051601f8201601f1916810167ffffffffffffffff81118282101715611c0d57611c0d611d33565b604052919050565b600067ffffffffffffffff821115611c2f57611c2f611d33565b50601f01601f191660200190565b600061ffff808316818516808303821115611c5a57611c5a611d07565b01949350505050565b60005b83811015611c7e578181015183820152602001611c66565b838111156108f75750506000910152565b600181811c90821680611ca357607f821691505b60208210811415611cc457634e487b7160e01b600052602260045260246000fd5b50919050565b600061ffff80831681811415611ce257611ce2611d07565b6001019392505050565b6000600019821415611d0057611d00611d07565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b0319811681146113f457600080fdfea2646970667358221220fc0ba31cdf61218c51e20919127a0b09623389916051d0de2a213bd9cf4a700564736f6c63430008070033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061020b5760003560e01c806380b5dcb31161012a578063b88d4fde116100bd578063d639f7ba1161008c578063f2fde38b11610071578063f2fde38b146104d1578063f6a74ed7146104e4578063fe762024146104f757600080fd5b8063d639f7ba1461047a578063e985e9c5146104a357600080fd5b8063b88d4fde1461041a578063c87b56dd1461042d578063d2a1ba9114610440578063d5abeb011461045357600080fd5b806395d89b41116100f957806395d89b41146103d9578063a22cb465146103e1578063a7fc7a07146103f4578063a9059cbb1461040757600080fd5b806380b5dcb3146103825780638660e48e146103965780638da5cb5b1461039f57806393b871f2146103b057600080fd5b80635c975abb116101a2578063715018a611610171578063715018a61461033e578063736bf5911461034657806376eb4044146103675780637805862f1461037a57600080fd5b80635c975abb146102ca5780636352211e146102de5780636985a0221461032357806370a082311461032b57600080fd5b806318160ddd116101de57806318160ddd1461027557806323b872dd146102915780632f745c59146102a457806342842e0e146102b757600080fd5b806301ffc9a7146102105780630276e5a41461023857806306fdde031461024d578063095ea7b314610262575b600080fd5b61022361021e366004611a44565b61050a565b60405190151581526020015b60405180910390f35b61024b610246366004611b29565b610573565b005b610255610699565b60405161022f9190611bd1565b61024b6102703660046119a5565b610727565b60045462010000900461ffff165b60405190815260200161022f565b61024b61029f366004611858565b610825565b6102836102b23660046119a5565b6108fd565b61024b6102c5366004611858565b610a73565b60005461022390600160a01b900460ff1681565b61030b6102ec366004611b10565b61ffff166000908152600560205260409020546001600160a01b031690565b6040516001600160a01b03909116815260200161022f565b61024b610a8f565b61028361033936600461180a565b610b7f565b61024b610c51565b6004546103549061ffff1681565b60405161ffff909116815260200161022f565b61024b61037536600461197b565b610cb7565b61024b610d25565b6004546103549062010000900461ffff1681565b610354613a9881565b6000546001600160a01b031661030b565b61030b6103be366004611af5565b6006602052600090815260409020546001600160a01b031681565b610255610e0e565b61024b6103ef36600461193f565b610e1b565b61024b61040236600461180a565b610e87565b61024b6104153660046119a5565b610f08565b61024b610428366004611894565b610f74565b61025561043b366004611b10565b6110e4565b61024b61044e3660046119cf565b61124a565b6103547f0000000000000000000000000000000000000000000000000000000000003a9881565b61030b610488366004611af5565b6005602052600090815260409020546001600160a01b031681565b6102236104b1366004611825565b600760209081526000928352604080842090915290825290205460ff1681565b61024b6104df36600461180a565b611315565b61024b6104f236600461180a565b6113f7565b61024b61050536600461180a565b611472565b60007f80ac58cd000000000000000000000000000000000000000000000000000000006001600160e01b03198316148061056d57507f5b5e139f000000000000000000000000000000000000000000000000000000006001600160e01b03198316145b92915050565b3360009081526001602052604090205460ff166105fd5760405162461bcd60e51b815260206004820152602a60248201527f436f6e74726f6c6c61626c653a20417574686f72697a656420636f6e74726f6c60448201527f6c657273206f6e6c792e0000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b600054600160a01b900460ff16156106575760405162461bcd60e51b815260206004820152601260248201527f436f6e747261637420697320706175736564000000000000000000000000000060448201526064016105f4565b60005b8260ff168110156106945760045461068290839061067d9061ffff166001611c3d565b6114ee565b8061068c81611cec565b91505061065a565b505050565b600280546106a690611c8f565b80601f01602080910402602001604051908101604052809291908181526020018280546106d290611c8f565b801561071f5780601f106106f45761010080835404028352916020019161071f565b820191906000526020600020905b81548152906001019060200180831161070257829003601f168201915b505050505081565b61ffff811660009081526005602052604090205481906001600160a01b03163381148061077757506001600160a01b038116600090815260076020908152604080832033845290915290205460ff165b6107c35760405162461bcd60e51b815260206004820152601460248201527f4552433732313a204e6f7420617070726f76656400000000000000000000000060448201526064016105f4565b61ffff821660009081526006602052604080822080546001600160a01b0319166001600160a01b0388811691821790925591518693918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a450505050565b80336001600160a01b038516148061084c57503360009081526001602052604090205460ff165b80610872575061ffff81166000908152600660205260409020546001600160a01b031633145b806108a057506001600160a01b038416600090815260076020908152604080832033845290915290205460ff165b6108ec5760405162461bcd60e51b815260206004820152601460248201527f4552433732313a204e6f7420617070726f76656400000000000000000000000060448201526064016105f4565b6108f78484836116b5565b50505050565b600061090883610b7f565b821061097c5760405162461bcd60e51b815260206004820152602860248201527f4552433732313a20496e6465782067726561746572207468616e206f776e657260448201527f2062616c616e636500000000000000000000000000000000000000000000000060648201526084016105f4565b600060015b6004546109999062010000900461ffff166001611c3d565b61ffff168161ffff161015610a045761ffff81166000908152600560205260409020546001600160a01b03868116911614156109f257838214156109e45761ffff16915061056d9050565b816109ee81611cec565b9250505b806109fc81611cca565b915050610981565b5060405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201527f74206f6620626f756e647300000000000000000000000000000000000000000060648201526084016105f4565b6106946000838360405180602001604052806000815250610f74565b6000546001600160a01b03163314610ae95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105f4565b600054600160a01b900460ff1615610b435760405162461bcd60e51b815260206004820152601260248201527f436f6e747261637420697320706175736564000000000000000000000000000060448201526064016105f4565b6000805460ff60a01b1916600160a01b1781556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e7529190a1565b60006001600160a01b038216610bd75760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a204e6f6e2d6578697374616e7420616464726573730000000060448201526064016105f4565b600060015b600454610bf49062010000900461ffff166001611c3d565b61ffff168161ffff161015610c4a5761ffff81166000908152600560205260409020546001600160a01b0385811691161415610c385781610c3481611cec565b9250505b80610c4281611cca565b915050610bdc565b5092915050565b6000546001600160a01b03163314610cab5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105f4565b610cb5600061178c565b565b61ffff81166000908152600560205260409020546001600160a01b03163314610d165760405162461bcd60e51b815260206004820152601160248201527022a9219b99189d102737ba1037bbb732b960791b60448201526064016105f4565b610d213383836116b5565b5050565b6000546001600160a01b03163314610d7f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105f4565b600054600160a01b900460ff16610dd85760405162461bcd60e51b815260206004820152601660248201527f436f6e7472616374206973206e6f74207061757365640000000000000000000060448201526064016105f4565b6000805460ff60a01b191681556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d169339190a1565b600380546106a690611c8f565b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6000546001600160a01b03163314610ee15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105f4565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b61ffff811660009081526005602052604090205481906001600160a01b03163314610f695760405162461bcd60e51b815260206004820152601160248201527022a9219b99189d102737ba1037bbb732b960791b60448201526064016105f4565b6106943384836116b5565b610f8060008484610825565b6001600160a01b0383163b156108f7576000836001600160a01b031663150b7a023360008686604051602401610fb99493929190611b95565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516110079190611b79565b600060405180830381855afa9150503d8060008114611042576040519150601f19603f3d011682016040523d82523d6000602084013e611047565b606091505b509150506000818060200190518101906110619190611a61565b90507f150b7a02000000000000000000000000000000000000000000000000000000006001600160e01b03198216146110dc5760405162461bcd60e51b815260206004820152601e60248201527f4552433732313a20416464726573732063616e6e6f742072656365697665000060448201526064016105f4565b505050505050565b61ffff811660009081526005602052604090205460609082906001600160a01b03166111525760405162461bcd60e51b815260206004820152601960248201527f4552433732313a204e6f6e6578697374656e7420746f6b656e0000000000000060448201526064016105f4565b6008546001600160a01b03166111aa5760405162461bcd60e51b815260206004820152601f60248201527f4552433732313a204e6f206d657461646174612068616e646c6572207365740060448201526064016105f4565b6008546040517fc87b56dd000000000000000000000000000000000000000000000000000000008152600481018590526001600160a01b039091169063c87b56dd9060240160006040518083038186803b15801561120757600080fd5b505afa15801561121b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112439190810190611a7e565b9392505050565b6000546001600160a01b031633146112a45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105f4565b60005b818110156106945760018060008585858181106112c6576112c6611d1d565b90506020020160208101906112db919061180a565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061130d81611cec565b9150506112a7565b6000546001600160a01b0316331461136f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105f4565b6001600160a01b0381166113eb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016105f4565b6113f48161178c565b50565b6000546001600160a01b031633146114515760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105f4565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b031633146114cc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105f4565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b61ffff81166000908152600560205260409020546001600160a01b0316156115585760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20546f6b656e20616c7265616479206d696e7465640000000060448201526064016105f4565b60045461ffff7f0000000000000000000000000000000000000000000000000000000000003a9881166201000090920416106115d65760405162461bcd60e51b815260206004820152601a60248201527f4552433732313a2052656163686564204d617820537570706c7900000000000060448201526064016105f4565b61ffff818116600090815260056020526040812080546001600160a01b0319166001600160a01b03861617905560048054909216919061161583611cca565b91906101000a81548161ffff021916908361ffff160217905550506004600281819054906101000a900461ffff168092919061165090611cca565b91906101000a81548161ffff021916908361ffff160217905550508061ffff16826001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b61ffff81166000908152600560205260409020546001600160a01b038481169116146117175760405162461bcd60e51b815260206004820152601160248201527022a9219b99189d102737ba1037bbb732b960791b60448201526064016105f4565b61ffff8116600081815260066020908152604080832080546001600160a01b0319908116909155600590925280832080546001600160a01b0388811691909416811790915590519092918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80356001600160a01b03811681146117f357600080fd5b919050565b803561ffff811681146117f357600080fd5b60006020828403121561181c57600080fd5b611243826117dc565b6000806040838503121561183857600080fd5b611841836117dc565b915061184f602084016117dc565b90509250929050565b60008060006060848603121561186d57600080fd5b611876846117dc565b9250611884602085016117dc565b9150604084013590509250925092565b600080600080608085870312156118aa57600080fd5b6118b3856117dc565b93506118c1602086016117dc565b925060408501359150606085013567ffffffffffffffff8111156118e457600080fd5b8501601f810187136118f557600080fd5b803561190861190382611c15565b611be4565b81815288602083850101111561191d57600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b6000806040838503121561195257600080fd5b61195b836117dc565b91506020830135801515811461197057600080fd5b809150509250929050565b6000806040838503121561198e57600080fd5b611997836117dc565b915061184f602084016117f8565b600080604083850312156119b857600080fd5b6119c1836117dc565b946020939093013593505050565b600080602083850312156119e257600080fd5b823567ffffffffffffffff808211156119fa57600080fd5b818501915085601f830112611a0e57600080fd5b813581811115611a1d57600080fd5b8660208260051b8501011115611a3257600080fd5b60209290920196919550909350505050565b600060208284031215611a5657600080fd5b813561124381611d49565b600060208284031215611a7357600080fd5b815161124381611d49565b600060208284031215611a9057600080fd5b815167ffffffffffffffff811115611aa757600080fd5b8201601f81018413611ab857600080fd5b8051611ac661190382611c15565b818152856020838501011115611adb57600080fd5b611aec826020830160208601611c63565b95945050505050565b600060208284031215611b0757600080fd5b611243826117f8565b600060208284031215611b2257600080fd5b5035919050565b60008060408385031215611b3c57600080fd5b823560ff8116811461184157600080fd5b60008151808452611b65816020860160208601611c63565b601f01601f19169290920160200192915050565b60008251611b8b818460208701611c63565b9190910192915050565b60006001600160a01b03808716835280861660208401525083604083015260806060830152611bc76080830184611b4d565b9695505050505050565b6020815260006112436020830184611b4d565b604051601f8201601f1916810167ffffffffffffffff81118282101715611c0d57611c0d611d33565b604052919050565b600067ffffffffffffffff821115611c2f57611c2f611d33565b50601f01601f191660200190565b600061ffff808316818516808303821115611c5a57611c5a611d07565b01949350505050565b60005b83811015611c7e578181015183820152602001611c66565b838111156108f75750506000910152565b600181811c90821680611ca357607f821691505b60208210811415611cc457634e487b7160e01b600052602260045260246000fd5b50919050565b600061ffff80831681811415611ce257611ce2611d07565b6001019392505050565b6000600019821415611d0057611d00611d07565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b0319811681146113f457600080fdfea2646970667358221220fc0ba31cdf61218c51e20919127a0b09623389916051d0de2a213bd9cf4a700564736f6c63430008070033
Loading...
Loading
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.