Feature Tip: Add private address tag to any address under My Name Tag !
ERC-1155
Overview
Max Total Supply
0
Holders
935
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
RAW
Compiler Version
v0.8.11+commit.d7f03943
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "@openzeppelin/contracts/security/Pausable.sol"; import "@openzeppelin/contracts/utils/Strings.sol"; import "./ERC1155.sol"; import "./interfaces/IRAW.sol"; import "./interfaces/IRAWoriginal.sol"; import "./interfaces/IEON.sol"; contract RAW is IRAW, ERC1155, Pausable { using Strings for uint256; struct LastWrite { uint64 time; uint64 blockNum; } // struct to store each trait's data for metadata and rendering struct Image { string name; string png; } struct TypeInfo { uint256 mints; uint256 burns; uint256 maxSupply; uint256 eonExchangeAmt; } mapping(uint256 => TypeInfo) private typeInfo; // storage of each image data mapping(uint256 => Image) public traitData; // address => allowedToCallFunctions mapping(address => bool) private admins; // Tracks the last block and timestamp that a caller has written to state. // Disallow some access to functions if they occur while a change is being written. mapping(address => LastWrite) private lastWriteAddress; event UpdateMintBurns(uint256 typeId, uint256 mintQty, uint256 burnQty); // reference to the $EON contract for exchange rate if accepted IEON public eon; // reference to the original Raw contract IRAWoriginal public originalRaw; address public auth; uint256 public migrated; constructor() { _pause(); auth = msg.sender; } modifier onlyOwner() { require(msg.sender == auth); _; } /** CRITICAL TO SETUP */ modifier requireContractsSet() { require(address(eon) != address(0), "Contracts not set"); _; } modifier blockIfChangingAddress() { require( admins[msg.sender] || lastWriteAddress[tx.origin].blockNum < block.number, "Your trying the cheat" ); _; } function setContracts(address _eon, address _originalRaw) external onlyOwner { eon = IEON(_eon); originalRaw = IRAWoriginal(_originalRaw); } /** * Mint a token - any payment / game logic should be handled in the game contract. */ function mint( uint256 typeId, uint256 qty, address recipient ) external override whenNotPaused { require(admins[msg.sender], "Only admins"); require( (typeInfo[typeId].mints + qty) <= typeInfo[typeId].maxSupply, "MaxSupply Minted" ); typeInfo[typeId].mints += qty; _mint(recipient, typeId, qty, ""); } /** * Burn a token - any payment / game logic should be handled in the game contract. */ function burn( uint256 typeId, uint256 qty, address burnFrom ) external override whenNotPaused { require(admins[msg.sender], "Only admins"); typeInfo[typeId].burns += qty; _burn(burnFrom, typeId, qty); } function setType(uint256 typeId, uint256 maxSupply) external onlyOwner { require(typeId != 0, "TypeId cannot be 0"); require(typeInfo[typeId].mints <= maxSupply, "max supply too low"); typeInfo[typeId].maxSupply = maxSupply; } // a function to update the mint and burn amounts // to save gas costs of doing both a mint and then // burn when cost is paid from an amount owed function updateMintBurns( uint256 typeId, uint256 mintQty, uint256 burnQty ) external { require(admins[msg.sender], "Only Admins"); typeInfo[typeId].mints += mintQty; typeInfo[typeId].burns += burnQty; emit UpdateMintBurns(typeId, mintQty, burnQty); } function setExchangeAmt(uint256 typeId, uint256 exchangeAmt) external onlyOwner { require( typeInfo[typeId].maxSupply > 0, "this type has not been set up" ); typeInfo[typeId].eonExchangeAmt = exchangeAmt; } function balanceOf(address tokenOwner, uint256 typeId) public view blockIfChangingAddress returns (uint256) { //Prevent chencking balance in the same block it's being modified.. require( admins[msg.sender] || lastWriteAddress[tokenOwner].blockNum < block.number, "no checking balance in the same block it's being modified" ); uint256 balance = _balanceOf[tokenOwner][typeId]; return balance; } function updateOriginAccess(address user) external override { require(admins[_msgSender()], "Only admins can call this"); uint64 blockNum = uint64(block.number); uint64 time = uint64(block.timestamp); lastWriteAddress[user] = LastWrite(time, blockNum); } /** * creates identical tokens in the new contract * and burns any original tokens * @param typeId the type of the tokens to migrate */ function migrate(uint256 typeId) external whenNotPaused { uint256 amount = originalRaw.getBalance(msg.sender, typeId); require(amount > 0, "no tokens to migrate"); originalRaw.burn(typeId, amount, msg.sender); _mint(msg.sender, typeId, amount, ""); migrated += amount; } /** * enables an address to mint / burn * @param addr the address to enable */ function addAdmin(address addr) external onlyOwner { admins[addr] = true; } /** * disables an address from minting / burning * @param addr the address to disbale */ function removeAdmin(address addr) external onlyOwner { admins[addr] = false; } function setPaused(bool _paused) external onlyOwner requireContractsSet { if (_paused) _pause(); else _unpause(); } function transferOwnership(address newOwner) external onlyOwner { auth = newOwner; } function getInfoForType(uint256 typeId) external view returns (TypeInfo memory) { require(typeInfo[typeId].maxSupply > 0, "invalid type"); return typeInfo[typeId]; } function uri(uint256 typeId) public view override returns (string memory) { require(typeInfo[typeId].maxSupply > 0, "invalid type"); Image memory img = traitData[typeId]; string memory metadata = string( abi.encodePacked( '{"name": "', img.name, '", "description": "Raw Pytheas resources - All the metadata and images are generated and stored 100% on-chain. No IPFS. NO API. Just the Ethereum blockchain.", "image": "data:image/svg+xml;base64,', base64(bytes(drawSVG(typeId))), '", "attributes": []', "}" ) ); return string( abi.encodePacked( "data:application/json;base64,", base64(bytes(metadata)) ) ); } function uploadImage(uint256 typeId, Image calldata image) external onlyOwner { traitData[typeId] = Image(image.name, image.png); } function drawImage(Image memory image) internal pure returns (string memory) { return string( abi.encodePacked( '<image x="0" y="0" width="64" height="64" image-rendering="pixelated" preserveAspectRatio="xMidYMid" xlink:href="data:image/png;base64,', image.png, '"/>' ) ); } function drawSVG(uint256 typeId) internal view returns (string memory) { string memory svgString = string( abi.encodePacked(drawImage(traitData[typeId])) ); return string( abi.encodePacked( '<svg id="rawResources" width="100%" height="100%" version="1.1" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">', svgString, "</svg>" ) ); } function safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes memory data ) public virtual override(ERC1155, IRAW) { require(lastWriteAddress[from].blockNum < block.number, "no overwriting"); // allow admin contracts to send without approval if (!admins[msg.sender]) { require( msg.sender == from || isApprovedForAll[from][msg.sender], "NOT_AUTHORIZED" ); } _balanceOf[from][id] -= amount; _balanceOf[to][id] += amount; emit TransferSingle(msg.sender, from, to, id, amount); require( to.code.length == 0 ? to != address(0) : ERC1155TokenReceiver(to).onERC1155Received( msg.sender, from, id, amount, data ) == ERC1155TokenReceiver.onERC1155Received.selector, "UNSAFE_RECIPIENT" ); } function safeBatchTransferFrom( address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) public virtual override(ERC1155, IRAW) { require(lastWriteAddress[from].blockNum < block.number, "no overwriting"); // allow admin contracts to send without approval uint256 idsLength = ids.length; // Saves MLOADs. require(idsLength == amounts.length, "LENGTH_MISMATCH"); // allow admin contracts to send without approval if (!admins[msg.sender]) { require( msg.sender == from || isApprovedForAll[from][msg.sender], "NOT_AUTHORIZED" ); } for (uint256 i = 0; i < idsLength; ) { uint256 id = ids[i]; uint256 amount = amounts[i]; _balanceOf[from][id] -= amount; _balanceOf[to][id] += amount; // An array can't have a total length // larger than the max uint256 value. unchecked { i++; } } emit TransferBatch(msg.sender, from, to, ids, amounts); require( to.code.length == 0 ? to != address(0) : ERC1155TokenReceiver(to).onERC1155BatchReceived( msg.sender, from, ids, amounts, data ) == ERC1155TokenReceiver.onERC1155BatchReceived.selector, "UNSAFE_RECIPIENT" ); } /** BASE 64 - Written by Brech Devos */ string internal constant TABLE = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; function base64(bytes memory data) internal pure returns (string memory) { if (data.length == 0) return ""; // load the table into memory string memory table = TABLE; // multiply by 4/3 rounded up uint256 encodedLen = 4 * ((data.length + 2) / 3); // add some extra buffer at the end required for the writing string memory result = new string(encodedLen + 32); assembly { // set the actual output length mstore(result, encodedLen) // prepare the lookup table let tablePtr := add(table, 1) // input ptr let dataPtr := data let endPtr := add(dataPtr, mload(data)) // result ptr, jump over length let resultPtr := add(result, 32) // run over the input, 3 bytes at a time for { } lt(dataPtr, endPtr) { } { dataPtr := add(dataPtr, 3) // read 3 bytes let input := mload(dataPtr) // write 4 characters mstore( resultPtr, shl(248, mload(add(tablePtr, and(shr(18, input), 0x3F)))) ) resultPtr := add(resultPtr, 1) mstore( resultPtr, shl(248, mload(add(tablePtr, and(shr(12, input), 0x3F)))) ) resultPtr := add(resultPtr, 1) mstore( resultPtr, shl(248, mload(add(tablePtr, and(shr(6, input), 0x3F)))) ) resultPtr := add(resultPtr, 1) mstore( resultPtr, shl(248, mload(add(tablePtr, and(input, 0x3F)))) ) resultPtr := add(resultPtr, 1) } // padding with '=' switch mod(mload(data), 3) case 1 { mstore(sub(resultPtr, 2), shl(240, 0x3d3d)) } case 2 { mstore(sub(resultPtr, 1), shl(248, 0x3d)) } } return result; } // For OpenSeas function owner() public view virtual returns (address) { return auth; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (security/Pausable.sol) pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which allows children to implement an emergency stop * mechanism that can be triggered by an authorized account. * * This module is used through inheritance. It will make available the * modifiers `whenNotPaused` and `whenPaused`, which can be applied to * the functions of your contract. Note that they will not be pausable by * simply including this module, only once the modifiers are put in place. */ abstract contract Pausable is Context { /** * @dev Emitted when the pause is triggered by `account`. */ event Paused(address account); /** * @dev Emitted when the pause is lifted by `account`. */ event Unpaused(address account); bool private _paused; /** * @dev Initializes the contract in unpaused state. */ constructor() { _paused = false; } /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view virtual returns (bool) { return _paused; } /** * @dev Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused() { require(!paused(), "Pausable: paused"); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused() { require(paused(), "Pausable: not paused"); _; } /** * @dev Triggers stopped state. * * Requirements: * * - The contract must not be paused. */ function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(_msgSender()); } /** * @dev Returns to normal state. * * Requirements: * * - The contract must be paused. */ function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(_msgSender()); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Strings.sol) pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity >=0.8.0; /// @notice Minimalist and gas efficient standard ERC1155 implementation. /// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC1155.sol) abstract contract ERC1155 { /*/////////////////////////////////////////////////////////////// EVENTS //////////////////////////////////////////////////////////////*/ event TransferSingle( address indexed operator, address indexed from, address indexed to, uint256 id, uint256 amount ); event TransferBatch( address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] amounts ); event ApprovalForAll( address indexed owner, address indexed operator, bool approved ); event URI(string value, uint256 indexed id); /*/////////////////////////////////////////////////////////////// ERC1155 STORAGE //////////////////////////////////////////////////////////////*/ mapping(address => mapping(uint256 => uint256)) internal _balanceOf; mapping(address => mapping(address => bool)) public isApprovedForAll; /*/////////////////////////////////////////////////////////////// METADATA LOGIC //////////////////////////////////////////////////////////////*/ function uri(uint256 id) public view virtual returns (string memory); /*/////////////////////////////////////////////////////////////// ERC1155 LOGIC //////////////////////////////////////////////////////////////*/ function setApprovalForAll(address operator, bool approved) public virtual { isApprovedForAll[msg.sender][operator] = approved; emit ApprovalForAll(msg.sender, operator, approved); } function isApproved(address account, address operator) public view virtual returns (bool) { return isApprovedForAll[account][operator]; } function safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes memory data ) public virtual { require( msg.sender == from || isApprovedForAll[from][msg.sender], "NOT_AUTHORIZED" ); _balanceOf[from][id] -= amount; _balanceOf[to][id] += amount; emit TransferSingle(msg.sender, from, to, id, amount); require( to.code.length == 0 ? to != address(0) : ERC1155TokenReceiver(to).onERC1155Received( msg.sender, from, id, amount, data ) == ERC1155TokenReceiver.onERC1155Received.selector, "UNSAFE_RECIPIENT" ); } function safeBatchTransferFrom( address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) public virtual { uint256 idsLength = ids.length; // Saves MLOADs. require(idsLength == amounts.length, "LENGTH_MISMATCH"); require( msg.sender == from || isApprovedForAll[from][msg.sender], "NOT_AUTHORIZED" ); for (uint256 i = 0; i < idsLength; ) { uint256 id = ids[i]; uint256 amount = amounts[i]; _balanceOf[from][id] -= amount; _balanceOf[to][id] += amount; // An array can't have a total length // larger than the max uint256 value. unchecked { i++; } } emit TransferBatch(msg.sender, from, to, ids, amounts); require( to.code.length == 0 ? to != address(0) : ERC1155TokenReceiver(to).onERC1155BatchReceived( msg.sender, from, ids, amounts, data ) == ERC1155TokenReceiver.onERC1155BatchReceived.selector, "UNSAFE_RECIPIENT" ); } function _balanceOfBatch(address[] memory owners, uint256[] memory ids) public view virtual returns (uint256[] memory balances) { uint256 ownersLength = owners.length; // Saves MLOADs. require(ownersLength == ids.length, "LENGTH_MISMATCH"); balances = new uint256[](owners.length); // Unchecked because the only math done is incrementing // the array index counter which cannot possibly overflow. unchecked { for (uint256 i = 0; i < ownersLength; i++) { balances[i] = _balanceOf[owners[i]][ids[i]]; } } } /*/////////////////////////////////////////////////////////////// ERC165 LOGIC //////////////////////////////////////////////////////////////*/ function supportsInterface(bytes4 interfaceId) public pure virtual returns (bool) { return interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165 interfaceId == 0xd9b67a26 || // ERC165 Interface ID for ERC1155 interfaceId == 0x0e89341c; // ERC165 Interface ID for ERC1155MetadataURI } /*/////////////////////////////////////////////////////////////// INTERNAL MINT/BURN LOGIC //////////////////////////////////////////////////////////////*/ function _mint( address to, uint256 id, uint256 amount, bytes memory data ) internal { _balanceOf[to][id] += amount; emit TransferSingle(msg.sender, address(0), to, id, amount); require( to.code.length == 0 ? to != address(0) : ERC1155TokenReceiver(to).onERC1155Received( msg.sender, address(0), id, amount, data ) == ERC1155TokenReceiver.onERC1155Received.selector, "UNSAFE_RECIPIENT" ); } function _batchMint( address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal { uint256 idsLength = ids.length; // Saves MLOADs. require(idsLength == amounts.length, "LENGTH_MISMATCH"); for (uint256 i = 0; i < idsLength; ) { _balanceOf[to][ids[i]] += amounts[i]; // An array can't have a total length // larger than the max uint256 value. unchecked { i++; } } emit TransferBatch(msg.sender, address(0), to, ids, amounts); require( to.code.length == 0 ? to != address(0) : ERC1155TokenReceiver(to).onERC1155BatchReceived( msg.sender, address(0), ids, amounts, data ) == ERC1155TokenReceiver.onERC1155BatchReceived.selector, "UNSAFE_RECIPIENT" ); } function _batchBurn( address from, uint256[] memory ids, uint256[] memory amounts ) internal { uint256 idsLength = ids.length; // Saves MLOADs. require(idsLength == amounts.length, "LENGTH_MISMATCH"); for (uint256 i = 0; i < idsLength; ) { _balanceOf[from][ids[i]] -= amounts[i]; // An array can't have a total length // larger than the max uint256 value. unchecked { i++; } } emit TransferBatch(msg.sender, from, address(0), ids, amounts); } function _burn( address from, uint256 id, uint256 amount ) internal { _balanceOf[from][id] -= amount; emit TransferSingle(msg.sender, from, address(0), id, amount); } } /// @notice A generic interface for a contract which properly accepts ERC1155 tokens. /// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC1155.sol) interface ERC1155TokenReceiver { function onERC1155Received( address operator, address from, uint256 id, uint256 amount, bytes calldata data ) external returns (bytes4); function onERC1155BatchReceived( address operator, address from, uint256[] calldata ids, uint256[] calldata amounts, bytes calldata data ) external returns (bytes4); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface IEON { function mint(address to, uint256 amount) external; function burn(address from, uint256 amount) external; function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); }
// SPDX-License-Identifier: MIT LICENSE pragma solidity ^0.8.0; interface IRAW { function updateOriginAccess(address user) external; function balanceOf( address account, uint256 id ) external returns(uint256); function mint( uint256 typeId, uint256 qty, address recipient ) external; function burn( uint256 typeId, uint256 qty, address burnFrom ) external; function updateMintBurns( uint256 typeId, uint256 mintQty, uint256 burnQty ) external; function safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes memory data ) external; function safeBatchTransferFrom( address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) external; }
// SPDX-License-Identifier: MIT LICENSE pragma solidity ^0.8.0; interface IRAWoriginal { function getBalance( address account, uint256 id ) external returns(uint256); function mint( uint256 typeId, uint256 qty, address recipient ) external; function burn( uint256 typeId, uint256 qty, address burnFrom ) external; function updateMintBurns( uint256 typeId, uint256 mintQty, uint256 burnQty ) external; function safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes memory data ) external; function safeBatchTransferFrom( address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) external; }
{ "evmVersion": "london", "libraries": {}, "metadata": { "bytecodeHash": "ipfs", "useLiteralContent": true }, "optimizer": { "details": { "constantOptimizer": true, "cse": true, "deduplicate": true, "inliner": true, "jumpdestRemover": true, "orderLiterals": true, "peephole": true, "yul": true, "yulDetails": { "optimizerSteps": "dhfoDgvulfnTUtnIf", "stackAllocation": true } }, "runs": 2000 }, "remappings": [], "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
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":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"typeId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"mintQty","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"burnQty","type":"uint256"}],"name":"UpdateMintBurns","type":"event"},{"inputs":[{"internalType":"address[]","name":"owners","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"_balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"balances","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"addAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"auth","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenOwner","type":"address"},{"internalType":"uint256","name":"typeId","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"typeId","type":"uint256"},{"internalType":"uint256","name":"qty","type":"uint256"},{"internalType":"address","name":"burnFrom","type":"address"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"eon","outputs":[{"internalType":"contract IEON","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"typeId","type":"uint256"}],"name":"getInfoForType","outputs":[{"components":[{"internalType":"uint256","name":"mints","type":"uint256"},{"internalType":"uint256","name":"burns","type":"uint256"},{"internalType":"uint256","name":"maxSupply","type":"uint256"},{"internalType":"uint256","name":"eonExchangeAmt","type":"uint256"}],"internalType":"struct RAW.TypeInfo","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApproved","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"uint256","name":"typeId","type":"uint256"}],"name":"migrate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"migrated","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"typeId","type":"uint256"},{"internalType":"uint256","name":"qty","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"originalRaw","outputs":[{"internalType":"contract IRAWoriginal","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","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":"addr","type":"address"}],"name":"removeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"_eon","type":"address"},{"internalType":"address","name":"_originalRaw","type":"address"}],"name":"setContracts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"typeId","type":"uint256"},{"internalType":"uint256","name":"exchangeAmt","type":"uint256"}],"name":"setExchangeAmt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_paused","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"typeId","type":"uint256"},{"internalType":"uint256","name":"maxSupply","type":"uint256"}],"name":"setType","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"traitData","outputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"png","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"typeId","type":"uint256"},{"internalType":"uint256","name":"mintQty","type":"uint256"},{"internalType":"uint256","name":"burnQty","type":"uint256"}],"name":"updateMintBurns","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"updateOriginAccess","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"typeId","type":"uint256"},{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"png","type":"string"}],"internalType":"struct RAW.Image","name":"image","type":"tuple"}],"name":"uploadImage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"typeId","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b506002805460ff19169055620000266200003e565b600980546001600160a01b0319163317905562000124565b60025460ff16156200006d5760405162461bcd60e51b81526004016200006490620000bc565b60405180910390fd5b6002805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258620000a33390565b604051620000b2919062000114565b60405180910390a1565b60208082528101620000eb81601081526f14185d5cd8589b194e881c185d5cd95960821b602082015260400190565b92915050565b60006001600160a01b038216620000eb565b6200010e81620000f1565b82525050565b60208101620000eb828462000103565b61335280620001346000396000f3fe608060405234801561001057600080fd5b50600436106101d95760003560e01c80637d26c78c11610104578063d8952a49116100a2578063e985e9c511610071578063e985e9c514610443578063f242432a14610471578063f2fde38b14610484578063f6bb451f1461049757600080fd5b8063d8952a49146103f7578063de9375f21461040a578063e79df0d11461041d578063e7d3fe6b1461043057600080fd5b80639ca0f29b116100de5780639ca0f29b14610375578063a22cb46514610395578063a389783e146103a8578063c4994180146103e457600080fd5b80637d26c78c146103285780638da5cb5b1461033b5780638e05da331461035557600080fd5b80632eb2c2d61161017c5780635c975abb1161014b5780635c975abb146102d757806370480275146102e257806373ac0e54146102f5578063749388c41461031557600080fd5b80632eb2c2d61461028b5780633ac702661461029e578063454b0608146102b15780634ee6dc99146102c457600080fd5b806316c38b3c116101b857806316c38b3c146102475780631785f53c1461025c578063229a3fdd1461026f5780632c678c641461028257600080fd5b8062fdd58e146101de57806301ffc9a7146102075780630e89341c14610227575b600080fd5b6101f16101ec366004611f33565b6104b8565b6040516101fe9190611f78565b60405180910390f35b61021a610215366004611fa1565b6105b2565b6040516101fe9190611fd2565b61023a610235366004611fe0565b61064b565b6040516101fe919061205f565b61025a61025536600461208a565b610823565b005b61025a61026a3660046120ab565b61087b565b61025a61027d3660046120ab565b6108b3565b6101f1600a5481565b61025a610299366004612268565b61095f565b61025a6102ac366004612331565b610c4c565b61025a6102bf366004611fe0565b610cc3565b61025a6102d2366004612353565b610e4c565b60025460ff1661021a565b61025a6102f03660046120ab565b610f05565b610308610303366004612416565b610f40565b6040516101fe91906124dc565b61025a6103233660046124ed565b61104c565b61025a61033636600461254e565b6110d5565b6009546001600160a01b03165b6040516101fe91906125a5565b600854610368906001600160a01b031681565b6040516101fe91906125d2565b610388610383366004611fe0565b6111c4565b6040516101fe9190612625565b61025a6103a3366004612633565b61125f565b61021a6103b6366004612666565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b61025a6103f2366004612331565b6112ce565b61025a610405366004612666565b61132a565b600954610348906001600160a01b031681565b600754610368906001600160a01b031681565b61025a61043e3660046124ed565b611387565b61021a610451366004612666565b600160209081526000928352604080842090915290825290205460ff1681565b61025a61047f366004612699565b611457565b61025a6104923660046120ab565b6116b2565b6104aa6104a5366004611fe0565b611703565b6040516101fe9291906126f3565b3360009081526005602052604081205460ff16806104fb575032600090815260066020526040902054436801000000000000000090910467ffffffffffffffff16105b6105205760405162461bcd60e51b81526004016105179061274a565b60405180910390fd5b3360009081526005602052604090205460ff168061056c57506001600160a01b038316600090815260066020526040902054436801000000000000000090910467ffffffffffffffff16105b6105885760405162461bcd60e51b81526004016105179061275a565b506001600160a01b0382166000908152602081815260408083208484529091529020545b92915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03198316148061061557507fd9b67a26000000000000000000000000000000000000000000000000000000006001600160e01b03198316145b806105ac5750506001600160e01b0319167f0e89341c000000000000000000000000000000000000000000000000000000001490565b60008181526003602052604090206002015460609061067c5760405162461bcd60e51b8152600401610517906127ed565b60008281526004602052604080822081518083019092528054829082906106a290612813565b80601f01602080910402602001604051908101604052809291908181526020018280546106ce90612813565b801561071b5780601f106106f05761010080835404028352916020019161071b565b820191906000526020600020905b8154815290600101906020018083116106fe57829003601f168201915b5050505050815260200160018201805461073490612813565b80601f016020809104026020016040519081016040528092919081815260200182805461076090612813565b80156107ad5780601f10610782576101008083540402835291602001916107ad565b820191906000526020600020905b81548152906001019060200180831161079057829003601f168201915b5050505050815250509050600081600001516107d06107cb8661182f565b6119c6565b6040516020016107e192919061285c565b60405160208183030381529060405290506107fb816119c6565b60405160200161080b91906129f7565b60405160208183030381529060405292505050919050565b6009546001600160a01b0316331461083a57600080fd5b6007546001600160a01b03166108625760405162461bcd60e51b815260040161051790612a59565b801561087357610870611b83565b50565b610870611bf2565b6009546001600160a01b0316331461089257600080fd5b6001600160a01b03166000908152600560205260409020805460ff19169055565b3360009081526005602052604090205460ff166108e25760405162461bcd60e51b815260040161051790612a9b565b60408051808201825267ffffffffffffffff428116825243811660208084019182526001600160a01b039095166000908152600690955292909320905181549251841668010000000000000000027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909316931692909217179055565b6001600160a01b038516600090815260066020526040902054436801000000000000000090910467ffffffffffffffff16106109ad5760405162461bcd60e51b815260040161051790612add565b8251825181146109cf5760405162461bcd60e51b815260040161051790612b1f565b3360009081526005602052604090205460ff16610a3c57336001600160a01b0387161480610a2057506001600160a01b038616600090815260016020908152604080832033845290915290205460ff165b610a3c5760405162461bcd60e51b815260040161051790612b61565b60005b81811015610b11576000858281518110610a5b57610a5b612b71565b602002602001015190506000858381518110610a7957610a79612b71565b60200260200101519050806000808b6001600160a01b03166001600160a01b0316815260200190815260200160002060008481526020019081526020016000206000828254610ac89190612b9d565b90915550506001600160a01b03881660009081526020818152604080832085845290915281208054839290610afe908490612bb4565b909155505060019092019150610a3f9050565b50846001600160a01b0316866001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610b61929190612bcc565b60405180910390a46001600160a01b0385163b15610c1b576040517fbc197c8100000000000000000000000000000000000000000000000000000000808252906001600160a01b0387169063bc197c8190610bc89033908b908a908a908a90600401612bf1565b6020604051808303816000875af1158015610be7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0b9190612c5c565b6001600160e01b03191614610c28565b6001600160a01b03851615155b610c445760405162461bcd60e51b815260040161051790612caf565b505050505050565b6009546001600160a01b03163314610c6357600080fd5b81610c805760405162461bcd60e51b815260040161051790612cf1565b600082815260036020526040902054811015610cae5760405162461bcd60e51b815260040161051790612d33565b60009182526003602052604090912060020155565b60025460ff1615610ce65760405162461bcd60e51b815260040161051790612d75565b6008546040517f2b04e8400000000000000000000000000000000000000000000000000000000081526000916001600160a01b031690632b04e84090610d329033908690600401612d85565b6020604051808303816000875af1158015610d51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d759190612dab565b905060008111610d975760405162461bcd60e51b815260040161051790612dfe565b6008546040517f749388c40000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063749388c490610de490859085903390600401612e0e565b600060405180830381600087803b158015610dfe57600080fd5b505af1158015610e12573d6000803e3d6000fd5b50505050610e3133838360405180602001604052806000815250611c45565b80600a6000828254610e439190612bb4565b90915550505050565b3360009081526005602052604090205460ff16610e7b5760405162461bcd60e51b815260040161051790612e68565b60008381526003602052604081208054849290610e99908490612bb4565b909155505060008381526003602052604081206001018054839290610ebf908490612bb4565b90915550506040517f069c51469578032eacdf4c08d21e7515ba36f52e0456901cce8073899c3934ed90610ef890859085908590612e78565b60405180910390a1505050565b6009546001600160a01b03163314610f1c57600080fd5b6001600160a01b03166000908152600560205260409020805460ff19166001179055565b81518151606091908114610f665760405162461bcd60e51b815260040161051790612b1f565b835167ffffffffffffffff811115610f8057610f806120cc565b604051908082528060200260200182016040528015610fa9578160200160208202803683370190505b50915060005b8181101561104457600080868381518110610fcc57610fcc612b71565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020600085838151811061100857611008612b71565b602002602001015181526020019081526020016000205483828151811061103157611031612b71565b6020908102919091010152600101610faf565b505092915050565b60025460ff161561106f5760405162461bcd60e51b815260040161051790612d75565b3360009081526005602052604090205460ff1661109e5760405162461bcd60e51b815260040161051790612ed2565b600083815260036020526040812060010180548492906110bf908490612bb4565b909155506110d09050818484611da7565b505050565b6009546001600160a01b031633146110ec57600080fd5b60408051808201909152806111018380612ee2565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525060209081019061114a90840184612ee2565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250939094525050848152600460209081526040909120835180519193506111a4928492910190611e59565b5060208281015180516111bd9260018501920190611e59565b5050505050565b6111ef6040518060800160405280600081526020016000815260200160008152602001600081525090565b60008281526003602052604090206002015461121d5760405162461bcd60e51b8152600401610517906127ed565b50600090815260036020818152604092839020835160808101855281548152600182015492810192909252600281015493820193909352910154606082015290565b3360008181526001602090815260408083206001600160a01b038716808552925291829020805460ff191685151517905590519091907f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31906112c2908590611fd2565b60405180910390a35050565b6009546001600160a01b031633146112e557600080fd5b6000828152600360205260409020600201546113135760405162461bcd60e51b815260040161051790612f8e565b600091825260036020819052604090922090910155565b6009546001600160a01b0316331461134157600080fd5b600780546001600160a01b039384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560088054929093169116179055565b60025460ff16156113aa5760405162461bcd60e51b815260040161051790612d75565b3360009081526005602052604090205460ff166113d95760405162461bcd60e51b815260040161051790612ed2565b6000838152600360205260409020600281015490546113f9908490612bb4565b11156114175760405162461bcd60e51b815260040161051790612fd0565b60008381526003602052604081208054849290611435908490612bb4565b925050819055506110d081848460405180602001604052806000815250611c45565b6001600160a01b038516600090815260066020526040902054436801000000000000000090910467ffffffffffffffff16106114a55760405162461bcd60e51b815260040161051790612add565b3360009081526005602052604090205460ff1661151257336001600160a01b03861614806114f657506001600160a01b038516600090815260016020908152604080832033845290915290205460ff165b6115125760405162461bcd60e51b815260040161051790612b61565b6001600160a01b03851660009081526020818152604080832086845290915281208054849290611543908490612b9d565b90915550506001600160a01b03841660009081526020818152604080832086845290915281208054849290611579908490612bb4565b92505081905550836001600160a01b0316856001600160a01b0316336001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6286866040516115cf929190612fe0565b60405180910390a46001600160a01b0384163b15611689576040517ff23a6e6100000000000000000000000000000000000000000000000000000000808252906001600160a01b0386169063f23a6e61906116369033908a90899089908990600401612fee565b6020604051808303816000875af1158015611655573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116799190612c5c565b6001600160e01b03191614611696565b6001600160a01b03841615155b6111bd5760405162461bcd60e51b815260040161051790612caf565b6009546001600160a01b031633146116c957600080fd5b600980547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60046020526000908152604090208054819061171e90612813565b80601f016020809104026020016040519081016040528092919081815260200182805461174a90612813565b80156117975780601f1061176c57610100808354040283529160200191611797565b820191906000526020600020905b81548152906001019060200180831161177a57829003601f168201915b5050505050908060010180546117ac90612813565b80601f01602080910402602001604051908101604052809291908181526020018280546117d890612813565b80156118255780601f106117fa57610100808354040283529160200191611825565b820191906000526020600020905b81548152906001019060200180831161180857829003601f168201915b5050505050905082565b6060600061197d6004600085815260200190815260200160002060405180604001604052908160008201805461186490612813565b80601f016020809104026020016040519081016040528092919081815260200182805461189090612813565b80156118dd5780601f106118b2576101008083540402835291602001916118dd565b820191906000526020600020905b8154815290600101906020018083116118c057829003601f168201915b505050505081526020016001820180546118f690612813565b80601f016020809104026020016040519081016040528092919081815260200182805461192290612813565b801561196f5780601f106119445761010080835404028352916020019161196f565b820191906000526020600020905b81548152906001019060200180831161195257829003601f168201915b505050505081525050611e2c565b60405160200161198d9190613035565b6040516020818303038152906040529050806040516020016119af919061303f565b604051602081830303815290604052915050919050565b60608151600014156119e657505060408051602081019091526000815290565b60006040518060600160405280604081526020016132dd6040913990506000600384516002611a159190612bb4565b611a1f9190613171565b611a2a906004613185565b90506000611a39826020612bb4565b67ffffffffffffffff811115611a5157611a516120cc565b6040519080825280601f01601f191660200182016040528015611a7b576020820181803683370190505b509050818152600183018586518101602084015b81831015611ae95760039283018051603f601282901c811687015160f890811b8552600c83901c8216880151811b6001860152600683901c8216880151811b60028601529116860151901b93820193909352600401611a8f565b600389510660018114611b035760028114611b4d57611b75565b7f3d3d0000000000000000000000000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe830152611b75565b7f3d000000000000000000000000000000000000000000000000000000000000006000198301525b509398975050505050505050565b60025460ff1615611ba65760405162461bcd60e51b815260040161051790612d75565b6002805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611bdb3390565b604051611be891906125a5565b60405180910390a1565b60025460ff16611c145760405162461bcd60e51b8152600401610517906131d6565b6002805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33611bdb565b6001600160a01b03841660009081526020818152604080832086845290915281208054849290611c76908490612bb4565b90915550506040516001600160a01b0385169060009033907fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6290611cbd9088908890612fe0565b60405180910390a46001600160a01b0384163b15611d78576040517ff23a6e6100000000000000000000000000000000000000000000000000000000808252906001600160a01b0386169063f23a6e6190611d25903390600090899089908990600401612fee565b6020604051808303816000875af1158015611d44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d689190612c5c565b6001600160e01b03191614611d85565b6001600160a01b03841615155b611da15760405162461bcd60e51b815260040161051790612caf565b50505050565b6001600160a01b03831660009081526020818152604080832085845290915281208054839290611dd8908490612b9d565b90915550506040516000906001600160a01b0385169033907fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6290611e1f9087908790612fe0565b60405180910390a4505050565b60608160200151604051602001611e4391906131e6565b6040516020818303038152906040529050919050565b828054611e6590612813565b90600052602060002090601f016020900481019282611e875760008555611ecd565b82601f10611ea057805160ff1916838001178555611ecd565b82800160010185558215611ecd579182015b82811115611ecd578251825591602001919060010190611eb2565b50611ed9929150611edd565b5090565b5b80821115611ed95760008155600101611ede565b60006001600160a01b0382166105ac565b611f0c81611ef2565b811461087057600080fd5b80356105ac81611f03565b80611f0c565b80356105ac81611f22565b60008060408385031215611f4957611f49600080fd5b6000611f558585611f17565b9250506020611f6685828601611f28565b9150509250929050565b805b82525050565b602081016105ac8284611f70565b6001600160e01b03198116611f0c565b80356105ac81611f86565b600060208284031215611fb657611fb6600080fd5b6000611fc28484611f96565b949350505050565b801515611f72565b602081016105ac8284611fca565b600060208284031215611ff557611ff5600080fd5b6000611fc28484611f28565b60005b8381101561201c578181015183820152602001612004565b83811115611da15750506000910152565b6000612037825190565b80845260208401935061204e818560208601612001565b601f01601f19169290920192915050565b60208082528101612070818461202d565b9392505050565b801515611f0c565b80356105ac81612077565b60006020828403121561209f5761209f600080fd5b6000611fc2848461207f565b6000602082840312156120c0576120c0600080fd5b6000611fc28484611f17565b634e487b7160e01b600052604160045260246000fd5b601f19601f830116810181811067ffffffffffffffff82111715612108576121086120cc565b6040525050565b600061211a60405190565b905061212682826120e2565b919050565b600067ffffffffffffffff821115612145576121456120cc565b5060209081020190565b600061216261215d8461212b565b61210f565b8381529050602080820190840283018581111561218157612181600080fd5b835b818110156121a3576121958782611f28565b835260209283019201612183565b5050509392505050565b600082601f8301126121c1576121c1600080fd5b8135611fc284826020860161214f565b600067ffffffffffffffff8211156121eb576121eb6120cc565b601f19601f83011660200192915050565b82818337506000910152565b600061221661215d846121d1565b90508281526020810184848401111561223157612231600080fd5b61223c8482856121fc565b509392505050565b600082601f83011261225857612258600080fd5b8135611fc2848260208601612208565b600080600080600060a0868803121561228357612283600080fd5b600061228f8888611f17565b95505060206122a088828901611f17565b945050604086013567ffffffffffffffff8111156122c0576122c0600080fd5b6122cc888289016121ad565b935050606086013567ffffffffffffffff8111156122ec576122ec600080fd5b6122f8888289016121ad565b925050608086013567ffffffffffffffff81111561231857612318600080fd5b61232488828901612244565b9150509295509295909350565b6000806040838503121561234757612347600080fd5b6000611f558585611f28565b60008060006060848603121561236b5761236b600080fd5b60006123778686611f28565b935050602061238886828701611f28565b925050604061239986828701611f28565b9150509250925092565b60006123b161215d8461212b565b838152905060208082019084028301858111156123d0576123d0600080fd5b835b818110156121a3576123e48782611f17565b8352602092830192016123d2565b600082601f83011261240657612406600080fd5b8135611fc28482602086016123a3565b6000806040838503121561242c5761242c600080fd5b823567ffffffffffffffff81111561244657612446600080fd5b612452858286016123f2565b925050602083013567ffffffffffffffff81111561247257612472600080fd5b611f66858286016121ad565b6124888282611f70565b5060200190565b60200190565b600061249f825190565b808452602093840193830160005b828110156124d25781516124c1878261247e565b9650506020820191506001016124ad565b5093949350505050565b602080825281016120708184612495565b60008060006060848603121561250557612505600080fd5b60006125118686611f28565b935050602061252286828701611f28565b925050604061239986828701611f17565b60006040828403121561254857612548600080fd5b50919050565b6000806040838503121561256457612564600080fd5b60006125708585611f28565b925050602083013567ffffffffffffffff81111561259057612590600080fd5b611f6685828601612533565b611f7281611ef2565b602081016105ac828461259c565b60006105ac82611ef2565b60006105ac826125b3565b611f72816125be565b602081016105ac82846125c9565b80516125ec8382611f70565b5060208101516125ff6020840182611f70565b5060408101516126126040840182611f70565b5060608101516110d06060840182611f70565b608081016105ac82846125e0565b6000806040838503121561264957612649600080fd5b60006126558585611f17565b9250506020611f668582860161207f565b6000806040838503121561267c5761267c600080fd5b60006126888585611f17565b9250506020611f6685828601611f17565b600080600080600060a086880312156126b4576126b4600080fd5b60006126c08888611f17565b95505060206126d188828901611f17565b94505060406126e288828901611f28565b93505060606122f888828901611f28565b60408082528101612704818561202d565b90508181036020830152611fc2818461202d565b60158152602081017f596f757220747279696e672074686520636865617400000000000000000000008152905061248f565b602080825281016105ac81612718565b602080825281016105ac81603981527f6e6f20636865636b696e672062616c616e636520696e207468652073616d652060208201527f626c6f636b2069742773206265696e67206d6f64696669656400000000000000604082015260600190565b600c8152602081017f696e76616c6964207479706500000000000000000000000000000000000000008152905061248f565b602080825281016105ac816127bb565b634e487b7160e01b600052602260045260246000fd5b60028104600182168061282757607f821691505b60208210811415612548576125486127fd565b6000612844825190565b612852818560208601612001565b9290920192915050565b7f7b226e616d65223a2022000000000000000000000000000000000000000000008152600a0161288c818461283a565b7f222c20226465736372697074696f6e223a20225261772050797468656173207281527f65736f7572636573202d20416c6c20746865206d6574616461746120616e642060208201527f696d61676573206172652067656e65726174656420616e642073746f7265642060408201527f31303025206f6e2d636861696e2e204e6f20495046532e204e4f204150492e2060608201527f4a7573742074686520457468657265756d20626c6f636b636861696e2e222c2060808201527f22696d616765223a2022646174613a696d6167652f7376672b786d6c3b62617360a08201527f6536342c0000000000000000000000000000000000000000000000000000000060c082015260c40190506129a2818361283a565b7f222c202261747472696275746573223a205b5d0000000000000000000000000081527f7d00000000000000000000000000000000000000000000000000000000000000601382019081529150601401612070565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c0000008152601d016105ac818361283a565b60118152602081017f436f6e747261637473206e6f74207365740000000000000000000000000000008152905061248f565b602080825281016105ac81612a27565b60198152602081017f4f6e6c792061646d696e732063616e2063616c6c2074686973000000000000008152905061248f565b602080825281016105ac81612a69565b600e8152602081017f6e6f206f76657277726974696e670000000000000000000000000000000000008152905061248f565b602080825281016105ac81612aab565b600f8152602081017f4c454e4754485f4d49534d4154434800000000000000000000000000000000008152905061248f565b602080825281016105ac81612aed565b600e8152602081017f4e4f545f415554484f52495a45440000000000000000000000000000000000008152905061248f565b602080825281016105ac81612b2f565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082821015612baf57612baf612b87565b500390565b60008219821115612bc757612bc7612b87565b500190565b60408082528101612bdd8185612495565b90508181036020830152611fc28184612495565b60a08101612bff828861259c565b612c0c602083018761259c565b8181036040830152612c1e8186612495565b90508181036060830152612c328185612495565b90508181036080830152612c46818461202d565b979650505050505050565b80516105ac81611f86565b600060208284031215612c7157612c71600080fd5b6000611fc28484612c51565b60108152602081017f554e534146455f524543495049454e54000000000000000000000000000000008152905061248f565b602080825281016105ac81612c7d565b60128152602081017f5479706549642063616e6e6f74206265203000000000000000000000000000008152905061248f565b602080825281016105ac81612cbf565b60128152602081017f6d617820737570706c7920746f6f206c6f7700000000000000000000000000008152905061248f565b602080825281016105ac81612d01565b60108152602081017f5061757361626c653a20706175736564000000000000000000000000000000008152905061248f565b602080825281016105ac81612d43565b60408101612d93828561259c565b6120706020830184611f70565b80516105ac81611f22565b600060208284031215612dc057612dc0600080fd5b6000611fc28484612da0565b60148152602081017f6e6f20746f6b656e7320746f206d6967726174650000000000000000000000008152905061248f565b602080825281016105ac81612dcc565b60608101612e1c8286611f70565b612e296020830185611f70565b611fc2604083018461259c565b600b8152602081017f4f6e6c792041646d696e730000000000000000000000000000000000000000008152905061248f565b602080825281016105ac81612e36565b60608101612e868286611f70565b612e936020830185611f70565b611fc26040830184611f70565b600b8152602081017f4f6e6c792061646d696e730000000000000000000000000000000000000000008152905061248f565b602080825281016105ac81612ea0565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe136859003018112612f1b57612f1b600080fd5b8301915050803567ffffffffffffffff811115612f3a57612f3a600080fd5b602082019150600181023603821315612f5557612f55600080fd5b9250929050565b601d8152602081017f74686973207479706520686173206e6f74206265656e207365742075700000008152905061248f565b602080825281016105ac81612f5c565b60108152602081017f4d6178537570706c79204d696e746564000000000000000000000000000000008152905061248f565b602080825281016105ac81612f9e565b60408101612d938285611f70565b60a08101612ffc828861259c565b613009602083018761259c565b6130166040830186611f70565b6130236060830185611f70565b8181036080830152612c46818461202d565b6105ac818361283a565b7f3c7376672069643d227261775265736f7572636573222077696474683d22313081527f302522206865696768743d2231303025222076657273696f6e3d22312e31222060208201527f76696577426f783d223020302036342036342220786d6c6e733d22687474703a60408201527f2f2f7777772e77332e6f72672f323030302f7376672220786d6c6e733a786c6960608201527f6e6b3d22687474703a2f2f7777772e77332e6f72672f313939392f786c696e6b60808201527f223e00000000000000000000000000000000000000000000000000000000000060a082015260a20161312d818361283a565b7f3c2f7376673e000000000000000000000000000000000000000000000000000081529050600681016105ac565b634e487b7160e01b600052601260045260246000fd5b6000826131805761318061315b565b500490565b600081600019048311821515161561319f5761319f612b87565b500290565b60148152602081017f5061757361626c653a206e6f74207061757365640000000000000000000000008152905061248f565b602080825281016105ac816131a4565b7f3c696d61676520783d22302220793d2230222077696474683d2236342220686581527f696768743d2236342220696d6167652d72656e646572696e673d22706978656c60208201527f6174656422207072657365727665417370656374526174696f3d22784d69645960408201527f4d69642220786c696e6b3a687265663d22646174613a696d6167652f706e673b60608201527f6261736536342c0000000000000000000000000000000000000000000000000060808201526087016132ae818361283a565b7f222f3e000000000000000000000000000000000000000000000000000000000081529050600381016105ac56fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa26469706673582212202f836dbd0f22ec518941d0775d2ae1fb7ba4131d2b476783a196c96c763fcfa064736f6c634300080b0033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101d95760003560e01c80637d26c78c11610104578063d8952a49116100a2578063e985e9c511610071578063e985e9c514610443578063f242432a14610471578063f2fde38b14610484578063f6bb451f1461049757600080fd5b8063d8952a49146103f7578063de9375f21461040a578063e79df0d11461041d578063e7d3fe6b1461043057600080fd5b80639ca0f29b116100de5780639ca0f29b14610375578063a22cb46514610395578063a389783e146103a8578063c4994180146103e457600080fd5b80637d26c78c146103285780638da5cb5b1461033b5780638e05da331461035557600080fd5b80632eb2c2d61161017c5780635c975abb1161014b5780635c975abb146102d757806370480275146102e257806373ac0e54146102f5578063749388c41461031557600080fd5b80632eb2c2d61461028b5780633ac702661461029e578063454b0608146102b15780634ee6dc99146102c457600080fd5b806316c38b3c116101b857806316c38b3c146102475780631785f53c1461025c578063229a3fdd1461026f5780632c678c641461028257600080fd5b8062fdd58e146101de57806301ffc9a7146102075780630e89341c14610227575b600080fd5b6101f16101ec366004611f33565b6104b8565b6040516101fe9190611f78565b60405180910390f35b61021a610215366004611fa1565b6105b2565b6040516101fe9190611fd2565b61023a610235366004611fe0565b61064b565b6040516101fe919061205f565b61025a61025536600461208a565b610823565b005b61025a61026a3660046120ab565b61087b565b61025a61027d3660046120ab565b6108b3565b6101f1600a5481565b61025a610299366004612268565b61095f565b61025a6102ac366004612331565b610c4c565b61025a6102bf366004611fe0565b610cc3565b61025a6102d2366004612353565b610e4c565b60025460ff1661021a565b61025a6102f03660046120ab565b610f05565b610308610303366004612416565b610f40565b6040516101fe91906124dc565b61025a6103233660046124ed565b61104c565b61025a61033636600461254e565b6110d5565b6009546001600160a01b03165b6040516101fe91906125a5565b600854610368906001600160a01b031681565b6040516101fe91906125d2565b610388610383366004611fe0565b6111c4565b6040516101fe9190612625565b61025a6103a3366004612633565b61125f565b61021a6103b6366004612666565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b61025a6103f2366004612331565b6112ce565b61025a610405366004612666565b61132a565b600954610348906001600160a01b031681565b600754610368906001600160a01b031681565b61025a61043e3660046124ed565b611387565b61021a610451366004612666565b600160209081526000928352604080842090915290825290205460ff1681565b61025a61047f366004612699565b611457565b61025a6104923660046120ab565b6116b2565b6104aa6104a5366004611fe0565b611703565b6040516101fe9291906126f3565b3360009081526005602052604081205460ff16806104fb575032600090815260066020526040902054436801000000000000000090910467ffffffffffffffff16105b6105205760405162461bcd60e51b81526004016105179061274a565b60405180910390fd5b3360009081526005602052604090205460ff168061056c57506001600160a01b038316600090815260066020526040902054436801000000000000000090910467ffffffffffffffff16105b6105885760405162461bcd60e51b81526004016105179061275a565b506001600160a01b0382166000908152602081815260408083208484529091529020545b92915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03198316148061061557507fd9b67a26000000000000000000000000000000000000000000000000000000006001600160e01b03198316145b806105ac5750506001600160e01b0319167f0e89341c000000000000000000000000000000000000000000000000000000001490565b60008181526003602052604090206002015460609061067c5760405162461bcd60e51b8152600401610517906127ed565b60008281526004602052604080822081518083019092528054829082906106a290612813565b80601f01602080910402602001604051908101604052809291908181526020018280546106ce90612813565b801561071b5780601f106106f05761010080835404028352916020019161071b565b820191906000526020600020905b8154815290600101906020018083116106fe57829003601f168201915b5050505050815260200160018201805461073490612813565b80601f016020809104026020016040519081016040528092919081815260200182805461076090612813565b80156107ad5780601f10610782576101008083540402835291602001916107ad565b820191906000526020600020905b81548152906001019060200180831161079057829003601f168201915b5050505050815250509050600081600001516107d06107cb8661182f565b6119c6565b6040516020016107e192919061285c565b60405160208183030381529060405290506107fb816119c6565b60405160200161080b91906129f7565b60405160208183030381529060405292505050919050565b6009546001600160a01b0316331461083a57600080fd5b6007546001600160a01b03166108625760405162461bcd60e51b815260040161051790612a59565b801561087357610870611b83565b50565b610870611bf2565b6009546001600160a01b0316331461089257600080fd5b6001600160a01b03166000908152600560205260409020805460ff19169055565b3360009081526005602052604090205460ff166108e25760405162461bcd60e51b815260040161051790612a9b565b60408051808201825267ffffffffffffffff428116825243811660208084019182526001600160a01b039095166000908152600690955292909320905181549251841668010000000000000000027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909316931692909217179055565b6001600160a01b038516600090815260066020526040902054436801000000000000000090910467ffffffffffffffff16106109ad5760405162461bcd60e51b815260040161051790612add565b8251825181146109cf5760405162461bcd60e51b815260040161051790612b1f565b3360009081526005602052604090205460ff16610a3c57336001600160a01b0387161480610a2057506001600160a01b038616600090815260016020908152604080832033845290915290205460ff165b610a3c5760405162461bcd60e51b815260040161051790612b61565b60005b81811015610b11576000858281518110610a5b57610a5b612b71565b602002602001015190506000858381518110610a7957610a79612b71565b60200260200101519050806000808b6001600160a01b03166001600160a01b0316815260200190815260200160002060008481526020019081526020016000206000828254610ac89190612b9d565b90915550506001600160a01b03881660009081526020818152604080832085845290915281208054839290610afe908490612bb4565b909155505060019092019150610a3f9050565b50846001600160a01b0316866001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610b61929190612bcc565b60405180910390a46001600160a01b0385163b15610c1b576040517fbc197c8100000000000000000000000000000000000000000000000000000000808252906001600160a01b0387169063bc197c8190610bc89033908b908a908a908a90600401612bf1565b6020604051808303816000875af1158015610be7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0b9190612c5c565b6001600160e01b03191614610c28565b6001600160a01b03851615155b610c445760405162461bcd60e51b815260040161051790612caf565b505050505050565b6009546001600160a01b03163314610c6357600080fd5b81610c805760405162461bcd60e51b815260040161051790612cf1565b600082815260036020526040902054811015610cae5760405162461bcd60e51b815260040161051790612d33565b60009182526003602052604090912060020155565b60025460ff1615610ce65760405162461bcd60e51b815260040161051790612d75565b6008546040517f2b04e8400000000000000000000000000000000000000000000000000000000081526000916001600160a01b031690632b04e84090610d329033908690600401612d85565b6020604051808303816000875af1158015610d51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d759190612dab565b905060008111610d975760405162461bcd60e51b815260040161051790612dfe565b6008546040517f749388c40000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063749388c490610de490859085903390600401612e0e565b600060405180830381600087803b158015610dfe57600080fd5b505af1158015610e12573d6000803e3d6000fd5b50505050610e3133838360405180602001604052806000815250611c45565b80600a6000828254610e439190612bb4565b90915550505050565b3360009081526005602052604090205460ff16610e7b5760405162461bcd60e51b815260040161051790612e68565b60008381526003602052604081208054849290610e99908490612bb4565b909155505060008381526003602052604081206001018054839290610ebf908490612bb4565b90915550506040517f069c51469578032eacdf4c08d21e7515ba36f52e0456901cce8073899c3934ed90610ef890859085908590612e78565b60405180910390a1505050565b6009546001600160a01b03163314610f1c57600080fd5b6001600160a01b03166000908152600560205260409020805460ff19166001179055565b81518151606091908114610f665760405162461bcd60e51b815260040161051790612b1f565b835167ffffffffffffffff811115610f8057610f806120cc565b604051908082528060200260200182016040528015610fa9578160200160208202803683370190505b50915060005b8181101561104457600080868381518110610fcc57610fcc612b71565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020600085838151811061100857611008612b71565b602002602001015181526020019081526020016000205483828151811061103157611031612b71565b6020908102919091010152600101610faf565b505092915050565b60025460ff161561106f5760405162461bcd60e51b815260040161051790612d75565b3360009081526005602052604090205460ff1661109e5760405162461bcd60e51b815260040161051790612ed2565b600083815260036020526040812060010180548492906110bf908490612bb4565b909155506110d09050818484611da7565b505050565b6009546001600160a01b031633146110ec57600080fd5b60408051808201909152806111018380612ee2565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525060209081019061114a90840184612ee2565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250939094525050848152600460209081526040909120835180519193506111a4928492910190611e59565b5060208281015180516111bd9260018501920190611e59565b5050505050565b6111ef6040518060800160405280600081526020016000815260200160008152602001600081525090565b60008281526003602052604090206002015461121d5760405162461bcd60e51b8152600401610517906127ed565b50600090815260036020818152604092839020835160808101855281548152600182015492810192909252600281015493820193909352910154606082015290565b3360008181526001602090815260408083206001600160a01b038716808552925291829020805460ff191685151517905590519091907f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31906112c2908590611fd2565b60405180910390a35050565b6009546001600160a01b031633146112e557600080fd5b6000828152600360205260409020600201546113135760405162461bcd60e51b815260040161051790612f8e565b600091825260036020819052604090922090910155565b6009546001600160a01b0316331461134157600080fd5b600780546001600160a01b039384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560088054929093169116179055565b60025460ff16156113aa5760405162461bcd60e51b815260040161051790612d75565b3360009081526005602052604090205460ff166113d95760405162461bcd60e51b815260040161051790612ed2565b6000838152600360205260409020600281015490546113f9908490612bb4565b11156114175760405162461bcd60e51b815260040161051790612fd0565b60008381526003602052604081208054849290611435908490612bb4565b925050819055506110d081848460405180602001604052806000815250611c45565b6001600160a01b038516600090815260066020526040902054436801000000000000000090910467ffffffffffffffff16106114a55760405162461bcd60e51b815260040161051790612add565b3360009081526005602052604090205460ff1661151257336001600160a01b03861614806114f657506001600160a01b038516600090815260016020908152604080832033845290915290205460ff165b6115125760405162461bcd60e51b815260040161051790612b61565b6001600160a01b03851660009081526020818152604080832086845290915281208054849290611543908490612b9d565b90915550506001600160a01b03841660009081526020818152604080832086845290915281208054849290611579908490612bb4565b92505081905550836001600160a01b0316856001600160a01b0316336001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6286866040516115cf929190612fe0565b60405180910390a46001600160a01b0384163b15611689576040517ff23a6e6100000000000000000000000000000000000000000000000000000000808252906001600160a01b0386169063f23a6e61906116369033908a90899089908990600401612fee565b6020604051808303816000875af1158015611655573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116799190612c5c565b6001600160e01b03191614611696565b6001600160a01b03841615155b6111bd5760405162461bcd60e51b815260040161051790612caf565b6009546001600160a01b031633146116c957600080fd5b600980547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60046020526000908152604090208054819061171e90612813565b80601f016020809104026020016040519081016040528092919081815260200182805461174a90612813565b80156117975780601f1061176c57610100808354040283529160200191611797565b820191906000526020600020905b81548152906001019060200180831161177a57829003601f168201915b5050505050908060010180546117ac90612813565b80601f01602080910402602001604051908101604052809291908181526020018280546117d890612813565b80156118255780601f106117fa57610100808354040283529160200191611825565b820191906000526020600020905b81548152906001019060200180831161180857829003601f168201915b5050505050905082565b6060600061197d6004600085815260200190815260200160002060405180604001604052908160008201805461186490612813565b80601f016020809104026020016040519081016040528092919081815260200182805461189090612813565b80156118dd5780601f106118b2576101008083540402835291602001916118dd565b820191906000526020600020905b8154815290600101906020018083116118c057829003601f168201915b505050505081526020016001820180546118f690612813565b80601f016020809104026020016040519081016040528092919081815260200182805461192290612813565b801561196f5780601f106119445761010080835404028352916020019161196f565b820191906000526020600020905b81548152906001019060200180831161195257829003601f168201915b505050505081525050611e2c565b60405160200161198d9190613035565b6040516020818303038152906040529050806040516020016119af919061303f565b604051602081830303815290604052915050919050565b60608151600014156119e657505060408051602081019091526000815290565b60006040518060600160405280604081526020016132dd6040913990506000600384516002611a159190612bb4565b611a1f9190613171565b611a2a906004613185565b90506000611a39826020612bb4565b67ffffffffffffffff811115611a5157611a516120cc565b6040519080825280601f01601f191660200182016040528015611a7b576020820181803683370190505b509050818152600183018586518101602084015b81831015611ae95760039283018051603f601282901c811687015160f890811b8552600c83901c8216880151811b6001860152600683901c8216880151811b60028601529116860151901b93820193909352600401611a8f565b600389510660018114611b035760028114611b4d57611b75565b7f3d3d0000000000000000000000000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe830152611b75565b7f3d000000000000000000000000000000000000000000000000000000000000006000198301525b509398975050505050505050565b60025460ff1615611ba65760405162461bcd60e51b815260040161051790612d75565b6002805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611bdb3390565b604051611be891906125a5565b60405180910390a1565b60025460ff16611c145760405162461bcd60e51b8152600401610517906131d6565b6002805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33611bdb565b6001600160a01b03841660009081526020818152604080832086845290915281208054849290611c76908490612bb4565b90915550506040516001600160a01b0385169060009033907fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6290611cbd9088908890612fe0565b60405180910390a46001600160a01b0384163b15611d78576040517ff23a6e6100000000000000000000000000000000000000000000000000000000808252906001600160a01b0386169063f23a6e6190611d25903390600090899089908990600401612fee565b6020604051808303816000875af1158015611d44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d689190612c5c565b6001600160e01b03191614611d85565b6001600160a01b03841615155b611da15760405162461bcd60e51b815260040161051790612caf565b50505050565b6001600160a01b03831660009081526020818152604080832085845290915281208054839290611dd8908490612b9d565b90915550506040516000906001600160a01b0385169033907fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6290611e1f9087908790612fe0565b60405180910390a4505050565b60608160200151604051602001611e4391906131e6565b6040516020818303038152906040529050919050565b828054611e6590612813565b90600052602060002090601f016020900481019282611e875760008555611ecd565b82601f10611ea057805160ff1916838001178555611ecd565b82800160010185558215611ecd579182015b82811115611ecd578251825591602001919060010190611eb2565b50611ed9929150611edd565b5090565b5b80821115611ed95760008155600101611ede565b60006001600160a01b0382166105ac565b611f0c81611ef2565b811461087057600080fd5b80356105ac81611f03565b80611f0c565b80356105ac81611f22565b60008060408385031215611f4957611f49600080fd5b6000611f558585611f17565b9250506020611f6685828601611f28565b9150509250929050565b805b82525050565b602081016105ac8284611f70565b6001600160e01b03198116611f0c565b80356105ac81611f86565b600060208284031215611fb657611fb6600080fd5b6000611fc28484611f96565b949350505050565b801515611f72565b602081016105ac8284611fca565b600060208284031215611ff557611ff5600080fd5b6000611fc28484611f28565b60005b8381101561201c578181015183820152602001612004565b83811115611da15750506000910152565b6000612037825190565b80845260208401935061204e818560208601612001565b601f01601f19169290920192915050565b60208082528101612070818461202d565b9392505050565b801515611f0c565b80356105ac81612077565b60006020828403121561209f5761209f600080fd5b6000611fc2848461207f565b6000602082840312156120c0576120c0600080fd5b6000611fc28484611f17565b634e487b7160e01b600052604160045260246000fd5b601f19601f830116810181811067ffffffffffffffff82111715612108576121086120cc565b6040525050565b600061211a60405190565b905061212682826120e2565b919050565b600067ffffffffffffffff821115612145576121456120cc565b5060209081020190565b600061216261215d8461212b565b61210f565b8381529050602080820190840283018581111561218157612181600080fd5b835b818110156121a3576121958782611f28565b835260209283019201612183565b5050509392505050565b600082601f8301126121c1576121c1600080fd5b8135611fc284826020860161214f565b600067ffffffffffffffff8211156121eb576121eb6120cc565b601f19601f83011660200192915050565b82818337506000910152565b600061221661215d846121d1565b90508281526020810184848401111561223157612231600080fd5b61223c8482856121fc565b509392505050565b600082601f83011261225857612258600080fd5b8135611fc2848260208601612208565b600080600080600060a0868803121561228357612283600080fd5b600061228f8888611f17565b95505060206122a088828901611f17565b945050604086013567ffffffffffffffff8111156122c0576122c0600080fd5b6122cc888289016121ad565b935050606086013567ffffffffffffffff8111156122ec576122ec600080fd5b6122f8888289016121ad565b925050608086013567ffffffffffffffff81111561231857612318600080fd5b61232488828901612244565b9150509295509295909350565b6000806040838503121561234757612347600080fd5b6000611f558585611f28565b60008060006060848603121561236b5761236b600080fd5b60006123778686611f28565b935050602061238886828701611f28565b925050604061239986828701611f28565b9150509250925092565b60006123b161215d8461212b565b838152905060208082019084028301858111156123d0576123d0600080fd5b835b818110156121a3576123e48782611f17565b8352602092830192016123d2565b600082601f83011261240657612406600080fd5b8135611fc28482602086016123a3565b6000806040838503121561242c5761242c600080fd5b823567ffffffffffffffff81111561244657612446600080fd5b612452858286016123f2565b925050602083013567ffffffffffffffff81111561247257612472600080fd5b611f66858286016121ad565b6124888282611f70565b5060200190565b60200190565b600061249f825190565b808452602093840193830160005b828110156124d25781516124c1878261247e565b9650506020820191506001016124ad565b5093949350505050565b602080825281016120708184612495565b60008060006060848603121561250557612505600080fd5b60006125118686611f28565b935050602061252286828701611f28565b925050604061239986828701611f17565b60006040828403121561254857612548600080fd5b50919050565b6000806040838503121561256457612564600080fd5b60006125708585611f28565b925050602083013567ffffffffffffffff81111561259057612590600080fd5b611f6685828601612533565b611f7281611ef2565b602081016105ac828461259c565b60006105ac82611ef2565b60006105ac826125b3565b611f72816125be565b602081016105ac82846125c9565b80516125ec8382611f70565b5060208101516125ff6020840182611f70565b5060408101516126126040840182611f70565b5060608101516110d06060840182611f70565b608081016105ac82846125e0565b6000806040838503121561264957612649600080fd5b60006126558585611f17565b9250506020611f668582860161207f565b6000806040838503121561267c5761267c600080fd5b60006126888585611f17565b9250506020611f6685828601611f17565b600080600080600060a086880312156126b4576126b4600080fd5b60006126c08888611f17565b95505060206126d188828901611f17565b94505060406126e288828901611f28565b93505060606122f888828901611f28565b60408082528101612704818561202d565b90508181036020830152611fc2818461202d565b60158152602081017f596f757220747279696e672074686520636865617400000000000000000000008152905061248f565b602080825281016105ac81612718565b602080825281016105ac81603981527f6e6f20636865636b696e672062616c616e636520696e207468652073616d652060208201527f626c6f636b2069742773206265696e67206d6f64696669656400000000000000604082015260600190565b600c8152602081017f696e76616c6964207479706500000000000000000000000000000000000000008152905061248f565b602080825281016105ac816127bb565b634e487b7160e01b600052602260045260246000fd5b60028104600182168061282757607f821691505b60208210811415612548576125486127fd565b6000612844825190565b612852818560208601612001565b9290920192915050565b7f7b226e616d65223a2022000000000000000000000000000000000000000000008152600a0161288c818461283a565b7f222c20226465736372697074696f6e223a20225261772050797468656173207281527f65736f7572636573202d20416c6c20746865206d6574616461746120616e642060208201527f696d61676573206172652067656e65726174656420616e642073746f7265642060408201527f31303025206f6e2d636861696e2e204e6f20495046532e204e4f204150492e2060608201527f4a7573742074686520457468657265756d20626c6f636b636861696e2e222c2060808201527f22696d616765223a2022646174613a696d6167652f7376672b786d6c3b62617360a08201527f6536342c0000000000000000000000000000000000000000000000000000000060c082015260c40190506129a2818361283a565b7f222c202261747472696275746573223a205b5d0000000000000000000000000081527f7d00000000000000000000000000000000000000000000000000000000000000601382019081529150601401612070565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c0000008152601d016105ac818361283a565b60118152602081017f436f6e747261637473206e6f74207365740000000000000000000000000000008152905061248f565b602080825281016105ac81612a27565b60198152602081017f4f6e6c792061646d696e732063616e2063616c6c2074686973000000000000008152905061248f565b602080825281016105ac81612a69565b600e8152602081017f6e6f206f76657277726974696e670000000000000000000000000000000000008152905061248f565b602080825281016105ac81612aab565b600f8152602081017f4c454e4754485f4d49534d4154434800000000000000000000000000000000008152905061248f565b602080825281016105ac81612aed565b600e8152602081017f4e4f545f415554484f52495a45440000000000000000000000000000000000008152905061248f565b602080825281016105ac81612b2f565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082821015612baf57612baf612b87565b500390565b60008219821115612bc757612bc7612b87565b500190565b60408082528101612bdd8185612495565b90508181036020830152611fc28184612495565b60a08101612bff828861259c565b612c0c602083018761259c565b8181036040830152612c1e8186612495565b90508181036060830152612c328185612495565b90508181036080830152612c46818461202d565b979650505050505050565b80516105ac81611f86565b600060208284031215612c7157612c71600080fd5b6000611fc28484612c51565b60108152602081017f554e534146455f524543495049454e54000000000000000000000000000000008152905061248f565b602080825281016105ac81612c7d565b60128152602081017f5479706549642063616e6e6f74206265203000000000000000000000000000008152905061248f565b602080825281016105ac81612cbf565b60128152602081017f6d617820737570706c7920746f6f206c6f7700000000000000000000000000008152905061248f565b602080825281016105ac81612d01565b60108152602081017f5061757361626c653a20706175736564000000000000000000000000000000008152905061248f565b602080825281016105ac81612d43565b60408101612d93828561259c565b6120706020830184611f70565b80516105ac81611f22565b600060208284031215612dc057612dc0600080fd5b6000611fc28484612da0565b60148152602081017f6e6f20746f6b656e7320746f206d6967726174650000000000000000000000008152905061248f565b602080825281016105ac81612dcc565b60608101612e1c8286611f70565b612e296020830185611f70565b611fc2604083018461259c565b600b8152602081017f4f6e6c792041646d696e730000000000000000000000000000000000000000008152905061248f565b602080825281016105ac81612e36565b60608101612e868286611f70565b612e936020830185611f70565b611fc26040830184611f70565b600b8152602081017f4f6e6c792061646d696e730000000000000000000000000000000000000000008152905061248f565b602080825281016105ac81612ea0565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe136859003018112612f1b57612f1b600080fd5b8301915050803567ffffffffffffffff811115612f3a57612f3a600080fd5b602082019150600181023603821315612f5557612f55600080fd5b9250929050565b601d8152602081017f74686973207479706520686173206e6f74206265656e207365742075700000008152905061248f565b602080825281016105ac81612f5c565b60108152602081017f4d6178537570706c79204d696e746564000000000000000000000000000000008152905061248f565b602080825281016105ac81612f9e565b60408101612d938285611f70565b60a08101612ffc828861259c565b613009602083018761259c565b6130166040830186611f70565b6130236060830185611f70565b8181036080830152612c46818461202d565b6105ac818361283a565b7f3c7376672069643d227261775265736f7572636573222077696474683d22313081527f302522206865696768743d2231303025222076657273696f6e3d22312e31222060208201527f76696577426f783d223020302036342036342220786d6c6e733d22687474703a60408201527f2f2f7777772e77332e6f72672f323030302f7376672220786d6c6e733a786c6960608201527f6e6b3d22687474703a2f2f7777772e77332e6f72672f313939392f786c696e6b60808201527f223e00000000000000000000000000000000000000000000000000000000000060a082015260a20161312d818361283a565b7f3c2f7376673e000000000000000000000000000000000000000000000000000081529050600681016105ac565b634e487b7160e01b600052601260045260246000fd5b6000826131805761318061315b565b500490565b600081600019048311821515161561319f5761319f612b87565b500290565b60148152602081017f5061757361626c653a206e6f74207061757365640000000000000000000000008152905061248f565b602080825281016105ac816131a4565b7f3c696d61676520783d22302220793d2230222077696474683d2236342220686581527f696768743d2236342220696d6167652d72656e646572696e673d22706978656c60208201527f6174656422207072657365727665417370656374526174696f3d22784d69645960408201527f4d69642220786c696e6b3a687265663d22646174613a696d6167652f706e673b60608201527f6261736536342c0000000000000000000000000000000000000000000000000060808201526087016132ae818361283a565b7f222f3e000000000000000000000000000000000000000000000000000000000081529050600381016105ac56fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa26469706673582212202f836dbd0f22ec518941d0775d2ae1fb7ba4131d2b476783a196c96c763fcfa064736f6c634300080b0033
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.