92 txs
105 calls
constructor
constructor()
functions
balanceOf
viewfunction balanceOf(address owner) view returns (uint256)
generateMetadata
viewfunction generateMetadata(uint256 tokenId) view returns (string)
getApproved
viewfunction getApproved(uint256 tokenId) view returns (address)
getMintedFrequenciesRange
viewfunction getMintedFrequenciesRange(uint256 start, uint256 end) view returns (uint16[])
getToneData
viewfunction getToneData(uint16 frequency) view returns (tuple)
isAdminNameOverwriteEnabled
viewfunction isAdminNameOverwriteEnabled() view returns (bool)
isAdminPriceChangeEnabled
viewfunction isAdminPriceChangeEnabled() view returns (bool)
isApprovedForAll
viewfunction isApprovedForAll(address owner, address operator) view returns (bool)
isFrequencyMinted
viewfunction isFrequencyMinted(uint16 frequency) view returns (bool)
isMintingEnabled
viewfunction isMintingEnabled() view returns (bool)
isNameTaken
viewfunction isNameTaken(string name) view returns (bool)
MAX_BATCH_SIZE
viewfunction MAX_BATCH_SIZE() view returns (uint256)
MAX_FREQUENCY
viewfunction MAX_FREQUENCY() view returns (uint16)
MAX_SUPPLY
viewfunction MAX_SUPPLY() view returns (uint256)
MIN_FREQUENCY
viewfunction MIN_FREQUENCY() view returns (uint16)
mintPrice
viewfunction mintPrice() view returns (uint256)
name
viewfunction name() view returns (string)
owner
viewfunction owner() view returns (address)
ownerOf
viewfunction ownerOf(uint256 tokenId) view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
tokenIdToFrequency
viewfunction tokenIdToFrequency(uint256) view returns (uint16)
tokenIdToName
viewfunction tokenIdToName(uint256) view returns (string)
tokenURI
viewfunction tokenURI(uint256 tokenId) view returns (string)
totalMinted
viewfunction totalMinted() view returns (uint256)
totalSupply
viewfunction totalSupply() view returns (uint256 result)
_changeMintPrice
nonpayablefunction _changeMintPrice(uint256 newPrice)
_disableNameOverwrite
nonpayablefunction _disableNameOverwrite()
_disablePriceChange
nonpayablefunction _disablePriceChange()
_overwriteToneName
nonpayablefunction _overwriteToneName(uint256 tokenId, string newName)
_toggleMintingEnabled
nonpayablefunction _toggleMintingEnabled()
_withdraw
nonpayablefunction _withdraw()
approve
payablefunction approve(address to, uint256 tokenId) payable
mint
payablefunction mint(uint16 frequency, string name, address recipient) payable
mintBatch
payablefunction mintBatch(uint16[] frequencies, string[] names, uint256 quantity, address recipient) payable
renounceOwnership
nonpayablefunction renounceOwnership()
safeTransferFrom
payablefunction safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) payable
safeTransferFrom
payablefunction safeTransferFrom(address from, address to, uint256 tokenId) payable
setApprovalForAll
nonpayablefunction setApprovalForAll(address operator, bool approved)
setToneName
nonpayablefunction setToneName(uint256 tokenId, string newName)
setToneNamesBatch
nonpayablefunction setToneNamesBatch(uint256[] tokenIds, string[] newNames)
transferFrom
payablefunction transferFrom(address from, address to, uint256 tokenId) payable
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
Approval
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
ApprovalForAll
event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
ConsecutiveTransfer
event ConsecutiveTransfer(uint256 indexed fromTokenId, uint256 toTokenId, address indexed from, address indexed to)
MetadataUpdate
event MetadataUpdate(uint256 _tokenId)
MintPriceChanged
event MintPriceChanged(uint256 newMintPrice)
NameChanged
event NameChanged(address indexed owner, uint256 indexed tokenId, uint16 frequency, string name)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
ToneMinted
event ToneMinted(address indexed recipient, uint256 indexed tokenId, uint16 frequency, string name)
TonesMinted
event TonesMinted(address indexed recipient, uint16[] frequencies, string[] names)
Transfer
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
errors
ApprovalCallerNotOwnerNorApproved
error ApprovalCallerNotOwnerNorApproved()
ApprovalQueryForNonexistentToken
error ApprovalQueryForNonexistentToken()
BalanceQueryForZeroAddress
error BalanceQueryForZeroAddress()
MintERC2309QuantityExceedsLimit
error MintERC2309QuantityExceedsLimit()
MintToZeroAddress
error MintToZeroAddress()
MintZeroQuantity
error MintZeroQuantity()
NotCompatibleWithSpotMints
error NotCompatibleWithSpotMints()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
OwnerQueryForNonexistentToken
error OwnerQueryForNonexistentToken()
OwnershipNotInitializedForExtraData
error OwnershipNotInitializedForExtraData()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SequentialMintExceedsLimit
error SequentialMintExceedsLimit()
SequentialUpToTooSmall
error SequentialUpToTooSmall()
SpotMintTokenIdTooSmall
error SpotMintTokenIdTooSmall()
TokenAlreadyExists
error TokenAlreadyExists()
TransferCallerNotOwnerNorApproved
error TransferCallerNotOwnerNorApproved()
TransferFromIncorrectOwner
error TransferFromIncorrectOwner()
TransferToNonERC721ReceiverImplementer
error TransferToNonERC721ReceiverImplementer()
TransferToZeroAddress
error TransferToZeroAddress()
URIQueryForNonexistentToken
error URIQueryForNonexistentToken()
creation bytecode
0x608060405266038d7ea4c68000600b55600c805462ffffff191661010117905534801561002a575f5ffd5b50336040518060400160405280600a8152602001694261736520546f6e657360b01b81525060405180604001604052806005815260200164544f4e455360d81b815250816002908161007c91906101b9565b50600361008982826101b9565b50505f8055506001600160a01b0381166100bc57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100c5816100d0565b506001600a55610273565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061014957607f821691505b60208210810361016757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156101b457805f5260205f20601f840160051c810160208510156101925750805b601f840160051c820191505b818110156101b1575f815560010161019e565b50505b505050565b81516001600160401b038111156101d2576101d2610121565b6101e6816101e08454610135565b8461016d565b6020601f821160018114610218575f83156102015750848201515b5f19600385901b1c1916600184901b1784556101b1565b5f84815260208120601f198516915b828110156102475787850151825560209485019460019092019101610227565b508482101561026457868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b613e38806102805f395ff3fe608060405260043610610254575f3560e01c8063715018a61161013f578063b57c80a4116100b3578063c87b56dd11610078578063c87b56dd146106b9578063cfdbf254146106d8578063d7220ca7146106ec578063da2bfdb114610700578063e985e9c51461071f578063f2fde38b14610766575f5ffd5b8063b57c80a41461061b578063b88d4fde14610630578063bb8ac18f14610643578063c10eb14d14610662578063c62284ad14610676575f5ffd5b8063a22cb46511610104578063a22cb46514610579578063a2309ff814610598578063ab6c288d146105ac578063ada424ea146105cb578063b3da4e34146105e9578063b54db76514610608575f5ffd5b8063715018a6146104e65780637932fe61146104fa5780638da5cb5b1461051957806395d89b4114610536578063970ba4721461054a575f5ffd5b806338853c90116101d657806355c7ba141161019b57806355c7ba141461043457806360745a01146104535780636352211e146104675780636817c76c146104865780636e52a3301461049b57806370a08231146104c7575f5ffd5b806338853c90146103a65780633aad0a5b146103ba5780633c32fee4146103ef5780633d84d15c1461040257806342842e0e14610421575f5ffd5b806318160ddd1161021c57806318160ddd1461031c5780631e40c3121461033e57806323b872dd146103575780632bddb8ba1461036a57806332cb6b0c14610391575f5ffd5b8063015e1a0b1461025857806301ffc9a71461028d57806306fdde03146102bc578063081812fc146102d0578063095ea7b314610307575b5f5ffd5b348015610263575f5ffd5b50610277610272366004612f65565b610785565b6040516102849190612faa565b60405180910390f35b348015610298575f5ffd5b506102ac6102a7366004612fd1565b6108c5565b6040519015158152602001610284565b3480156102c7575f5ffd5b50610277610916565b3480156102db575f5ffd5b506102ef6102ea366004612f65565b6109a6565b6040516001600160a01b039091168152602001610284565b61031a610315366004613002565b6109df565b005b348015610327575f5ffd5b506103306109ef565b604051908152602001610284565b348015610349575f5ffd5b50600c546102ac9060ff1681565b61031a61036536600461302a565b610a06565b348015610375575f5ffd5b5061037e601481565b60405161ffff9091168152602001610284565b34801561039c575f5ffd5b50610330614e0d81565b3480156103b1575f5ffd5b5061031a610b7c565b3480156103c5575f5ffd5b506102ac6103d4366004613075565b61ffff165f908152600d602052604090206001015460ff1690565b61031a6103fd3660046131f7565b610bed565b34801561040d575f5ffd5b5061031a61041c366004612f65565b61119e565b61031a61042f36600461302a565b611225565b34801561043f575f5ffd5b50600c546102ac9062010000900460ff1681565b34801561045e575f5ffd5b5061031a611244565b348015610472575f5ffd5b506102ef610481366004612f65565b6112a1565b348015610491575f5ffd5b50610330600b5481565b3480156104a6575f5ffd5b506104ba6104b53660046132d1565b6112ab565b604051610284919061332f565b3480156104d2575f5ffd5b506103306104e1366004613341565b61141d565b3480156104f1575f5ffd5b5061031a611460565b348015610505575f5ffd5b5061031a61051436600461335a565b611473565b348015610524575f5ffd5b506009546001600160a01b03166102ef565b348015610541575f5ffd5b50610277611563565b348015610555575f5ffd5b5061037e610564366004612f65565b600e6020525f908152604090205461ffff1681565b348015610584575f5ffd5b5061031a610593366004613414565b611572565b3480156105a3575f5ffd5b506103306115dd565b3480156105b7575f5ffd5b5061031a6105c636600461344d565b6115eb565b3480156105d6575f5ffd5b50600c546102ac90610100900460ff1681565b3480156105f4575f5ffd5b506102ac610603366004613486565b61188d565b61031a6106163660046134b7565b6118bf565b348015610626575f5ffd5b5061037e614e2081565b61031a61063e366004613510565b611c0c565b34801561064e575f5ffd5b5061031a61065d36600461344d565b611c4d565b34801561066d575f5ffd5b5061031a611ef1565b348015610681575f5ffd5b50610695610690366004613075565b611ffe565b60408051825181526020808401511515908201529181015190820152606001610284565b3480156106c4575f5ffd5b506102776106d3366004612f65565b6120be565b3480156106e3575f5ffd5b50610330603281565b3480156106f7575f5ffd5b5061031a612129565b34801561070b575f5ffd5b5061027761071a366004612f65565b612150565b34801561072a575f5ffd5b506102ac610739366004613586565b6001600160a01b039182165f90815260076020908152604080832093909416825291909152205460ff1690565b348015610771575f5ffd5b5061031a610780366004613341565b6121e7565b5f818152600e602090815260408083205460109092528220805460609361ffff9093169291906107b4906135b7565b80601f01602080910402602001604051908101604052809291908181526020018280546107e0906135b7565b801561082b5780601f106108025761010080835404028352916020019161082b565b820191905f5260205f20905b81548152906001019060200180831161080e57829003601f168201915b505050505090505f61083c83612224565b90505f61084c8461ffff16612385565b8360405160200161085e929190613606565b60405160208183030381529060405290505f61089a83836040516020016108869291906136a4565b604051602081830303815290604052612415565b6040516020016108aa91906137a8565b60408051601f19818403018152919052979650505050505050565b5f6301ffc9a760e01b6001600160e01b0319831614806108f557506380ac58cd60e01b6001600160e01b03198316145b806109105750635b5e139f60e01b6001600160e01b03198316145b92915050565b606060028054610925906135b7565b80601f0160208091040260200160405190810160405280929190818152602001828054610951906135b7565b801561099c5780601f106109735761010080835404028352916020019161099c565b820191905f5260205f20905b81548152906001019060200180831161097f57829003601f168201915b5050505050905090565b5f6109b08261243b565b6109c4576109c46333d1c03960e21b61247d565b505f908152600660205260409020546001600160a01b031690565b6109eb82826001612485565b5050565b6001545f54035f19805b14610a0357600854015b90565b5f610a1082612526565b6001600160a01b039485169490915081168414610a3657610a3662a1148160e81b61247d565b5f8281526006602052604090208054338082146001600160a01b03881690911417610a7957610a658633610739565b610a7957610a79632ce44b5f60e11b61247d565b8015610a83575f82555b6001600160a01b038087165f9081526005602052604080822080545f1901905591871681522080546001019055610ada85610abf8882876125b5565b600160e11b174260a01b176001600160a01b03919091161790565b5f85815260046020526040812091909155600160e11b84169003610b2b57600184015f818152600460205260408120549003610b29575f548114610b29575f8181526004602052604090208490555b505b6001600160a01b0385168481887fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4805f03610b7357610b73633a954ecd60e21b61247d565b50505050505050565b610b846125be565b600c54610100900460ff16610be05760405162461bcd60e51b815260206004820152601d60248201527f4e616d65206f766572777269746520616c7265616479206c6f636b656400000060448201526064015b60405180910390fd5b600c805461ff0019169055565b8251845114610c305760405162461bcd60e51b815260206004820152600f60248201526e098cadccee8d040dad2e6dac2e8c6d608b1b6044820152606401610bd7565b81845114610c745760405162461bcd60e51b81526020600482015260116024820152700a2eac2dce8d2e8f240dad2e6dac2e8c6d607b1b6044820152606401610bd7565b6032821115610cb75760405162461bcd60e51b815260206004820152600f60248201526e426174636820746f6f206c6172676560881b6044820152606401610bd7565b5f8211610d065760405162461bcd60e51b815260206004820152601f60248201527f5175616e74697479206d7573742062652067726561746572207468616e2030006044820152606401610bd7565b610d11825f196137ed565b600b541115610d6d5760405162461bcd60e51b815260206004820152602260248201527f5061796d656e742063616c63756c6174696f6e20776f756c64206f766572666c6044820152616f7760f01b6064820152608401610bd7565b81600b54610d7b919061380c565b341015610dc15760405162461bcd60e51b8152602060048201526014602482015273125b98dbdc9c9958dd0811551208185b5bdd5b9d60621b6044820152606401610bd7565b600c5462010000900460ff16610e195760405162461bcd60e51b815260206004820181905260248201527f4d696e74696e67206d75737420626520656e61626c65642062792061646d696e6044820152606401610bd7565b614e0d82610e256125eb565b610e2f9190613823565b1115610e7d5760405162461bcd60e51b815260206004820152601f60248201527f4d696e74696e6720776f756c6420657863656564206d617820737570706c79006044820152606401610bd7565b5f8054905b8381101561101c575f868281518110610e9d57610e9d613836565b602002602001015190505f610eca878481518110610ebd57610ebd613836565b60200260200101516125f5565b9050601461ffff831610801590610ee75750614e2061ffff831611155b610f335760405162461bcd60e51b815260206004820152601760248201527f4672657175656e6379206f7574736964652072616e67650000000000000000006044820152606401610bd7565b61ffff82165f908152600d602052604090206001015460ff1615610f945760405162461bcd60e51b8152602060048201526018602482015277119c995c5d595b98de48185b1c9958591e481b5a5b9d195960421b6044820152606401610bd7565b610fb6878481518110610fa957610fa9613836565b6020026020010151612740565b610fd25760405162461bcd60e51b8152600401610bd79061384a565b600f81604051610fe29190613879565b9081526040519081900360200190205460ff16156110125760405162461bcd60e51b8152600401610bd790613884565b5050600101610e82565b50611027828461283e565b5f5b83811015611153575f61103c8284613823565b90505f87838151811061105157611051613836565b602002602001015190505f611071888581518110610ebd57610ebd613836565b60408051606081018252858152600160208083018281525f84860181815261ffff8a16808352600d8552878320965187559251948601805460ff1916951515959095179094559251600290940193909355878252600e905291909120805461ffff1916909117905588519091508890859081106110f0576110f0613836565b602002602001015160105f8581526020019081526020015f20908161111591906138f3565b506001600f826040516111289190613879565b908152604051908190036020019020805491151560ff19909216919091179055505050600101611029565b50816001600160a01b03167f831f34ea4c2439ebfde45b2a576f190d61d046696ffd50910d0483fb9d553399868660405161118f9291906139ad565b60405180910390a25050505050565b6111a66125be565b600c5460ff166111ea5760405162461bcd60e51b815260206004820152600f60248201526e141c9a58d9481a5cc81b1bd8dad959608a1b6044820152606401610bd7565b600b8190556040518181527f25b1f9f6b6e61dfca5575239769e4450ed2e49176670837f5d1a82a9a2fc693f9060200160405180910390a150565b61123f83838360405180602001604052805f815250611c0c565b505050565b61124c6125be565b600c5460ff166112955760405162461bcd60e51b8152602060048201526014602482015273141c9a58d948185b1c9958591e481b1bd8dad95960621b6044820152606401610bd7565b600c805460ff19169055565b5f61091082612526565b606081831061130c5760405162461bcd60e51b815260206004820152602760248201527f537461727420696e646578206d757374206265206c657373207468616e20656e6044820152660c840d2dcc8caf60cb1b6064820152608401610bd7565b6113146125eb565b8211156113635760405162461bcd60e51b815260206004820152601760248201527f456e6420696e646578206f7574206f6620626f756e64730000000000000000006044820152606401610bd7565b5f61136e8484613a22565b90505f816001600160401b038111156113895761138961308e565b6040519080825280602002602001820160405280156113b2578160200160208202803683370190505b5090505f5b8281101561141457600e5f6113cc8389613823565b81526020019081526020015f205f9054906101000a900461ffff168282815181106113f9576113f9613836565b61ffff909216602092830291909101909101526001016113b7565b50949350505050565b5f6001600160a01b03821661143c5761143c6323d3ad8160e21b61247d565b506001600160a01b03165f908152600560205260409020546001600160401b031690565b6114686125be565b6114715f612857565b565b80518251146114d05760405162461bcd60e51b815260206004820152602360248201527f546f6b656e2049447320616e64206e616d6573206c656e677468206d69736d616044820152620e8c6d60eb1b6064820152608401610bd7565b6032825111156115145760405162461bcd60e51b815260206004820152600f60248201526e426174636820746f6f206c6172676560881b6044820152606401610bd7565b5f5b825181101561123f5761155b83828151811061153457611534613836565b602002602001015183838151811061154e5761154e613836565b60200260200101516115eb565b600101611516565b606060038054610925906135b7565b335f8181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b5f6115e66125eb565b905090565b336115f5836112a1565b6001600160a01b03161461164b5760405162461bcd60e51b815260206004820152601960248201527f43616c6c6572206973206e6f7420746f6b656e206f776e6572000000000000006044820152606401610bd7565b5f611655826125f5565b5f848152600e602052604090205490915061ffff1661167383612740565b61168f5760405162461bcd60e51b8152600401610bd79061384a565b600f8260405161169f9190613879565b9081526040519081900360200190205460ff16156116cf5760405162461bcd60e51b8152600401610bd790613884565b5f84815260106020526040812080546116e7906135b7565b80601f0160208091040260200160405190810160405280929190818152602001828054611713906135b7565b801561175e5780601f106117355761010080835404028352916020019161175e565b820191905f5260205f20905b81548152906001019060200180831161174157829003601f168201915b5050505050905080515f146117a7575f600f611779836125f5565b6040516117869190613879565b908152604051908190036020019020805491151560ff199092169190911790555b5f8581526010602052604090206117be85826138f3565b5061ffff82165f908152600d602052604081206002018054916117e083613a35565b91905055506001600f846040516117f79190613879565b908152604051908190036020018120805492151560ff1990931692909217909155859033907fbf30bc8d4de7bde422ca6d4ac0260e39879aef61e4fd8a3b6f0afa8e5ab2ac799061184b9086908990613a4d565b60405180910390a36040518581527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a15050505050565b5f600f611899836125f5565b6040516118a69190613879565b9081526040519081900360200190205460ff1692915050565b600b543410156119115760405162461bcd60e51b815260206004820152601760248201527f496e73756666696369656e742045544820616d6f756e740000000000000000006044820152606401610bd7565b600c5462010000900460ff166119695760405162461bcd60e51b815260206004820181905260248201527f4d696e74696e67206d75737420626520656e61626c65642062792061646d696e6044820152606401610bd7565b614e0d6119746125eb565b106119c15760405162461bcd60e51b815260206004820152601f60248201527f4d696e74696e6720776f756c6420657863656564206d617820737570706c79006044820152606401610bd7565b601461ffff8416108015906119dc5750614e2061ffff841611155b611a365760405162461bcd60e51b815260206004820152602560248201527f4672657175656e6379206f7574736964652068756d616e2068656172696e672060448201526472616e676560d81b6064820152608401610bd7565b61ffff83165f908152600d602052604090206001015460ff1615611a975760405162461bcd60e51b8152602060048201526018602482015277119c995c5d595b98de48185b1c9958591e481b5a5b9d195960421b6044820152606401610bd7565b5f611aa1836125f5565b9050611aac83612740565b611ac85760405162461bcd60e51b8152600401610bd79061384a565b600f81604051611ad89190613879565b9081526040519081900360200190205460ff1615611b085760405162461bcd60e51b8152600401610bd790613884565b5f54611b1583600161283e565b60408051606081018252828152600160208083018281525f84860181815261ffff8c16808352600d8552878320965187559251948601805460ff1916951515959095179094559251600290940193909355848252600e8152838220805461ffff1916909317909255601090915220611b8d85826138f3565b506001600f83604051611ba09190613879565b908152604051908190036020018120805492151560ff199093169290921790915581906001600160a01b038516907f2b2b269bd90dcfa6f344b9d932f1b87aac4f289fcd824502dc30cee33ded36b090611bfd9089908990613a4d565b60405180910390a35050505050565b611c17848484610a06565b6001600160a01b0383163b15611c4757611c33848484846128a8565b611c4757611c476368d2bf6b60e11b61247d565b50505050565b611c556125be565b600c54610100900460ff16611cac5760405162461bcd60e51b815260206004820152601b60248201527f41646d696e206e616d65206368616e6765732064697361626c656400000000006044820152606401610bd7565b5f828152600e602052604081205461ffff1690611cc8836125f5565b9050611cd383612740565b611cef5760405162461bcd60e51b8152600401610bd79061384a565b600f81604051611cff9190613879565b9081526040519081900360200190205460ff1615611d2f5760405162461bcd60e51b8152600401610bd790613884565b61ffff82165f908152600d602052604090206001015460ff16611d8b5760405162461bcd60e51b8152602060048201526014602482015273119c995c5d595b98de481b9bdd081b5a5b9d195960621b6044820152606401610bd7565b5f8481526010602052604081208054611da3906135b7565b80601f0160208091040260200160405190810160405280929190818152602001828054611dcf906135b7565b8015611e1a5780601f10611df157610100808354040283529160200191611e1a565b820191905f5260205f20905b815481529060010190602001808311611dfd57829003601f168201915b5050505050905080515f14611e63575f600f611e35836125f5565b604051611e429190613879565b908152604051908190036020019020805491151560ff199092169190911790555b5f858152601060205260409020611e7a85826138f3565b506001600f83604051611e8d9190613879565b908152604051908190036020019020805491151560ff1990921691909117905584611eb7816112a1565b6001600160a01b03167fbf30bc8d4de7bde422ca6d4ac0260e39879aef61e4fd8a3b6f0afa8e5ab2ac79858760405161184b929190613a4d565b611ef96125be565b611f01612987565b4780611f4f5760405162461bcd60e51b815260206004820152601960248201527f4e6f206574686572206c65667420746f207769746864726177000000000000006044820152606401610bd7565b5f611f626009546001600160a01b031690565b6001600160a01b0316826040515f6040518083038185875af1925050503d805f8114611fa9576040519150601f19603f3d011682016040523d82523d5f602084013e611fae565b606091505b5050905080611ff25760405162461bcd60e51b815260206004820152601060248201526f2a3930b739b332b9103330b4b632b21760811b6044820152606401610bd7565b50506114716001600a55565b61202160405180606001604052805f81526020015f151581526020015f81525090565b61ffff82165f908152600d602052604090206001015460ff1661207d5760405162461bcd60e51b8152602060048201526014602482015273119c995c5d595b98de481b9bdd081b5a5b9d195960621b6044820152606401610bd7565b5061ffff165f908152600d6020908152604091829020825160608101845281548152600182015460ff16151592810192909252600201549181019190915290565b60605f6120ca836112a1565b6001600160a01b0316036121205760405162461bcd60e51b815260206004820152601f60248201527f55524920717565727920666f72206e6f6e6578697374656e7420746f6b656e006044820152606401610bd7565b61091082610785565b6121316125be565b600c805462ff0000198116620100009182900460ff1615909102179055565b60106020525f908152604090208054612168906135b7565b80601f0160208091040260200160405190810160405280929190818152602001828054612194906135b7565b80156121df5780601f106121b6576101008083540402835291602001916121df565b820191905f5260205f20905b8154815290600101906020018083116121c257829003601f168201915b505050505081565b6121ef6125be565b6001600160a01b03811661221857604051631e4fbdf760e01b81525f6004820152602401610bd7565b61222181612857565b50565b60605f60648361ffff161161223b575060026122a8565b6101f48361ffff1611612250575060036122a8565b6103e88361ffff1611612265575060046122a8565b6113888361ffff161161227a575060056122a8565b6127108361ffff161161228f575060066122a8565b613a988361ffff16116122a4575060076122a8565b5060085b606060648461ffff16116122d65750604080518082019091526003815262322e3560e81b602082015261234c565b6103e88461ffff161161230357506040805180820190915260038152620322e360ec1b602082015261234c565b6127108461ffff16116123305750604080518082019091526003815262312e3560e81b602082015261234c565b506040805180820190915260038152620312e360ec1b60208201525b5f612356836129b1565b905061237c818361236a8861ffff16612385565b60405160200161088693929190613a69565b95945050505050565b60605f61239183612bdb565b60010190505f816001600160401b038111156123af576123af61308e565b6040519080825280601f01601f1916602001820160405280156123d9576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846123e3575b509392505050565b606061091082604051806060016040528060408152602001613dc3604091396001612cb2565b5f5f54821015612478575f5b505f828152600460205260408120549081900361246e5761246783613c1d565b9250612447565b600160e01b161590505b919050565b805f5260045ffd5b5f61248f836112a1565b90508180156124a75750336001600160a01b03821614155b156124ca576124b68133610739565b6124ca576124ca6367d9dca160e11b61247d565b5f8381526006602052604080822080546001600160a01b0319166001600160a01b0388811691821790925591518693918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a450505050565b5f81815260046020526040902054805f03612593575f54821061255357612553636f96cda160e11b61247d565b5b505f19015f81815260046020526040902054801561255457600160e01b81165f0361257e57919050565b61258e636f96cda160e11b61247d565b612554565b600160e01b81165f036125a557919050565b612478636f96cda160e11b61247d565b5f5b9392505050565b6009546001600160a01b031633146114715760405163118cdaa760e01b8152336004820152602401610bd7565b5f545f19806109f9565b60605f8290505f81516001600160401b038111156126155761261561308e565b6040519080825280601f01601f19166020018201604052801561263f576020820181803683370190505b5090505f5b825181101561240d57604183828151811061266157612661613836565b016020015160f81c108015906126915750605a83828151811061268657612686613836565b016020015160f81c11155b156126f2578281815181106126a8576126a8613836565b602001015160f81c60f81b60f81c60206126c29190613c32565b60f81b8282815181106126d7576126d7613836565b60200101906001600160f81b03191690815f1a905350612738565b82818151811061270457612704613836565b602001015160f81c60f81b82828151811061272157612721613836565b60200101906001600160f81b03191690815f1a9053505b600101612644565b80515f9082901580612753575060208151115b1561276057505f92915050565b5f5b8151811015612834575f82828151811061277e5761277e613836565b01602001516001600160f81b0319169050600360fc1b81108015906127b15750603960f81b6001600160f81b0319821611155b1580156127e75750604160f81b6001600160f81b03198216108015906127e55750602d60f91b6001600160f81b0319821611155b155b801561281c5750606160f81b6001600160f81b031982161080159061281a5750603d60f91b6001600160f81b0319821611155b155b1561282b57505f949350505050565b50600101612762565b5060019392505050565b6109eb828260405180602001604052805f815250612e2c565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b604051630a85bd0160e11b81525f906001600160a01b0385169063150b7a02906128dc903390899088908890600401613c4b565b6020604051808303815f875af1925050508015612916575060408051601f3d908101601f1916820190925261291391810190613c7d565b60015b612969573d808015612943576040519150601f19603f3d011682016040523d82523d5f602084013e612948565b606091505b5080515f03612961576129616368d2bf6b60e11b61247d565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490505b949350505050565b6002600a54036129aa57604051633ee5aeb560e01b815260040160405180910390fd5b6002600a55565b6060815f036129bf57600191505b60408051808201909152600681526504d20302035360d41b60208201525f5b83811015612bd4575f846129f383606461380c565b6129fd91906137ed565b90505f85612a0c846001613823565b612a1790606461380c565b612a2191906137ed565b90506064811115612a30575060645b5f6004612a3d8484613a22565b612a4791906137ed565b90505f612a548285613823565b90505f612a6283600261380c565b612a6c9086613823565b90505f612a7a84600361380c565b612a849087613823565b9050846064841115612a9557606493505b6064831115612aa357606492505b6064821115612ab157606491505b6064811115612abe575060645b88612add6002612ace878b613823565b612ad891906137ed565b612385565b612ae686612385565b604051602001612af893929190613c98565b60408051601f19818403018152919052985088612b1a6002612ace8688613823565b612b2385612385565b604051602001612b3593929190613ce8565b60408051601f19818403018152919052985088612b576002612ace8587613823565b612b6084612385565b604051602001612b7293929190613d38565b60408051601f19818403018152919052985088612b946002612ace8486613823565b612b9d83612385565b604051602001612baf93929190613d88565b60405160208183030381529060405298505050505050505080806001019150506129de565b5092915050565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310612c195772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310612c45576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310612c6357662386f26fc10000830492506010015b6305f5e1008310612c7b576305f5e100830492506008015b6127108310612c8f57612710830492506004015b60648310612ca1576064830492506002015b600a83106109105760010192915050565b606083515f03612cd0575060408051602081019091525f81526125b7565b5f82612d0057600385516004612ce6919061380c565b612cf1906002613823565b612cfb91906137ed565b612d25565b600385516002612d109190613823565b612d1a91906137ed565b612d2590600461380c565b90505f816001600160401b03811115612d4057612d4061308e565b6040519080825280601f01601f191660200182016040528015612d6a576020820181803683370190505b509050600185016020820187885189016020810180515f82525b82841015612ddf576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f8116870151865350600185019450612d84565b905250508515612e2057600388510660018114612e035760028114612e1657612e1e565b603d6001830353603d6002830353612e1e565b603d60018303535b505b50909695505050505050565b612e368383612e8c565b6001600160a01b0383163b1561123f575f548281035b612e5e5f8683806001019450866128a8565b612e7257612e726368d2bf6b60e11b61247d565b818110612e4c57815f5414612e85575f5ffd5b5050505050565b5f805490829003612ea757612ea763b562e8dd60e01b61247d565b612ed383612eb65f865f6125b5565b6001851460e11b174260a01b176001600160a01b03919091161790565b5f828152600460209081526040808320939093556001600160a01b03861680835260059091529181208054680100000000000000018602019055819003612f2357612f23622e076360e81b61247d565b818301825b80835f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f5fa4818160010191508103612f2857505f5550505050565b5f60208284031215612f75575f5ffd5b5035919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6125b76020830184612f7c565b6001600160e01b031981168114612221575f5ffd5b5f60208284031215612fe1575f5ffd5b81356125b781612fbc565b80356001600160a01b0381168114612478575f5ffd5b5f5f60408385031215613013575f5ffd5b61301c83612fec565b946020939093013593505050565b5f5f5f6060848603121561303c575f5ffd5b61304584612fec565b925061305360208501612fec565b929592945050506040919091013590565b803561ffff81168114612478575f5ffd5b5f60208284031215613085575f5ffd5b6125b782613064565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156130ca576130ca61308e565b604052919050565b5f6001600160401b038211156130ea576130ea61308e565b5060051b60200190565b5f5f6001600160401b0384111561310d5761310d61308e565b50601f8301601f1916602001613122816130a2565b915050828152838383011115613136575f5ffd5b828260208301375f602084830101529392505050565b5f82601f83011261315b575f5ffd5b6125b7838335602085016130f4565b5f82601f830112613179575f5ffd5b813561318c613187826130d2565b6130a2565b8082825260208201915060208360051b8601019250858311156131ad575f5ffd5b602085015b838110156131ed5780356001600160401b038111156131cf575f5ffd5b6131de886020838a010161314c565b845250602092830192016131b2565b5095945050505050565b5f5f5f5f6080858703121561320a575f5ffd5b84356001600160401b0381111561321f575f5ffd5b8501601f8101871361322f575f5ffd5b803561323d613187826130d2565b8082825260208201915060208360051b85010192508983111561325e575f5ffd5b6020840193505b828410156132875761327684613064565b825260209384019390910190613265565b965050505060208501356001600160401b038111156132a4575f5ffd5b6132b08782880161316a565b935050604085013591506132c660608601612fec565b905092959194509250565b5f5f604083850312156132e2575f5ffd5b50508035926020909101359150565b5f8151808452602084019350602083015f5b8281101561332557815161ffff16865260209586019590910190600101613303565b5093949350505050565b602081525f6125b760208301846132f1565b5f60208284031215613351575f5ffd5b6125b782612fec565b5f5f6040838503121561336b575f5ffd5b82356001600160401b03811115613380575f5ffd5b8301601f81018513613390575f5ffd5b803561339e613187826130d2565b8082825260208201915060208360051b8501019250878311156133bf575f5ffd5b6020840193505b828410156133e15783358252602093840193909101906133c6565b945050505060208301356001600160401b038111156133fe575f5ffd5b61340a8582860161316a565b9150509250929050565b5f5f60408385031215613425575f5ffd5b61342e83612fec565b915060208301358015158114613442575f5ffd5b809150509250929050565b5f5f6040838503121561345e575f5ffd5b8235915060208301356001600160401b0381111561347a575f5ffd5b61340a8582860161314c565b5f60208284031215613496575f5ffd5b81356001600160401b038111156134ab575f5ffd5b61297f8482850161314c565b5f5f5f606084860312156134c9575f5ffd5b6134d284613064565b925060208401356001600160401b038111156134ec575f5ffd5b6134f88682870161314c565b92505061350760408501612fec565b90509250925092565b5f5f5f5f60808587031215613523575f5ffd5b61352c85612fec565b935061353a60208601612fec565b92506040850135915060608501356001600160401b0381111561355b575f5ffd5b8501601f8101871361356b575f5ffd5b61357a878235602084016130f4565b91505092959194509250565b5f5f60408385031215613597575f5ffd5b6135a083612fec565b91506135ae60208401612fec565b90509250929050565b600181811c908216806135cb57607f821691505b6020821081036135e957634e487b7160e01b5f52602260045260245ffd5b50919050565b5f81518060208401855e5f93019283525090919050565b7f5b7b2274726169745f74797065223a224672657175656e6379222c2276616c7581526332911d1160e11b60208201525f61364460248301856135ef565b6508121e889f4b60d21b81527f7b2274726169745f74797065223a22546f6e65204e616d65222c2276616c7565600682015262111d1160e91b602682015261368f60298201856135ef565b62227d5d60e81b815260030195945050505050565b741ec89b985b59488e8890985cd948151bdb995cc88b605a1b81527f226465736372697074696f6e223a224261736520546f6e65732069732074686560158201527f204e465420636f6c6c656374696f6e20666f7220657665727920746f6e6520746035820152751a185d081a1d5b585b9cc818d85b881a19585c8b888b60521b60558201527f22696d616765223a22646174613a696d6167652f7376672b786d6c3b62617365606b820152620d8d0b60ea1b608b8201525f61376a608e8301856135ef565b61088b60f21b81526c1130ba3a3934b13aba32b9911d60991b6002820152613795600f8201856135ef565b607d60f81b815260010195945050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081525f6125b7601d8301846135ef565b634e487b7160e01b5f52601160045260245ffd5b5f8261380757634e487b7160e01b5f52601260045260245ffd5b500490565b8082028115828204841417610910576109106137d9565b80820180821115610910576109106137d9565b634e487b7160e01b5f52603260045260245ffd5b602080825260159082015274125b9d985b1a59081b985b59481c1c9bdd9a591959605a1b604082015260600190565b5f6125b782846135ef565b60208082526011908201527013985b5948185b1c9958591e481d5cd959607a1b604082015260600190565b601f82111561123f57805f5260205f20601f840160051c810160208510156138d45750805b601f840160051c820191505b81811015612e85575f81556001016138e0565b81516001600160401b0381111561390c5761390c61308e565b6139208161391a84546135b7565b846138af565b6020601f821160018114613952575f831561393b5750848201515b5f19600385901b1c1916600184901b178455612e85565b5f84815260208120601f198516915b828110156139815787850151825560209485019460019092019101613961565b508482101561399e57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b604081525f6139bf60408301856132f1565b828103602084015280845180835260208301915060208160051b840101602087015f5b83811015613a1457601f198684030185526139fe838351612f7c565b60209586019590935091909101906001016139e2565b509098975050505050505050565b81810381811115610910576109106137d9565b5f60018201613a4657613a466137d9565b5060010190565b61ffff83168152604060208201525f61297f6040830184612f7c565b7f3c73766720786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323081527f30302f737667222076696577426f783d223020302031303020313030223e000060208201527f3c726563742077696474683d2231303022206865696768743d22313030222066603e8201526c34b6361e913bb434ba3291179f60991b605e820152681e3830ba3410321e9160b91b606b8201525f613b0e60748301866135ef565b7f22207374726f6b653d22626c61636b22207374726f6b652d77696474683d22008152613b3e601f8201866135ef565b6e11103334b6361e913737b73291179f60891b81527f3c7465787420783d2239352220793d2239352220746578742d616e63686f723d600f8201527f22656e64222066696c6c3d22626c61636b2220666f6e742d73697a653d223822602f8201527f20666f6e742d66616d696c793d22417269616c2220666f6e742d776569676874604f820152671e913137b632111f60c11b606f8201529050613c13613c01613beb60778401876135ef565b6910243d1e17ba32bc3a1f60b11b8152600a0190565b651e17b9bb339f60d11b815260060190565b9695505050505050565b5f81613c2b57613c2b6137d9565b505f190190565b60ff8181168382160190811115610910576109106137d9565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f90613c1390830184612f7c565b5f60208284031215613c8d575f5ffd5b81516125b781612fbc565b5f613ca382866135ef565b6201028960ed1b8152613cb960038201866135ef565b905063010191a960e51b8152613cd260048201856135ef565b6220323560e81b81526003019695505050505050565b5f613cf382866135ef565b6201028960ed1b8152613d0960038201866135ef565b905063010191a960e51b8152613d2260048201856135ef565b6202035360ec1b81526003019695505050505050565b5f613d4382866135ef565b6201028960ed1b8152613d5960038201866135ef565b9050630101b9a960e51b8152613d7260048201856135ef565b6220373560e81b81526003019695505050505050565b5f613d9382866135ef565b6201028960ed1b8152613da960038201866135ef565b9050630101b9a960e51b8152613d2260048201856135ef56fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa264697066735822122087dca541e677abb7f01b4cae58bc008db819c833fc66c6faa434983db1d2a67964736f6c634300081c0033