Created
September 7, 2022 23:07
-
-
Save sreyemnayr/3bf6d720ad842f08d85976af6a1831a3 to your computer and use it in GitHub Desktop.
The Stoics - Version 2 for Public Audit
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// SPDX-License-Identifier: MIT | |
// | |
// | |
// ┌▄═==╗▄═==▄▄═▄▄ ,─¬"¬─╥▓ , | |
// ╞▌ ╫█ └█ ██ ▐ █ └█▀ | |
// ╫█ ██ ,, ,, ╫▄, ,▐█,, ,, ,, ,, , | |
// ╫█ ██^ ██ ▄█ ╘█µ ╙█████▄, ╞█ ▄▌ █▄ █▌ ▄▌ j█ ╓ █b | |
// ╫█ ██ ╫█ ▐█▌^^^^╙` ╙█▄ ╞█ ╟█ ▐█µ █▌ ╟█ ▀ └██▓▄, | |
// ╫█ ██ ╫█ └█µ , █ ▌ ╞█ ╙█ ▐█ █▌ ╙█ ╓╖ ╙▀▌ | |
// ,██, ,██ ,██, ▀w ,⌐ ██. ,^ █▄,- ▀, ,╓▀ ,█▌, ^▀, ,.' ╙█, ,x | |
// | |
// ,▄▄███████████████████▄ ███ ▐█████╬╬▒▄████████████▀▀██▒░▒░░░ | |
// ╓▄████████▀▀╚░░░░░░░░░╚╚▀█████▄ ███ ███████████████▀▀╙ ╙███░░░░ | |
// ██████▀╚░▒╬╬╠░▒▄▄▄▄▄▒▒▒▒╠╬╬▒╚▀███▄ ███ ╟█████████▀▀└ ╟██░░░ | |
// ███▀░▄▄████████████▀███▀██████▄███████ █████╙ ╙██░░ | |
// ████▀▀▀ ▐█ ]██████µ █▌ ,████████ ╟█╜╙▀███▄▄ ╙██░ | |
// ███▄, █▌ ╙████▀ ██ ,▄▄███████████ ╙█▌ ▀▀███▄, ╙██ | |
// █████████████▄▄▄▄▄███████▀╠▄██████▀███ ██ ╙▀▀███▄ ╟█ | |
// ▀█████▄▒░╚╚▀▀▀▀▀▀╚╚░░░▒▄████████▀ ███ ╟█ ╙▀████▄ █ | |
// ╙█████████▄▄▄▄▄▄███████████▀ ███ ▐█▌ ,▄▄▄▄ ,,▄▄▄█████▄▄╟ | |
// ╙▀█████████████████▀▀` ███ ██ ▄#▀╙`,▄▄█████████████████ | |
// ╙█████████▀▀╙ ███ ██ ▄█████╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// █████ ███ ╟█▄▄██████████████▀████╬╬╬╬╟ | |
// ██▐███ ███ ╟██████▀` █ ╟███▌ █ ╙▀███╟ | |
// ██ █▌██⌐ ▄▄▄▄▄ ███ ▐███▀ ╙█ ,█▀ ╙██ | |
// ██ j█▒╟█▌ █████████▄ ███ ]███████▄, ╙▀██▀ █ | |
// ██ ▐█▒╚██ ╟████████████▄ ███ ██▒╚▀████████▄╖, █ | |
// ,█▌ ╟█╠╬██▌ ████⌐ ╙╙█████████ ██▒╬╬╬▒░╚▀█████████▄▄, █ | |
// ╓█▌ ╫█╠╠╚██ ███▌ ╙██████ ██▌╬╬╬╬╬╬╬╬░╚▀████╬╬╬╠█████ | |
// ╙██▄ ██╠╠╬╟██ ╟██▒ ╟███▌ ██▌╬╬╬╬╬╬╬╬╠╠╠╬░╚▀█████╬╟██ | |
// ╙█▌ ╫█╠╠╬╬╟██ ▐██▌ █████████` ,,,,, ╟██╠╬╬╬╬╬╬╬╬╬╬╬╬╠╬╬░╚▀█████ | |
// ██ ▐█ ╟█▒╠╬╬╬╟██ ███ █▌ ,,, ██████ ╟██╠╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╠╬╬╟███ | |
// ╟██▄██ ╟█▒╬╬╬╬╬╚██ ╫███ ██ ]█████ ▐██╠╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╠╠░███▌ | |
// ╟█└ ╙ j█▌╠╬╬╠╬╬╚██╣███▌ ████████████████████████████╠╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╠╬▒██╣█▌ | |
// ╟▌ ██▒╬╬╠╠╬╠░╟██████ ██╬╬╬╬███░▒▒▒╠╠╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬▓█▌╟█▌ | |
// █▌ ╟█▌╬╬╬╬╬╬╠╬╟██████▄ ██╬╬╬╬███▒╬╬╬╠╬╬╬╠▒▒╬╬╬╬╬╬╬╬╬╠╬╟█▌ ██ | |
// █ ██░╬╠╬╬╬╬╠╟█▒██████▄ ██▒╠╬╬███▒╬░▄████▀▀▀██░╬╬╬╬╬╠╬╟██ ██ | |
// ▒ ╙█▌╠╬╬╬╬╬╬╫█╬▓█▀█████▄▄ ╫█▒╬╬╬██████▀ ╟█▒╬╬╬╬╬╠▓██ ]██ | |
// ▌ ╟█▒╠╬╬╠╠▒██╬╟█▌ ╙▀██████▄ ╟██╬╬╬██▀╙ ,╓▄▄█████▒╬╬╬╠╬▒██▌ ╟██ | |
// ██▒╬╬╠╬╟█▒╬╬██ ╙▀██████▄,▐██╬███▄███████░░░▒╬╠╬╬╬╬╬½██▀ ╫█▌ | |
// ██▒╠╬▒██╠╬╬╫█▌ ╙▀▀▀▀▀█████▀` ╟█▒╬╬╬╬╬╬╠╬▄██" ██▌ | |
// ██▒╬╟█▌╠╬╬╬██ ╟█░╙▀██, ╟█▒╬╬╬╬╬╠╔██▀ j██▌ | |
// ╚████╠╬╬╬╬╫█▌ ▐█▒░░░╙▀██████░╬╬╬╬╠░███└ ]██ | |
// ╠██▒╬╬╬╬╬╬██ ▐█▒░░░░░░░██▀██▒╬╠░███▀ ▄███ | |
// ╓█████▒╬╬╬╬▓█▌ █▌░░░░░░░░╓██▒╬▒███╙ ▄████▀ | |
// ╓██▀░░▀██▒╬╬╬██ █▌░░░░░░▄██░░▄██▀` ▄████▀ | |
// █▄, .██▀░░░░░░╙███▒╟█▌ ██░░░▄██▀▒███▀╙ ,██████ | |
// | |
// The Stoics by Gabe Weis | |
// thestoics.art | |
// | |
// Assisted by Merlyn Labs | |
// | |
// Smart Contract v2 by Ryan Meyers | |
// An implementation of ERC-721A | |
// | |
// Generosity attracts generosity | |
// The world will be saved by beauty | |
// | |
pragma solidity ^0.8.16; | |
import "chiru-labs/[email protected]/contracts/extensions/ERC721AQueryable.sol"; | |
import "OpenZeppelin/[email protected]/contracts/token/common/ERC2981.sol"; | |
import "OpenZeppelin/[email protected]/contracts/utils/cryptography/draft-EIP712.sol"; | |
import "OpenZeppelin/[email protected]/contracts/utils/cryptography/ECDSA.sol"; | |
contract TheStoics is ERC2981, EIP712, ERC721AQueryable { | |
error InvalidMintKey(); | |
error InsufficientAmountSent(); | |
error PublicSaleNotStarted(); | |
error NoMoreThanTwentyPerTransaction(); | |
error ExceedsAllowance(); | |
error ExceedsMaxSupply(); | |
struct MintKey { | |
address wallet; | |
uint8 free; | |
uint8 allowed; | |
uint8 paid; | |
uint128 price; | |
} | |
bytes32 private constant MINTKEY_TYPE_HASH = keccak256("MintKey(address wallet,uint8 free,uint8 allowed,uint8 paid,uint128 price)"); | |
address private _signer; | |
address private _owner; | |
uint8 public day = 1; | |
string public baseURI; | |
address private constant _ARTIST = 0x95975DEEeA11a798d3737E0Badb821ECd38CCED9; | |
address private constant _TEAM = 0xE2A68B1B0061e14Ef13Fc936215aF4587e50b315; | |
uint private constant _maxSupply = 5000; | |
constructor( | |
string memory name, | |
string memory symbol, | |
address signer, | |
address receiver | |
) | |
ERC721A(name, symbol) | |
EIP712(name, "1") | |
{ | |
_signer = signer; | |
_owner = msg.sender; | |
_setDefaultRoyalty(receiver, 1000); | |
baseURI = "https://nyfti.xyz/api/v1/stoics/metadata/"; | |
} | |
modifier onlyOwner() { | |
if(msg.sender != _owner) revert ApprovalCallerNotOwnerNorApproved(); | |
_; | |
} | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╙████░╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬░▄▄░╬╬╬▒███▒╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬░╬████╬░███▒╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╙███╬╫████░╬╬▒▄░╠╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╟████░╬▐███▄░█████████╩▀▀██▄░╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬░████╬░██████╬███████░░░░░└╩▀▀█▄░╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╠████▒╬▀█████████████░░░░░░░░░░ ╙▀▀██▄▒╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╠█████▄╬░╬█▀█████████░░░░░░░░░░░│▄▄█~└╠▀▀█▄░╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╟███████████████████░░░░░░░▄█▀▀╙└░░│,░░░░'╙▀▀██▄▒╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╙▀████████╠╡╙██▀╬╬█░░░░▄█▀.░ ▄█████▓█████▄░░░│┘▀▀█▌╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╠╠╬╠╬╬╬╬╠█╬╬╬╬█░░░░╙░░╓████████████████▄░░░░░█▌╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬░██╬╬╬╬▌░░░░░░█▌ █╩███▌█ ▀▀█▌░░░j█░╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╠▄████▒╬╬╬▌░░░░░░.███▄▄▄██╬██▀ ,▄▄██▌░░░██╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╠██▓███▌╬╬╟▌░░░░░░░░└████▓▓▓██▓▓██▀▀ ░░░▐█▌╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬███████▌╬╬╟▌░░░░░░░░░,▄█╣████████▄'░░░░░█╫░╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬▓████████╬╬╟▌░░░░░░░███▀██████████▓╬█▄░░█¬█╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬░█████████╬╬╢▌░░░░░░██▄, ▀╬█▀▓█ ╙██░j▌▐▌╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬▓█████████▒╬█▒░░░░░░░╙███╬╬╬╬╬╬█╬╬██▀▌└░█ █╣▌╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬██████████▌╬╫▒░░░░░░░░█▄▄╫╬╜╙▀█▀▀╙^░░░░▐▌ █╬█▒╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╠██████▌█▓█▌╬╫▒░░░░░░░]█████████░░░░░░░░█ ▐██▀▒╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬▒███▓███▓███╬█░░░░░░░░█╜▀█████▀█▌░░░░░░▓─ ██▒╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╟███████████╬█░░░░░░░j█ └╙▀█▀█▀░░░░░j▌ ██▒╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╠███████████▒█░░░░░░░▀█ ╟▒█▀▌▄▀██ ╟██▒╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╠▓███████████▄█░ ████▄░█ ╙ ██ ███▒╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╠╠▀██████████████▓██╣█▀▀ ,╫▌▄ ███▒╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬▐███████████████████▌ █┌╠▄▄▌ ╫███▒╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╟██████████████▀█▓█▄ ▐█▀└ █' ████▒╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╠██████████████▄██▄█ █▀╙ j████▒╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬█████████████ █` ▌' ╫████▒╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬█████████████└└╙╙╙ ▀▄ █████▒╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬███████████▌ `█ j█████▒╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╫█████████████████▄▄▄▄, ╜▄ ██████▒╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╫████▓▓███████████████▓▓█████████████████╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬░░░░│││┤┼╚┼╙╨╩╠╬╬▀▀▀▀▀▀╫█▀▀▀█████████████╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╠█░░░█████████████╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬█▌░]█████████████╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╟▌.██████████████╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╟▌███████████████╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╠█████████████████╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬▒██████████████████╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬▄███████████████████╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬░█████████████████████╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// | |
// Begin at once to live, and count each separate day as a separate life. | |
// -Seneca. | |
// | |
function startASeparateLife() onlyOwner external { | |
day++; | |
} | |
// ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ | |
// ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ | |
// ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ | |
// ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ | |
// ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╬╠╠╠╠░█▒╠╠╬╬╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ | |
// ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╬▓██╠╠▒█╟▌╠φ██▒╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ | |
// ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠█░█▒╠█▀╬█╬▓▀█░╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ | |
// ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠▒▄█╝▀▀▀▀██▒╬╟▒█▒╬╬██▒╟▒╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ | |
// ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╬▄╝▀ ▄█╙│█╬╬░██╬╬╬╫▌╠█▒╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ | |
// ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠█▀ ▄▀ ░░░█▄▄▄▄▄▄▄▄▄▒▒█╬╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ | |
// ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠░█` ▄█░░░░░░▌ █▒╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ | |
// ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠▓▀ █░░░░░░░░▌ ╟▐▒╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ | |
// ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╬█ █░░░░░░░░░█ ▌╟▒╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ | |
// ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╬█ ▐░░░░░░░░░░█ ▐ ╫╬╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ | |
// ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╬█ ▌░░░▄#░░░▄▀█ █ █╬╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ | |
// ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠█ █░░▄▀ ░.█▀ █ ▐⌐ █╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ | |
// ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╟▌ ▌░▀│░▄█` █ █ █╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ | |
// ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠█ ▐▌░░▄▀ █ j▌ █▒╬╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ | |
// ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╬▌ ╟░█▀ █ █ ██████▒╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ | |
// ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╟▌ ,██╗╗▄╗▄▄▄▄▄▄▄█ ▌ ▌╟▄▀▀█▀╬╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ | |
// ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╫ ▄▀ ╟▒░░╙▄█▄█░░░░█ ╟ ▌╠░░░▒╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ | |
// ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╫ :█▄ ╟▒░░░░░░░░░░░█ ▌ ▌╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ | |
// ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╟ ▄▄▄ █ ▐▌░░░░░░░░░░░█ ▐æ▄ ▐▌╬╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ | |
// ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠█╗█╟█╬█æ█ █░░░░░░░░░░░█ , █ ▐.█╬╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ | |
// ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╬╟█╣▌ ╟░░░░░░░░░░░█#▀▐█▄▌▐▄█ ╞ █╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ | |
// ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╟███▀ ▌░░░░░░░░░░░░░]██ ╟█╠░╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ | |
// ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠█▌ ╟▒░░░░░░░░░░░░░█▌ ╟▒╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ | |
// ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠▓╝██▀▀ █░░░░░░░░░░▄▀▀▀▀ █ ╫╬╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ | |
// ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╣▌ █░░░░░░░░ª█` `█ █╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ | |
// ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╣▌ █░░░░░▄▀▄╙█ææ══▀ █╬╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ | |
// ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╬▌ █░░░░█ ▀ █╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ | |
// ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠█ ▀▄░░▀▀█▀*≈═══K≥mæ█╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ | |
// ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╟ ╙█░░░█ █░╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ | |
// ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╬▌ ╙█░█ █░╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ | |
// ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╬█ ,▄æª▀▀█ █░╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ | |
// ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠▌ ,▄▄ª▀▀╙ █ █░╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ | |
// ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠█╗██` ▌ █▒╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ | |
// ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╬╠█▄ ▌ █▒╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ | |
// ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠░█▄ ▌ █╬╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ | |
// ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠█ ▌ █╬╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ | |
// ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠░█ ▌ █╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ | |
// ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠▌ ▌ ╟▒╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ | |
// ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠█ ▌ █╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ | |
// ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╟▌ ▌ ╟▒╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ | |
// ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╬▌ ▌ █╬╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ | |
// ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠█ j▌ ╙▌╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ | |
// ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠█ ▐ █╬╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ | |
// Waste no more time arguing about what a good man should be. Be one. | |
// – Marcus Aurelius | |
// Meditations, X, 16 | |
// | |
function becomeAStoic(bytes calldata signature, MintKey calldata key) external payable { | |
/* | |
* | |
* During Day 1 and Day 2, a MintKey generated by _signer is required for mint | |
* This helps reduce the cost of storing a bunch of addresses on the chain | |
* | |
*/ | |
if (day < 3){ | |
if (msg.sender != key.wallet) revert InvalidMintKey(); | |
if (!searchAfterTruth(signature, key)) revert InvalidMintKey(); | |
if (msg.value < key.price) revert InsufficientAmountSent(); | |
if (_numberMinted(msg.sender) + key.paid > key.allowed) revert ExceedsAllowance(); | |
if (totalSupply() + key.paid > _maxSupply) revert ExceedsMaxSupply(); | |
_mint(msg.sender, key.paid); | |
} else { | |
// This really should only happen in a rare case where gas was set super low and the day passed | |
publiclyBecomeAStoic(key.paid); | |
} | |
} | |
function publiclyBecomeAStoic(uint64 how_many_stoics) public payable { | |
/* | |
* | |
* Once public mint is live (day >= 3), MintKeys are no longer required. | |
* Will there be bots? Maybe, but remember bots are just stoics without skin. | |
* | |
*/ | |
if (day < 3) revert PublicSaleNotStarted(); | |
if (msg.value < (0.111 ether * how_many_stoics)) revert InsufficientAmountSent(); | |
if (how_many_stoics > 20) revert NoMoreThanTwentyPerTransaction(); | |
if (totalSupply() + how_many_stoics > _maxSupply) revert ExceedsMaxSupply(); | |
_mint(msg.sender, how_many_stoics); | |
} | |
function changeYourTune(bytes calldata signature, MintKey calldata key) external payable { | |
if (msg.sender != key.wallet) revert InvalidMintKey(); | |
if (!searchAfterTruth(signature, key)) revert InvalidMintKey(); | |
if (_getAux(msg.sender) > 0) revert ExceedsAllowance(); | |
if (0 < key.free) { | |
if (totalSupply() + key.paid + key.free > _maxSupply) revert ExceedsMaxSupply(); | |
_mint(msg.sender, key.paid + key.free); | |
_setAux(msg.sender, _getAux(msg.sender) + key.free); | |
return; | |
} | |
} | |
// ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ | |
// ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ | |
// ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ | |
// ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ | |
// ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ | |
// ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ | |
// ░░░░░░░░░░░░░░░░░░░░░░░░░░░█░░]█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ | |
// ░░░░░░░░░░░░░░░░░░░░░░░░░░░╟█░░▌█░░╟█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ | |
// ░░░░░░░░░░░░░░░░░░░░░░░░░░░░█╙▄╚▒╙╦╟▒█▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ | |
// ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█░╙▓░░╙▀░╠█▄░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ | |
// ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▀██▀▀▀╙╙╟██╙▀█▄▄░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ | |
// ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█░░░░╓█╬▄▀█▀▓▄░░█▀█▄▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ | |
// ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█░░░]█░╬╚╚▀█╙░│░▐▒░░░▀▀▀Φ▄▒░░░░░░░░░░░░░░░░░░░░░░░░ | |
// ░░░░░░░░░░░░░░░░░░░░░░░░░░░░█░░░▄▀▒╬╬╬╬╬█░░░░╠▄▄╫╣█████████░░░░░░░░░░░░░░░░░░░░░ | |
// ░░░░░░░░░░░░░░░░░░░░░░░░░░░█░░░▓░╬╬╬╬╬╬░█#▀╙░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ | |
// ░░░░░░░░░░░░░░░░░░░░░░░░░░▐▌░░▐▒╬╬╬╬▒▄▀╙█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ | |
// ░░░░░░░░░░░░░░░░░░░░▄░░░░░▌░░░█╬╬╬▒█▀░░░█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ | |
// ░░░░░░░░░░░░░░░░▄▓█▄█▓▓███│░░╟▒╬╬╔█░░░░░█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ | |
// ░░░░░░░░░░░░░░╓▄██▀▀╚░░░╟▌░░░█╬╬╟▌▒▄▄░░░█▄▄╥░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ | |
// ░░░░░░░░░░░░░░█░╬▒▄▓╗▄░╠█░░░░█╬░█░│░│░│░█╬░█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ | |
// ░░░░░░░░░░░░░░▌██╝▓█▌▀██▒░░░░█╠╫▒▄▓███▄░╫╬╚█▀░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ | |
// ░░░░░░░░░░░░░░▌╚╫████╩░█░░░░░╟▒█░░╙╫╪▀░░╫╬▐▒░░░░░░░░░░░▄░░░▄░░░█▒░░░░░░░░░░░░░░░ | |
// ░░░░░░░░░░░░░║▌╬╬╬╠▌░░╟▒░░░░░░██░░░░░░░░╫╬░░░█░░░░░░░░╟╩▌░▐█▌░╟▒█░░░░░░░░░░░░░░░ | |
// ░░░░░░░░░░░░░░▌╬╬╬╠▌░░█░░░░░░░╙█▄▄░░░░░░╫╬╠▄▀░░░░░░░░]▌░█░█░█░█░╟▌░░░░░░░░░░░░░░ | |
// ░░░░░░░░░░░░░░█╬╬╬╟▒░▐▌░░░░▄▄▄░░░╟░░░░░░╫░█░░░░░░░░░░█░░╟█▒░░█░░░█░░░░░░░░░░░░░░ | |
// ░░░░░░░░░░░░░░█▒╬╬╟▒░█░░░█▒░╟╬█▄│█░░░░░░╫█░░░░░░░░░░╟░░░░█░░░░░░░╚▌░░░░░░░░░░░░░ | |
// ░░░░░░░░░░░░░░╟▒╬╬╟▒░░╙╙╙░░░╟█╣▌││░░░░░░╫▓░░░░░░░░░▐▌░░░░░░░░░░░░░█░░░░░░░░░░░░░ | |
// ░░░░░░░░░░░░░░░█╬╬╟▒░░░░░░░░░█╣▒░░░░░░░░╫╬█░░░░░░░░╟▒░░░░░░]█░▐█░░╚▌░░░░░░░░░░░░ | |
// ░░░░░░░░░░░░░░░╟▌╬╟▒░░░░░░░╓▄██▀█░░░░░░░╟╬╣▒░░░░░░░░█░░░░░░█╣▄██░░░╟░░░░░░░░░░░░ | |
// ░░░░░░░░░░░░░░░░█▒╟▒░░░░░░░█▀▀╗▄▄█░░░░░░╟╬╬█░░░░░░░░╠▌░░░░█╠╬╬╬▌░░░▄▌░░░░░░░░░░░ | |
// ░░░░░░░░░░░░░░░░░█╬╚█░░░░░░╙▀▀▄█░╙░░░░░░╟╬╬╬▌░░░░░░╓█░░░▄█╬╬╬╬██▀▀░░░░░░░░░░░░░░ | |
// ░░░░░░░░░░░░░░░░░╙▌╬░█▒░░░░░░░╚▌░░░░░░░░╟╬╬╬╣▒░░░░▄▀░░▄█╬╬╬█▀▀░░░░▒░░░░░░░░░░░░░ | |
// ░░░░░░░░░░░░░░░░░░╟▒╬╬╚▄░░░░░▄▄█░░░░░░░░╟╬╬╬╬█░░░█░░█╬╬██▀░░░░░░░░░░░░░░░░░░░░░░ | |
// ░░░░░░░░░░░░░░░░░░░╟▒╬╬░█░░░█░░░░░░░░░░░╟╬╬╬╬╬▌░█▄██▀╠╩░░░░░░░░░░░░░░░░░░░░░░░░░ | |
// ░░░░░░░░░░░░░░░░░░░░╟▒╬╬▒▀▒░╟▄▄▄████▓██╠╬╬╬╬╬╬███░░░█░░░░░░░░░░░░░░░░░░░░░░░░░░░ | |
// ░░░░░░░░░░░░░░░░░░░░░╟▒╬╬╬╚█░░░░░░░░╙▀╬╬╬╬█▀▀╟▀█▌╬╟▀░░░░░░░░░░░░░░░░░░░░░░░░░░░░ | |
// ░░░░░░░░░░░░░░░░░░░░░░╟▒╬╬╬░█▒░░░░░░░▄▄█▀│░░▓▀░╚█║▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ | |
// ░░░░░░░░░░░░░░░░░░░░░░░╙█╬╬╬╬╠▄░░▄█▀╙░░╚▒░░█▒░░░╟█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ | |
// ░░░░░░░░░░░░░░░░░░░░░░░░╙█▒╬░▄╣▀╙░░░░░░░▌░█░░░░░░█░░▒▄▄▄▄▄░░░░░░░░░░░░░░░░░░░░░░ | |
// ░░░░░░░░░░░░░░░░░░░░░░░░░░▀▀░░░░░░░░░░░╟▒█░░░░░░░│░░░░░█▄╟▌░░░░░░░░░░░░░░░░░░░░░ | |
// ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█▀░░░░░░░░░░░░░░│▀█▌░░░░░░░░░░░░░░░░░░░░░ | |
// ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█▒░░░░░░░░░░░░░░░░░░█░░░░░░░░░░░░░░░░░░░░░ | |
// ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█▒░░░░░░░░░░░░░░░░░░░╫░░░░░░░░░░░░░░░░░░░░░ | |
// ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█░░░░░░░░░░░░░░░░░░░░░╟▒░░░░░░░░░░░░░░░░░░░░ | |
// ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░████▓▒░░░░░░░░░░░░░░░░░▄███▄░░░░░░░░░░░░░░░░░░ | |
// ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░╟╬█╟▓█▓░░░░░░░░░░░░░░░░░█▌█▀█░░░░░░░░░░░░░░░░░░ | |
// ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░╙▒╙▀░▀░░░░░░░░░░░░░░░░░╙░│░░░░░░░░░░░░░░░░░░░░ | |
// Receive without pride, let go without attachment. | |
// – Marcus Aurelius | |
// Meditations, VII, 33 | |
function let_go_without_attachment(uint256 tokenId) public { | |
_burn(tokenId, true); | |
} | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬█████╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬▓████████╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬████▀│▄▓███╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬▓█▒╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬███▀│▄████▀██░╙▀╣╬╬╬╬╬╬╬╬╬╬▓▀╙▐█╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬███╙░▄███▄▄▄▒██▒░░░░╙▀▓╬╬▓╝▀└ █╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬██│░]███▀░░░░╚███▒░░░░▄▓██▄' ▐█╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬██│░▄██░╠╠╠╠╠╠╠██▌╙█▄▓╬╬╬╬╬╬╬▓▄ █╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬██│░▐██▒▄▓▀▀▀#╠╠███▀│██╬╬╬╬╬╬╬╬╬▓▓█╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬██░░░██░░░▄▄▄▄▄░╠██▌░░░╟█╬╬╬╬╬╬╬╬╬█╙█▓╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╟█▌░░▓█▓██████▀▀█████░░░░██╬╬╬╬╬╬╬╫▌░░│▀█╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬██░░░████▄▄███▓▓▓████░░░░░█▒╬╬╬╬╬╬█░░░░░│▀█╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣██░░░██▒░╚╚▀▀▀▀╚░╠╟██░░░░░╟█╬╬╬╬╬█▒╚╚╚╟▌░░│▀█╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╫▌▌░░░██▒╠╠╠╠╠╠╠╠╠╠╟██▒░░░░░█╬╬╬╬╬█▄▄▄▄▄█░░░░│▀█╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬█▓▌░░░██╠▒▒╠╠░▄▄▄░╠╟██▒░░░░░╫█╬╬╬██╬╬██░█░░░░░░│█▓╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬█▒▌░░░██╚▀▀▀╠▒╚╚░░▒╠██▌░░░░░╟█╬╬╣█╟▌░░▄▓▀░░░░░░░░╙█╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬█▌▌░░░█████████████████░░░░░║█╬╬█▒╠█░░╟▒░█╚▌░█╬█▄▄██╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬█▌█░░░████▀▀▀▀▀▀▀╙╙╠█▀█░░░░░▐█╬╣█╠╠╟▌░░╙╙░░█╣▒╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬█▌╫░░░╟█ .▓▀│░█░░░░░]█╬█░╠╠╠█░░░░░░█╫╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬█▌╚▌░░░▀▀██' ▄█│░░░█▒░░░░▐█╫▌╠╠╠╠╟▌░░░▓▀██▀█╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣▒▄▄█░▄███░█' .▓▀▄╪▀╪░╫▌░░░░╟██▒╠╠╠╠╠█░░╫█#▀▀▓█▒╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╠╬╬╬╬╬╬█╬█╙╙' .█│░▄██▓▄╟▌░░░░╫█▌╠╠╠╠╠╠╫▌░░╫▄▄▄█╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬█╫⌐ .█░░╙█╫███░█░░░░██╠╠╠╠╠╠╠╠█░░░░███▓╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬███▌ █▒░░░│╙╙│░░█░░░]█▒╠╠╠╠╠╠╠╠█▌░░░░░╫█╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬▓. ▐▌░░░░░░░░;▄█▒░░╫█╠╠╠╠╠╠╠╠╠╠█░░░░½█╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬█╙. │█░░░░░░░░░╙╬█▒░░█▓▓▌╠╠╠╠╠╠╠╠█▌░░░█╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬▌ j▌░░░░░░░░░░░▐╬███▓▓▒╠╠╠╠╠╠╠▄█▒░░██╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬▌ ▐▌░░░░░░░░░░░▐╬█▒╠╠╠╠╠╠╠╠╠╠█▀░░░██╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬█ j▌░░░░░░░░]▓▀▓█▀▌╠╠╠╠╠╠╠╬█▀░░░╓██╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬█, '█░░░░░░░░█#▀▀▀▄█╠╠╠╠╠▒█▀░░░░▓██╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬▓▓▄╟▌░░░░░░░╟▄▄▄▄▓░╠╠╠▄█▀░░░░▄█▒██╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣██▓▓▄▄▄▄░░░╙╫▒╠▒▓█▒░░░░▓█╬╬╫█╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬█╙█▄░░│╙╠█▀▀▓▓█▀░░░░▄█╬╬╬╬╬██╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬█░░╙▀▓▄░░▀▀▀╙░░▄▄██╬╬╬╬╬╬╬╬█╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬█▒░░░░│█╬▀▀▀▀╬█╬╬╬╬╬╬╬╬╬╬╬╟█╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬█▒░░░░░█╠╠╠╠╠╠▀█▒╬╬╬╬╬╬╬╬╬╫█╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬█░░░░░░█╠╠╠╠╠╠▓█╬╬╬╬╬╬╬╬╬╬╫█╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣█░░░░│▄█╠╠╠╠╠╠█╬╬╬╬╬╬╬╬╬╬╬╫▓╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬█▒░░░▓█░╠╠╠╠╠╠╠╫▒╬╬╬╬╬╬╬╬╬╬╫█╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣█░░░░░██▒╠╠╠╠╠╠╟█╬╬╬╬╬╬╬╬╬╬╫█╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬█░░░░░░░██▒╠╠╠╠╠╟█╬╬╬╬╬╬╬╬╬╬╣█╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬█▌░░░░░░░░███▒╠╠╠╠█╬╬╬╬╬╬╬╬╬╬╬██╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ | |
// I search after truth, by which man never yet was harmed. | |
// - Marcus Aurelius | |
// Meditations, VI, 21 | |
// | |
function searchAfterTruth(bytes calldata signature, MintKey calldata key) public view returns (bool) { | |
bytes32 digest = _hashTypedDataV4( | |
keccak256( | |
abi.encode( | |
MINTKEY_TYPE_HASH, | |
msg.sender, // this line was the biggest problem in the botted version of this contract. | |
key.free, | |
key.allowed, | |
key.paid, | |
key.price | |
) | |
) | |
); | |
return ECDSA.recover(digest, signature) == _signer; | |
} | |
// '' , ▄ | |
// '' ▓▌ ╙█ | |
// █╬▌ ██ | |
// █╝╬█ ╓ █╬▌ | |
// ▀ ╙µ ,█╙█▄▄█▓█▀ █╜╣µ | |
// ║ ╟ ▓▀░░╟▌, ╫ █ | |
// ╫ ▀ ▄▀│░░░░█╬▓████▌ ,⌐ ╞ | |
// ╟ ▀ ╓█│░░]░░▄░█ ▀▄▀ ,▀ ▐ | |
// █ ╙▄ ,█│░░w╬╠█▒▄░╟█▀ ▄ ║ | |
// ╙ ▀▄ ▓▀░░░░╪╪╪█╪▀▀░█▌ ╓▀ ▌ | |
// ▀µ ▓█▓▓▓▓▓▓▓▓▓█░░░░░█#^ █ | |
// ╙▄ ╓█╬╬╬█▀▀▀▀█▓╬█▒░░░░╚█ ,▀ | |
// ▀▄ ,█╬╬╬█▓▄▄▄▄▄░╟█╣▌░░░░░█µ ,▀ | |
// ,██╬╬╬╬╬╬▌╙▀,█╬╬╬╬█░░░░░░█ ╓M^ | |
// ▄█╬╬╬╬╬╬╬╬╬╬╬╬╬╬▓▌▄▄░░╔██▓╚█ | |
// ▄█╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣█▄▄▄▄▄▄▄▄▄█▌ | |
// ╓█╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣█╬╬╣▌ | |
// ▓█╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣█▓▓█ | |
// ┐ █▓╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣█▓▓▌ | |
// │' ╙█╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣█▓█ | |
// ░░ ╙█╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬██▌ | |
// ░░┐ █╬╬╬╬╬╬╬╬╬╬╬██▀████,,,,╓▄▄▄▄▄▄╗╗╗ÆÆ#▓▓▓▓▓▓▓▓█ | |
// ░░░┐ █╬╬╬╬╬╬╬╬╬╬╬╬██╬█╬╬░░▒╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠█ | |
// ░░░░. █▓╬╬╬╬╬╬╬╬╬╬╬╣█▒╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╬▌ | |
// ░░░░░┌ █╫█╬╬╬╬╬╬╬╬╬╬▓█╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠█ | |
// ░░░░░░ █░╙█╬╬╬╬╬╬╬╬█▒╠▒▒▒▒▒▒▄▄▄▄▄▄▓▓▓▓▓▓▓▓▓▓▓▓▓▓███⌐ | |
// ▒░░░░░░░ █░░╙█╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬█▀▀ | |
// ▒▒░░░░░░░┌ █░░░╙█╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬▓█▀╙ | |
// ▒▒▒▒░░░░░░.. █░░░░░█▓╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬▓█▀` | |
// ╠╠▒▒▒░░░░░░░. █░░░░░░██╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬██▀ | |
// ╠╠╠▒▒▒░░░░░░░. █░░░░░░╫██╬╬╬╬╬╬╬╬╬╬▓██▀ | |
// ╬╠╠╠▒▒▒░░░░░░░┌ █░░░░░░█▒╬█╬╬╬╬╬▓██▀░╠█ | |
// ╬╬╠╠▒▒▒░░░░░░░░. █░░░░░░█▒╠╬███▀╬░╠╠╠╠╠█ | |
// ╬╬╬╠╠▒▒▒░░░░░░░░░. █░░░░░░█╠╠╠╠░╠╠╠╠╠╠╠╠╠█ | |
// ╬╬╬╬╠╠▒▒▒▒░░░░░░░░┐ █░░░░░░█╠╠╠╠╠╠╠╠╠╠╠╠╠╠█ | |
// ╬╬╬╬╠╠╠▒▒▒▒░░░░░░░░░. █░░░░░░█▒▄╠╠▒╠▄▄╠╠╠╠╠╠█ | |
// ╬╬╬╬╬╬╠╠▒▒▒▒░░░░░░░░░┌:█░░░░░░██╟██╟█▒█╬╠╠╠╠╠╫ | |
// ╬╬╬╬╬╬╠╠╠▒▒▒▒░░░░░░░░░j█░░░░░░││░│░░░░█╠╠╠╠╠╠╫▌ | |
// ╬╬╬╬╬╬╠╠╠╠▒▒▒▒░░░░░░░░░█░░░░░░░░░░░░░░█╬╠╠╠╠╠╫▌ | |
// ╬╬╬╬╬╬╬╠╠╠▒▒▒▒▒░░░░░░░]█░░░░░░░░░░░░░░█▒╠╠╠╠╠╟▌ | |
// | |
// Wealth consists not in having great possessions, | |
// but in having few wants. | |
// -Epicletus | |
// | |
function wantLess() public payable { | |
require(payable(_TEAM).send((address(this).balance / 10) * 4)); | |
require(payable(_ARTIST).send(address(this).balance)); | |
} | |
// ░ ╙░░░░░░░░░░░░░░░^░░░░⌐ ▄ ░░░"█▄ ░▓░░░▌▀ « φ░░]µ░░Γ.░░░░░░░";░░░░░░░╙,≤╙ | |
// ░│░,"░░░░░░░░░░░░▄░⌐░░░░⌐\╬▌▀µ░░╙█▀▄ ]░╟█░⌐╟ ╟φ φ░░░'█µ ¡░░░░░Γ`;░░░░░░╙,φ" | |
// ⁿ░░░░,`░░░░░░░░░░╙█▓▄░░░░⌐╙█ ▀µ░ ▌│▓;░░█▒ j⌐ █▓▄░░░░██φ░░░░Γ,░░░░░░╙,∩` ,φ░░ | |
// ░≥,"░░░» ╚░░░░░░░░╙▓╙▀▄░░░∩╚█ ╙▄Γ└▌░█░░╟▌ ]⌐ █╣╬█µ░⌐█╟▒░█▌,░░░░░Γ." ,≤░░░░░░░ | |
// ░░░░░,"░░░ ╙░░░░░░░░╙▄╙▌░░░∩█▌ ╙▌ ▓░╟▒░▐▌ ╫ ▐▓╣╣╬█;░█░▌½▌╙▌░░╚▌ ,«φ░░░░░░░░░░░ | |
// ░░░░░░░╓▄"░░,"φ░░░░░░╙▌│▓µ░░╟█ ╟ ╟░▐▒Γ▓ ╔ █╬╣╣╣█░▐▒░█▓ ╟╙ ▐█░░░░░░░░░░░Γ" ' | |
// ░░░░░░░│╙█▓╗▄░.`φ░░░░░╫░░█░░░█ ▌█░▐▒▐█╓▀,█╬╣╣╣╬▌]▌░░█ ▐▒░█╬▌j▌░░░Γ" ' | |
// ░░░░░░░░░│╙█╬╬▓▓▄ ╚░░░╫░░╟▒░▐█▌ ╟▌░▓]▌█ ▄▓╣╣╣╣╬█▄▀░░█ ▐░j█╣█▓╟ ' ,;≤ | |
// ░░░░░░░░░░░ ╙▓╬╣╬▓▓ ╙░█░░▐▒ █╣╣▄ █▒▌█]▌▐╬╣╣╣╣╬█▀│░░█ ▌░█╬╬█▌▐⌐ ,;≤░░░░░░ | |
// `╙╚φ░░░░░░░░░│▀▓╣╣╬▓▄ █░░╟▒╫╬╬█╬▌ ▀█▒░▌╫╣╣╣╣╬█│░▄Å▌▄ ▌ ▓╬╬█▌░╫░░░▄▌░░░░░░░░ | |
// ╙▀▀█▄░░░░╙█╬╣╣╬█╬▌░╫▒█╣╣╬██╬╬████▓██▓▓▓╬█Å▀ ▄▀▌ Æ▀▄▓╬██│░╓▌░░▄█▌░░░░░░░░ | |
// ≥»-, ╙█▌╙╙δ╙▀█╬╣╣╬██╙█╬╣╬▓╝▀ ╙██▌░░░ ╙▀W█░╫ ▓█▓█▓█▀│░░▄▀░]▓╬█░░░░░░░░░ | |
// ░░░░░░░░░░░≥╠▌»,, ╙██╬╣╬█╬▓█▓▀ ╙█▌░░░░░░░│╙█▄█▀▀ █│░░╓▓▒▄▓╬╬█Γ╙╙"` | |
// ⁿⁿⁿⁿⁿΓΓ=ΓΓΓΓ░╟█░░░░▌ ▀▓▀╝▀███▄ ╙█░▀╙╙╙▀▀▄░░ ▀▄ █│Q▄▓█╬╬╬╬▓█⌐ | |
// ░░░░░░░░░φφφφ≥█▌=ⁿ"▌ ╙▒¡▓╬╬╬╬▌ █▄▓▓╬╬▓▓▄░░░░╙▌╟███▓███▓█╩╙▌ | |
// ╙╙"`▄ █╬▄.-▌ █▓╬╬╬╬╬╬▌ █┘╙╠▀██▓█▌░░░░ █▀ ,▄▄, █░╠╠╠╠╠╠╠╠╠╠╠ | |
// ...;██,░░░»≥≥░█╬╬▓▄█ ╟█╬╬╣▀█ ╟▄ ╟▒░'▀╫æ▀░░░░░░░ █╟╝▀▀╙▀ ,▓▒╠╠╠╠╠╠╠╬▌╠╠╠ | |
// ░░░░░╙█▄ ░░░░░^█╬╬╬█▌ ▐▓╣╬█▄▒█░█ ▐▌░░░░░░░░░░░░░░▓▄▄▓█▓▀▀▀▀▀▀╪▄▄╫▀▀█╙╩╠╠ | |
// ░░░░░░╙█╬▓▓▄░` ▀▓▓╬╬╬▓▓█▓█▀ ░ ░╫▌ ╓█▀▌ █░░░░░░░░░░░░░░╟╬╬╬╬█╙▀▀╪▄▄▄▄æ#▀└░░░░░ | |
// ░░░░░░╚╙█╬╣╬╬╬▓▓▓▓▓╣╣▓███│░░░░░░ ▀▀▀╙░░╙╙╙└░░░░░░░░░░░░░░╫╬╣╣╣╬█▄ƒ░░░░░░░░░░░░░░ | |
// ░░╚" ▀▓╬╣╣╣╣╬████╬╬▓█▌░░░░░░░░░░░░░░░░░, ░░░░░░░░░░░░█╣╣╣╣╣╣╬╬▓▓▓▓▓░░░░░░░░░ | |
// ,φ░│╙▀▓╬╣█╬╬╣╣╣╣╬██▌░░░░░░░░░░▄▀▀▄▄▀ ╙▄░░░░░░░░░│▓▀█╙▀▀█▓▓▓╝▀▀░≥», `"░░░░ | |
// .»░░░░╚`,»╠│▓████████▀ █▀▄▄▄▄▄▄▄;█ª▀▀▀█▀▀▀▀░░░░░░░░╓▀ ╙▌ ¼ `╙╠░░░░░░░≥», | |
// ,φ░░░░╚` »▒▄▓▓╬╬╬╬▓╝▀▄▀ ▓███▓╬╬╬╬╬╬▓▄▄▄█░░░░░░░░░░╓▓ ██ ▀ "╩░░░░░░░ | |
// ░░░╚` ,φ░▄▓╬╬▓╝▀╙│QÅ▀ ▓Ü██╣╬╬█▓╬╬╬╬╬╬╬█▓█▄░░░░▄Å▀ ███▌ ██▌ ▓░» "╚░░░ | |
// ╙` ,ε╠░░▐▓╬▓▌▄▄#▀╙ ╓█▀ ╟█╣╣╣╣╬╬█▀█╝▓███▓█▓▓▓█▀ ▐█╣█╬█▌ █╬█▌ █░░░≥, ` | |
// »╠░░░░░██╙▀W▄ ,▄▀ ╓██╣╣╣╬╬▓█ ╙▓ ██╬█ ██╣╬█╙█▓▄█╬╣▓▄ █ ░░░░φ» | |
// ░░░░Γ░░░╫░░;░░│╙`^▐▀ #│█╬▓▓█▀│▓▀ ` ▓██▌╟▌ ██╣╣╣╣▒█╬╬▓╬█▌└▀▄ ▀▄░░░░░░░≥, | |
// ░░░░░░░░╙;φΓ;≥ ╓ ▄▀;██▀▓▀░░▓▀ ▄█╬██ ╟ █│╟█╬╣╣▒╙█╬╬╬▓█░░ ╙▀▄█⌐░░░░░░░ | |
// ░░░░░░Γ;φ░░░╙ ]▌ #╙ ▄██.█│░╓█ #█╬╣╣█▌ ╙ ▄▓▒░▐▒█╬╫░φ│█╬╬╬╬█░░░░░░░░░░░░░░ | |
// ░░░░Γ,φΓ░░≥ φ╫ ▄▀╙▄▓╬█ ▓│░▓▓ ▄▀]█╣╬██ ▓ ╟▒░╟▒░╟╣▒,"░╙▓╬╬╬█░░░░░░░░░░░░░ | |
// ░░░,φ░░░░╙ .░░╟ ▐▒▓█╬╬█ ░▌░█ ▌ ▐▒░▐█╬██▀▌ ▐▒ ╘▌░█"░░╙█µ░ ╚░│▀╫██░░░░░░░░░░░░ | |
// ░,φ░░░░≥ ;░░░╚▄▌░ ▀▀▀ ░░█j▌;█ ▌░░░█╣╝█▒█ ▐ ░ ╟▌█ "░░╙▓▄░,"░░░░╙▀Ü░░░≥░░░░░░ | |
// φ╩░░░░╙ φ░░░░░█▒ ]░░░░╟╣▌░ ▌ ▐▒░░░╙█ █▌ ▌▐▒!≥ ╙█ '^░░░╙█▄░ ╙░░░░░░░░░░≥░░░░ | |
// ░░░░░ ;░░░░░░░░Γ ]░░░░░░█▌░░╙▌ ▌░░░ε ▌╙█µ╙▄▌ \, ╙▌ ' ░░░░│░░░^φ░░░░░░░░░░≥░░ | |
// ░░░╚ φ░░░░░░░░╩ ░░░░░░░░█▄░[¡▀▀░░░░ ╙█╟█µ░∩ ░ █ . ░░░░░░░░ "░░░░░░░░░░░φ | |
// ░░╙ ,░░░░░░░░░░ ░░░░░░░░Γ¡▀▄⌐]░░░░░░ ▀╟█░░ φ ▐█ ░░░░░░░░░ ╚░░░░░░░░░░ | |
// ░ ;░░░░░░░░░░ ]░░░░░░░░⌐░│ ⌐]░░░░░░ ░█▌░░ !ε █▓█' ░░░░░░░░░,"░░░░░░░░░ | |
// φ░░░░░░░░░░╙ ░╗▄▄▄▄░░░ ░░░ ░░░░░░░ ░█▌░░ ░ █▓▓╬▌' ░░░░░░░░░░ ╚░░░░░░░ | |
// ;░░░░░░░░░░░░ φ░░ ╙▀▀█╬█▓▓▓▄▄░░░░░░░[ ]█▌░░░ ╓█▓█▓▓▌ \░░░░░░░░░,^φ░░░░░ | |
// φ░░░░░░░░░░░░ ;░░░░░░░░│▀█╬▓▓╬╬█▓µ░░░░ █▀│░░░⌐▄█▓╣█▓╬▌ \░░░░░░░░░░ "░░░░ | |
// ░░░░░░░░░░░░░╙ ░░░░░░░░░░ │╙█╬▓╬█▓╬▌░░░ ▄█│░░░░▄█╬▓▓█▓╬▀ "░░░░░░░░░░░ ░░░ | |
// ░░░░░░░░░░░░░ φ░░░░░░░░░░.░░░╙█▓╬█▓╣▒░▄█▀ ░,▓█╬▓╬█╬╬█ "░░░░░░░░░░░ "░ | |
// ░░░░░░░░░░░░ ,░░░░░░░░░░Γ;░░░░ █▓╣▓╣▌▓█▌ ▄▓╬╬███╬█▀ !≥ '"░░░░░░░░░░░░ | |
// ░░░░░░░░░░░╩ ░░░░░░░░░░░⌐░░░░░.╙▓█╬╣▌█▌[▄███╬╬╬▓▀└░ \ε . ░░░░░░░░░░░░ | |
// ░░░░░░░░░░░ φ░░░░░░░░░░░ ░░░░░¡░╟╬█▓█████╬▓▓▓▀ ░░░░ ░ ' ░░░░░░░░░░░ | |
// ░░░░░░░░░░╩ ,░░░░░░░░░░░Γ¡░░░░░;░░╙▀█████▓▀ ░░░░░░░░ ░ ' ░░░░░░░░░░ | |
// Whatever anyone does or says, I must be what I am and show my true colors. | |
// — Marcus Aurelius | |
// Meditations, VII, 15 | |
// | |
function showStoicsTrueColors(string memory newBaseURI) public onlyOwner { | |
baseURI = newBaseURI; | |
} | |
function _baseURI() internal view override returns (string memory) { | |
return baseURI; | |
} | |
// Override to support royalties via ERC2981 | |
function supportsInterface( | |
bytes4 interfaceId | |
) public view virtual override(IERC721A, ERC721A, ERC2981) returns (bool) { | |
// Supports the following `interfaceId`s: | |
// - IERC165: 0x01ffc9a7 | |
// - IERC721: 0x80ac58cd | |
// - IERC721Metadata: 0x5b5e139f | |
// - IERC2981: 0x2a55205a | |
return | |
ERC721A.supportsInterface(interfaceId) || | |
ERC2981.supportsInterface(interfaceId); | |
} | |
} | |
// | |
// Congratulations, you made it to the end of the Smart Contract! | |
// Go mint a fork and feed someone in New Orleans: https://forkhunger.art | |
// |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment