0 txs
4.4k calls
constructor
No constructor.
functions
addressMintCount
viewfunction addressMintCount(address) view returns (uint256)
balanceOf
viewfunction balanceOf(address owner) view returns (uint256)
calculateTokenReward
viewfunction calculateTokenReward(uint256 tokenId) view returns (uint256)
clubTokenAddress
viewfunction clubTokenAddress() view returns (address)
currentPhase
viewfunction currentPhase() view returns (uint8)
dropConfig
viewfunction dropConfig() view returns (uint256 whitelistDuration, uint256 publicMintDuration, uint256 startingPrice, uint256 priceCurveRate, uint256 maxSupply, uint256 maxMintsPerAddress, string baseURI, uint256 vestingDuration, uint256 initialRedemptionRate)
feeReceiver
viewfunction feeReceiver() view returns (address)
getApproved
viewfunction getApproved(uint256 tokenId) view returns (address)
getCurrentMintPrice
viewfunction getCurrentMintPrice() view returns (uint256)
isApprovedForAll
viewfunction isApprovedForAll(address owner, address operator) view returns (bool)
MAX_BPS
viewfunction MAX_BPS() view returns (uint256)
name
viewfunction name() view returns (string)
nftData
viewfunction nftData(uint256) view returns (uint256 mintPrice, uint256 mintTimestamp, bool isBurned, uint256 burnTimestamp)
owner
viewfunction owner() view returns (address)
ownerOf
viewfunction ownerOf(uint256 tokenId) view returns (address)
paused
viewfunction paused() view returns (bool)
phaseEndTime
viewfunction phaseEndTime() view returns (uint256)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
tokenByIndex
viewfunction tokenByIndex(uint256 index) view returns (uint256)
tokenOfOwnerByIndex
viewfunction tokenOfOwnerByIndex(address owner, uint256 index) view returns (uint256)
tokenURI
viewfunction tokenURI(uint256 tokenId) view returns (string)
totalBurned
viewfunction totalBurned() view returns (uint256)
totalMinted
viewfunction totalMinted() view returns (uint256)
totalProceeds
viewfunction totalProceeds() view returns (uint256)
totalSupply
viewfunction totalSupply() view returns (uint256)
verifyWhitelist
viewfunction verifyWhitelist(address account, bytes32[] proof) view returns (bool)
wethAddress
viewfunction wethAddress() view returns (address)
whitelistMerkleRoot
viewfunction whitelistMerkleRoot() view returns (bytes32)
advancePhase
nonpayablefunction advancePhase()
approve
nonpayablefunction approve(address to, uint256 tokenId)
burnNFTForTokens
nonpayablefunction burnNFTForTokens(uint256 tokenId)
emergencyWithdraw
nonpayablefunction emergencyWithdraw() returns (uint256)
initialize
nonpayablefunction initialize(address _owner, string _nftName, string _nftSymbol, address _wethAddress, tuple _dropConfig)
pause
nonpayablefunction pause()
publicMint
payablefunction publicMint(uint256 quantity) payable
renounceOwnership
nonpayablefunction renounceOwnership()
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId, bytes data)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId)
setApprovalForAll
nonpayablefunction setApprovalForAll(address operator, bool approved)
setBaseURI
nonpayablefunction setBaseURI(string baseURI_)
setFeeReceiver
nonpayablefunction setFeeReceiver(address _feeReceiver)
setTokenContract
nonpayablefunction setTokenContract(address _tokenAddress)
setWhitelistMerkleRoot
nonpayablefunction setWhitelistMerkleRoot(bytes32 _merkleRoot)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 tokenId)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
updateDropConfig
nonpayablefunction updateDropConfig(tuple _dropConfig)
whitelistMint
payablefunction whitelistMint(bytes32[] merkleProof, uint256 quantity) payable
withdrawProceedsAndSetupLiquidity
nonpayablefunction withdrawProceedsAndSetupLiquidity() returns (uint256)
events
Approval
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
ApprovalForAll
event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
BaseURIUpdated
event BaseURIUpdated(string newBaseURI)
DropConfigUpdated
event DropConfigUpdated((uint256 whitelistDuration, uint256 publicMintDuration, uint256 startingPrice, uint256 priceCurveRate, uint256 maxSupply, uint256 maxMintsPerAddress, string baseURI, uint256 vestingDuration, uint256 initialRedemptionRate) newConfig)
FeeReceiverUpdated
event FeeReceiverUpdated(address indexed previousReceiver, address indexed newReceiver)
Initialized
event Initialized(uint64 version)
Minted
event Minted(address indexed to, uint256 indexed tokenId, uint256 price)
NFTBurned
event NFTBurned(address indexed owner, uint256 indexed tokenId, uint256 tokenAmount)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
PhaseAdvanced
event PhaseAdvanced(uint8 newPhase, uint256 endTime)
ProceedsWithdrawn
event ProceedsWithdrawn(uint256 totalAmount, uint256 lpFeeAmount, address tokenContract)
TokenContractSet
event TokenContractSet(address tokenContract)
Transfer
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
Unpaused
event Unpaused(address account)
WhitelistMerkleRootUpdated
event WhitelistMerkleRootUpdated(bytes32 newMerkleRoot)
errors
AddressZero
error AddressZero()
EnforcedPause
error EnforcedPause()
ERC721EnumerableForbiddenBatchMint
error ERC721EnumerableForbiddenBatchMint()
ERC721IncorrectOwner
error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner)
ERC721InsufficientApproval
error ERC721InsufficientApproval(address operator, uint256 tokenId)
ERC721InvalidApprover
error ERC721InvalidApprover(address approver)
ERC721InvalidOperator
error ERC721InvalidOperator(address operator)
ERC721InvalidOwner
error ERC721InvalidOwner(address owner)
ERC721InvalidReceiver
error ERC721InvalidReceiver(address receiver)
ERC721InvalidSender
error ERC721InvalidSender(address sender)
ERC721NonexistentToken
error ERC721NonexistentToken(uint256 tokenId)
ERC721OutOfBoundsIndex
error ERC721OutOfBoundsIndex(address owner, uint256 index)
ExpectedPause
error ExpectedPause()
InvalidDuration
error InvalidDuration()
InvalidInitialization
error InvalidInitialization()
InvalidMaxMints
error InvalidMaxMints()
InvalidMaxSupply
error InvalidMaxSupply()
InvalidMerkleProof
error InvalidMerkleProof()
InvalidPhase
error InvalidPhase()
InvalidPrice
error InvalidPrice()
InvalidRate
error InvalidRate()
MaxMintsPerAddressReached
error MaxMintsPerAddressReached()
MaxSupplyReached
error MaxSupplyReached()
NFTAlreadyBurned
error NFTAlreadyBurned()
NotInitializing
error NotInitializing()
NotNFTOwner
error NotNFTOwner()
NotWhitelisted
error NotWhitelisted()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
PhaseNotEnded
error PhaseNotEnded()
PriceTooLow
error PriceTooLow()
ProceedsTooLow
error ProceedsTooLow()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SaleNotEnded
error SaleNotEnded()
TokenContractNotSet
error TokenContractNotSet()
creation bytecode
0x6080604052348015600f57600080fd5b506142998061001f6000396000f3fe6080604052600436106102cd5760003560e01c80638456cb5911610175578063be25a718116100dc578063e82ded2111610095578063f1db23dc1161006f578063f1db23dc146108a2578063f2fde38b146108b8578063fd967f47146108d8578063ff553b03146108ee57600080fd5b8063e82ded211461084d578063e985e9c514610862578063efdcd9741461088257600080fd5b8063be25a718146107ad578063c03d55a5146107c2578063c5770440146107e2578063c87b56dd14610802578063d89135cd14610822578063db2e21bc1461083857600080fd5b8063a97020eb1161012e578063a97020eb146106ed578063aa98e0c614610717578063b3f006741461072d578063b88d4fde1461074d578063bbcd5bbe1461076d578063bd32fb661461078d57600080fd5b80638456cb591461060a5780638c2109751461061f5780638da5cb5b1461068d57806395d89b41146106a2578063a22cb465146106b7578063a2309ff8146106d757600080fd5b806330700852116102345780634f0e0ef3116101ed5780635c975abb116101c75780635c975abb146105905780636352211e146105b557806370a08231146105d5578063715018a6146105f557600080fd5b80634f0e0ef3146105305780634f6ccce71461055057806355f804b31461057057600080fd5b806330700852146104905780633ca501ea146104a65780633f4ba83a146104bb57806341ef3caa146104d057806342842e0e146104f057806343febfbc1461051057600080fd5b806318160ddd1161028657806318160ddd146103d15780631ba4f67d146103fd57806323b872dd1461042a5780632904e6d91461044a5780632db115441461045d5780632f745c591461047057600080fd5b806301ffc9a7146102d9578063055ad42e1461030e57806306fdde0314610335578063081812fc14610357578063095ea7b31461038f57806315c6cd8f146103b157600080fd5b366102d457005b600080fd5b3480156102e557600080fd5b506102f96102f4366004613571565b61090e565b60405190151581526020015b60405180910390f35b34801561031a57600080fd5b506000546103289060ff1681565b60405161030591906135c6565b34801561034157600080fd5b5061034a610939565b6040516103059190613624565b34801561036357600080fd5b50610377610372366004613637565b6109dd565b6040516001600160a01b039091168152602001610305565b34801561039b57600080fd5b506103af6103aa366004613665565b6109f2565b005b3480156103bd57600080fd5b506102f96103cc3660046136dc565b610a01565b3480156103dd57600080fd5b50600080516020614204833981519152545b604051908152602001610305565b34801561040957600080fd5b506103ef610418366004613730565b60136020526000908152604090205481565b34801561043657600080fd5b506103af61044536600461374d565b610a19565b6103af61045836600461378e565b610aa9565b6103af61046b366004613637565b610b5a565b34801561047c57600080fd5b506103ef61048b366004613665565b610be1565b34801561049c57600080fd5b506103ef60015481565b3480156104b257600080fd5b506103ef610c55565b3480156104c757600080fd5b506103af610eef565b3480156104dc57600080fd5b50600554610377906001600160a01b031681565b3480156104fc57600080fd5b506103af61050b36600461374d565b610f01565b34801561051c57600080fd5b506103af61052b3660046137d9565b610f1c565b34801561053c57600080fd5b50600654610377906001600160a01b031681565b34801561055c57600080fd5b506103ef61056b366004613637565b610f7f565b34801561057c57600080fd5b506103af61058b366004613814565b610ff7565b34801561059c57600080fd5b506000805160206142248339815191525460ff166102f9565b3480156105c157600080fd5b506103776105d0366004613637565b61104a565b3480156105e157600080fd5b506103ef6105f0366004613730565b611055565b34801561060157600080fd5b506103af6110b1565b34801561061657600080fd5b506103af6110c3565b34801561062b57600080fd5b5061066761063a366004613637565b60126020526000908152604090208054600182015460028301546003909301549192909160ff9091169084565b604080519485526020850193909352901515918301919091526060820152608001610305565b34801561069957600080fd5b506103776110d3565b3480156106ae57600080fd5b5061034a611101565b3480156106c357600080fd5b506103af6106d2366004613886565b611140565b3480156106e357600080fd5b506103ef60025481565b3480156106f957600080fd5b5061070261114b565b604051610305999897969594939291906138c4565b34801561072357600080fd5b506103ef60115481565b34801561073957600080fd5b50600754610377906001600160a01b031681565b34801561075957600080fd5b506103af6107683660046139cd565b611206565b34801561077957600080fd5b506103af610788366004613730565b61121e565b34801561079957600080fd5b506103af6107a8366004613637565b611417565b3480156107b957600080fd5b506103af6114af565b3480156107ce57600080fd5b506103ef6107dd366004613637565b6114d6565b3480156107ee57600080fd5b506103af6107fd366004613637565b611789565b34801561080e57600080fd5b5061034a61081d366004613637565b61195c565b34801561082e57600080fd5b506103ef60035481565b34801561084457600080fd5b506103ef611a4a565b34801561085957600080fd5b506103ef611b9e565b34801561086e57600080fd5b506102f961087d366004613a4c565b611bee565b34801561088e57600080fd5b506103af61089d366004613730565b611c3b565b3480156108ae57600080fd5b506103ef60045481565b3480156108c457600080fd5b506103af6108d3366004613730565b611cbc565b3480156108e457600080fd5b506103ef61271081565b3480156108fa57600080fd5b506103af610909366004613b35565b611cf7565b60006001600160e01b0319821663780e9d6360e01b1480610933575061093382611f5f565b92915050565b6000805160206141e4833981519152805460609190819061095990613bec565b80601f016020809104026020016040519081016040528092919081815260200182805461098590613bec565b80156109d25780601f106109a7576101008083540402835291602001916109d2565b820191906000526020600020905b8154815290600101906020018083116109b557829003601f168201915b505050505091505090565b60006109e882611faf565b5061093382611fe7565b6109fd828233612021565b5050565b6000610a1184848460115461202e565b949350505050565b6001600160a01b038216610a4857604051633250574960e11b8152600060048201526024015b60405180910390fd5b6000610a558383336120b4565b9050836001600160a01b0316816001600160a01b031614610aa3576040516364283d7b60e01b81526001600160a01b0380861660048301526024820184905282166044820152606401610a3f565b50505050565b610ab16121ad565b610ab96121e5565b600160005460ff166003811115610ad257610ad261358e565b14610af05760405163268dbf6760e21b815260040160405180910390fd5b610afb338484610a01565b610b1857604051630b094f2760e31b815260040160405180910390fd5b80600003610b24575060015b610b2d81612216565b6001544210610b3e57610b3e61266f565b610b55600160008051602061424483398151915255565b505050565b610b626121ad565b610b6a6121e5565b600260005460ff166003811115610b8357610b8361358e565b14610ba15760405163268dbf6760e21b815260040160405180910390fd5b80600003610bad575060015b610bb681612216565b6001544210610bc757610bc761266f565b610bde600160008051602061424483398151915255565b50565b60006000805160206141c4833981519152610bfb84611055565b8310610c2c5760405163295f44f760e21b81526001600160a01b038516600482015260248101849052604401610a3f565b6001600160a01b0384166000908152602091825260408082208583529092522054905092915050565b6000610c5f612752565b600360005460ff166003811115610c7857610c7861358e565b14610c965760405163268dbf6760e21b815260040160405180910390fd5b476000819003610cb95760405163515308f760e01b815260040160405180910390fd5b6000612710610cca6105dc84613c3c565b610cd49190613c53565b90506000610ce28284613c75565b9050600082118015610cfe57506007546001600160a01b031615155b15610d9e576007546040516000916001600160a01b03169084908381818185875af1925050503d8060008114610d50576040519150601f19603f3d011682016040523d82523d6000602084013e610d55565b606091505b5050905080610d9c5760405162461bcd60e51b8152602060048201526013602482015272119959481d1c985b9cd9995c8819985a5b1959606a1b6044820152606401610a3f565b505b6005546040516000916001600160a01b03169083908381818185875af1925050503d8060008114610deb576040519150601f19603f3d011682016040523d82523d6000602084013e610df0565b606091505b5050905080610e335760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610a3f565b600560009054906101000a90046001600160a01b03166001600160a01b0316632887e7606040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610e8357600080fd5b505af1158015610e97573d6000803e3d6000fd5b505060055460408051888152602081018890526001600160a01b0390921682820152517f47fca148ddc35e012b2b994e0e0bb5ab19f9454d520e9d01cb91f765bf9684459350908190036060019150a1509250505090565b610ef7612752565b610eff612784565b565b610b5583838360405180602001604052806000815250611206565b610f24612752565b610f35610f3082613c88565b6127de565b806008610f428282613de0565b9050507f0ebd2271da98b00e6d40fe8cca8051afc388f741d714ce89dd71fb94dbf40e7881604051610f749190613eba565b60405180910390a150565b60006000805160206141c4833981519152610fa66000805160206142048339815191525490565b8310610fcf5760405163295f44f760e21b81526000600482015260248101849052604401610a3f565b806002018381548110610fe457610fe4613f4c565b9060005260206000200154915050919050565b610fff612752565b600e61100c828483613d21565b507f6741b2fc379fad678116fe3d4d4b9a1a184ab53ba36b86ad0fa66340b1ab41ad828260405161103e929190613f62565b60405180910390a15050565b600061093382611faf565b60006000805160206141e48339815191526001600160a01b038316611090576040516322718ad960e21b815260006004820152602401610a3f565b6001600160a01b039092166000908152600390920160205250604090205490565b6110b9612752565b610eff6000612907565b6110cb612752565b610eff612978565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930180546060916000805160206141e48339815191529161095990613bec565b6109fd3383836129c1565b60088054600954600a54600b54600c54600d54600e805496979596949593949293919261117790613bec565b80601f01602080910402602001604051908101604052809291908181526020018280546111a390613bec565b80156111f05780601f106111c5576101008083540402835291602001916111f0565b820191906000526020600020905b8154815290600101906020018083116111d357829003601f168201915b5050505050908060070154908060080154905089565b611211848484610a19565b610aa33385858585612a72565b6005546001600160a01b031615801590611251575061123b6110d3565b6001600160a01b0316336001600160a01b031614155b156112925760405162461bcd60e51b8152602060048201526011602482015270151bdad95b88185b1c9958591e481cd95d607a1b6044820152606401610a3f565b61129a6110d3565b6001600160a01b0316336001600160a01b0316146113625760008060005460ff1660038111156112cc576112cc61358e565b14806113055750600160005460ff1660038111156112ec576112ec61358e565b148015611305575060015461130290603c613f76565b42105b9050806113605760405162461bcd60e51b815260206004820152602360248201527f4f6e6c79206f776e65722063616e2073657420746f6b656e20616674657220696044820152621b9a5d60ea1b6064820152608401610a3f565b505b6001600160a01b03811661138957604051639fabe1c160e01b815260040160405180910390fd5b803b806113c95760405162461bcd60e51b815260206004820152600e60248201526d139bdd08184818dbdb9d1c9858dd60921b6044820152606401610a3f565b600580546001600160a01b0319166001600160a01b0384169081179091556040519081527f9b64004f1a50e51d3c2809b6a8efbae432bfa889e0b4bf67f75e7db8ca816dba9060200161103e565b61141f612752565b6000805460ff1660038111156114375761143761358e565b1415801561145c5750600160005460ff1660038111156114595761145961358e565b14155b1561147a5760405163268dbf6760e21b815260040160405180910390fd5b60118190556040518181527fdc19f0450677d6677f518d36c8c7261672c50906ed02ca310f5c68f71a868db990602001610f74565b6114b76121ad565b6114bf61266f565b610eff600160008051602061424483398151915255565b6040516331a9108f60e11b8152600481018290526000903090636352211e90602401602060405180830381865afa925050508015611531575060408051601f3d908101601f1916820190925261152e91810190613f89565b60015b61153d57506000919050565b600083815260126020908152604091829020825160808101845281548152600182015492810192909252600281015460ff161580159383019390935260030154606082015290611591575060009392505050565b6005546001600160a01b03166115ab575060009392505050565b60055460408051630cb2dac360e21b815290516000926001600160a01b0316916332cb6b0c9160048083019260209291908290030181865afa925050508015611611575060408051601f3d908101601f1916820190925261160e91810190613fa6565b60015b611629578151611622906064613c3c565b90506116f0565b600560009054906101000a90046001600160a01b03166001600160a01b0316637ed40e736040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611698575060408051601f3d908101601f1916820190925261169591810190613fa6565b60015b6116b05782516116a9906064613c3c565b91506116ee565b600080600254116116c25760016116c6565b6002545b90508060646116d58486613c3c565b6116df9190613c53565b6116e99190613c53565b935050505b505b6000600154426117009190613c75565b600f5490915081106117155750949350505050565b601054600f5460009061172a61271085613c3c565b6117349190613c53565b905060006127106117458482613c75565b61174f9084613c3c565b6117599190613c53565b6117639084613f76565b90506127106117728287613c3c565b61177c9190613c53565b9998505050505050505050565b6117916121ad565b6117996121e5565b600360005460ff1660038111156117b2576117b261358e565b146117d05760405163268dbf6760e21b815260040160405180910390fd5b6005546001600160a01b03166117f957604051634c32eccd60e11b815260040160405180910390fd5b336118038261104a565b6001600160a01b03161461182a57604051631022318760e21b815260040160405180910390fd5b60008181526012602052604090206002015460ff161561185d5760405163c24e555760e01b815260040160405180910390fd5b6000611868826114d6565b600083815260126020526040812060028101805460ff191660011790554260039182015580549293509061189b83613fbf565b91905055506118a982612b94565b600554604051634d24848760e11b8152336004820152602481018390526001600160a01b0390911690639a49090e90604401600060405180830381600087803b1580156118f557600080fd5b505af1158015611909573d6000803e3d6000fd5b50506040518381528492503391507f9e4cd44a214c290e24a6167c728ce9a6e706dce33171779ea77807f9ab73cf879060200160405180910390a350610bde600160008051602061424483398151915255565b60606119678261104a565b5060006008600601805461197a90613bec565b80601f01602080910402602001604051908101604052809291908181526020018280546119a690613bec565b80156119f35780601f106119c8576101008083540402835291602001916119f3565b820191906000526020600020905b8154815290600101906020018083116119d657829003601f168201915b505050505090506000815111611a185760405180602001604052806000815250611a43565b80611a2284612bcf565b604051602001611a33929190613fd8565b6040516020818303038152906040525b9392505050565b6000611a54612752565b600360005460ff166003811115611a6d57611a6d61358e565b14611a8b5760405163268dbf6760e21b815260040160405180910390fd5b476000819003611aae5760405163515308f760e01b815260040160405180910390fd5b6000611ab86110d3565b6001600160a01b03168260405160006040518083038185875af1925050503d8060008114611b02576040519150601f19603f3d011682016040523d82523d6000602084013e611b07565b606091505b5050905080611b585760405162461bcd60e51b815260206004820152601b60248201527f456d657267656e6379207769746864726177616c206661696c656400000000006044820152606401610a3f565b604080518381526000602082018190528183015290517f47fca148ddc35e012b2b994e0e0bb5ab19f9454d520e9d01cb91f765bf9684459181900360600190a150905090565b6000600254600003611bb15750600a5490565b600254600b54600a546127109291611bc891613c3c565b611bd29190613c3c565b611bdc9190613c53565b600a54611be99190613f76565b905090565b6001600160a01b0391821660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793056020908152604080832093909416825291909152205460ff1690565b611c43612752565b6001600160a01b038116611c6a57604051639fabe1c160e01b815260040160405180910390fd5b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907fa92ff4390fe6943f0b30e8fe715dde86f85ab79b2b2c640a10fc094cc4036cc890600090a35050565b611cc4612752565b6001600160a01b038116611cee57604051631e4fbdf760e01b815260006004820152602401610a3f565b610bde81612907565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015611d3c5750825b90506000826001600160401b03166001148015611d585750303b155b905081158015611d66575080155b15611d845760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611dae57845460ff60401b1916600160401b1785555b6001600160a01b038a16611dd557604051639fabe1c160e01b815260040160405180910390fd5b6001600160a01b038716611dfc57604051639fabe1c160e01b815260040160405180910390fd5b611e05866127de565b611e0f8989612c61565b611e17612c73565b611e208a612c7b565b611e28612c8c565b611e30612c9c565b600680546001600160a01b0319166001600160a01b0389161790558551600890815560208701516009556040870151600a556060870151600b556080870151600c5560a0870151600d5560c0870151879190600e90611e8f9082614007565b5060e08201516007828101919091556101009092015160089091015580546001600160a01b0319166001600160a01b038c161790556000805460ff19169055611ed6612cac565b7f0ebd2271da98b00e6d40fe8cca8051afc388f741d714ce89dd71fb94dbf40e7886604051611f0591906140c5565b60405180910390a18315611f5357845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050565b60006001600160e01b031982166380ac58cd60e01b1480611f9057506001600160e01b03198216635b5e139f60e01b145b8061093357506301ffc9a760e01b6001600160e01b0319831614610933565b600080611fbb83612d04565b90506001600160a01b03811661093357604051637e27328960e01b815260048101849052602401610a3f565b60009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930460205260409020546001600160a01b031690565b610b558383836001612d3e565b6040516bffffffffffffffffffffffff19606086901b16602082015260009081906034016040516020818303038152906040528051906020012090506120aa858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250879250859150612e549050565b9695505050505050565b6000806120c2858585612e6a565b90506001600160a01b03811661214b5761214684600080516020614204833981519152805460008381527f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed0360205260408120829055600182018355919091527fa42f15e5d656f8155fd7419d740a6073999f19cd6e061449ce4a257150545bf20155565b61216e565b846001600160a01b0316816001600160a01b03161461216e5761216e8185612f74565b6001600160a01b03851661218a5761218584613010565b610a11565b846001600160a01b0316816001600160a01b031614610a1157610a1185856130e7565b6000805160206142448339815191528054600119016121df57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b6000805160206142248339815191525460ff1615610eff5760405163d93c066560e01b815260040160405180910390fd5b600c54600254612227908390613f76565b11156122465760405163d05cb60960e01b815260040160405180910390fd5b600d5433600090815260136020526040902054612264908390613f76565b1115612283576040516332b9f58560e21b815260040160405180910390fd5b600080826001600160401b0381111561229e5761229e613916565b6040519080825280602002602001820160405280156122c7578160200160208202803683370190505b50905060005b83811015612365576000816002546122e59190613f76565b90506000811561232b57600b54600a546127109184916123059190613c3c565b61230f9190613c3c565b6123199190613c53565b600a546123269190613f76565b61232f565b600a545b90508084848151811061234457612344613f4c565b60209081029190910101526123598186613f76565b945050506001016122cd565b508134101561238757604051636dddf41160e11b815260040160405180910390fd5b60006127106123986105dc85613c3c565b6123a29190613c53565b905060006123b08285613c75565b905080600460008282546123c49190613f76565b909155505081158015906123e257506007546001600160a01b031615155b15612486576007546040516000916001600160a01b03169084908381818185875af1925050503d8060008114612434576040519150601f19603f3d011682016040523d82523d6000602084013e612439565b606091505b50509050806124805760405162461bcd60e51b8152602060048201526013602482015272119959481d1c985b9cd9995c8819985a5b1959606a1b6044820152606401610a3f565b5061249e565b81600460008282546124989190613f76565b90915550505b60005b858110156125ce57600280549060006124b983613fbf565b90915550503360009081526013602052604081208054916124d983613fbf565b919050555060006002549050604051806080016040528086848151811061250257612502613f4c565b6020908102919091018101518252428282015260006040808401829052606093840182905285825260128352908190208451815591840151600183015583015160028201805460ff19169115159190911790559101516003909101556125683382613142565b80336001600160a01b03167f25b428dfde728ccfaddad7e29e4ac23c24ed7fd1a6e3e3f91894a9a073f5dfff8785815181106125a6576125a6613f4c565b60200260200101516040516125bd91815260200190565b60405180910390a3506001016124a1565b5083341115612668576000336125e48634613c75565b604051600081818185875af1925050503d8060008114612620576040519150601f19603f3d011682016040523d82523d6000602084013e612625565b606091505b50509050806126665760405162461bcd60e51b815260206004820152600d60248201526c1499599d5b990819985a5b1959609a1b6044820152606401610a3f565b505b5050505050565b6000805460ff1660038111156126875761268761358e565b14158015612696575060015442105b156126b45760405163b4cb796b60e01b815260040160405180910390fd5b6000805460ff1660038111156126cc576126cc61358e565b036126d957610eff612cac565b600160005460ff1660038111156126f2576126f261358e565b036126ff57610eff61315c565b600260005460ff1660038111156127185761271861358e565b0361272557610eff6131ad565b60405163268dbf6760e21b815260040160405180910390fd5b600160008051602061424483398151915255565b3361275b6110d3565b6001600160a01b031614610eff5760405163118cdaa760e01b8152336004820152602401610a3f565b61278c6131f3565b600080516020614224833981519152805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b039091168152602001610f74565b8051603c111561280157604051637616640160e01b815260040160405180910390fd5b603c8160200151101561282757604051637616640160e01b815260040160405180910390fd5b806040015160000361284b5760405162bfc92160e01b815260040160405180910390fd5b806060015160000361287057604051636a43f8d160e01b815260040160405180910390fd5b80608001516000036128955760405163066f305360e21b815260040160405180910390fd5b8060a001516000036128ba57604051637250c1c760e11b815260040160405180910390fd5b603c8160e0015110156128e057604051637616640160e01b815260040160405180910390fd5b61271081610100015110610bde57604051636a43f8d160e01b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6129806121e5565b600080516020614224833981519152805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258336127c6565b6000805160206141e48339815191526001600160a01b038316612a0257604051630b61174360e31b81526001600160a01b0384166004820152602401610a3f565b6001600160a01b038481166000818152600584016020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6001600160a01b0383163b1561266857604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290612ab4908890889087908790600401614142565b6020604051808303816000875af1925050508015612aef575060408051601f3d908101601f19168201909252612aec91810190614175565b60015b612b58573d808015612b1d576040519150601f19603f3d011682016040523d82523d6000602084013e612b22565b606091505b508051600003612b5057604051633250574960e11b81526001600160a01b0385166004820152602401610a3f565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b1461266657604051633250574960e11b81526001600160a01b0385166004820152602401610a3f565b6000612ba360008360006120b4565b90506001600160a01b0381166109fd57604051637e27328960e01b815260048101839052602401610a3f565b60606000612bdc83613223565b60010190506000816001600160401b03811115612bfb57612bfb613916565b6040519080825280601f01601f191660200182016040528015612c25576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084612c2f57509392505050565b612c696132fb565b6109fd8282613344565b610eff6132fb565b612c836132fb565b610bde81613375565b612c946132fb565b610eff61337d565b612ca46132fb565b610eff613385565b6000805460ff19166001179055600854612cc69042613f76565b60018181556040517f5b895c4285b0e62ec6442d90a01aa2b069e6b5e5dd40b8689d36cb4a5dc174a592612cfa9291614192565b60405180910390a1565b60009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930260205260409020546001600160a01b031690565b6000805160206141e48339815191528180612d6157506001600160a01b03831615155b15612e23576000612d7185611faf565b90506001600160a01b03841615801590612d9d5750836001600160a01b0316816001600160a01b031614155b8015612db05750612dae8185611bee565b155b15612dd95760405163a9fbf51f60e01b81526001600160a01b0385166004820152602401610a3f565b8215612e215784866001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b600093845260040160205250506040902080546001600160a01b0319166001600160a01b0392909216919091179055565b600082612e6185846133a6565b14949350505050565b60006000805160206141e483398151915281612e8585612d04565b90506001600160a01b03841615612ea157612ea18185876133e9565b6001600160a01b03811615612ee157612ebe600086600080612d3e565b6001600160a01b0381166000908152600383016020526040902080546000190190555b6001600160a01b03861615612f12576001600160a01b03861660009081526003830160205260409020805460010190555b600085815260028301602052604080822080546001600160a01b0319166001600160a01b038a811691821790925591518893918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a495945050505050565b6000805160206141c48339815191526000612f8e84611055565b60008481526001840160209081526040808320546001600160a01b03891684529186905290912091925090818314612fe8576000838152602082815260408083205485845281842081905583526001870190915290208290555b6000948552600190930160209081526040808620869055928552929092528220919091555050565b600080516020614204833981519152546000805160206141c48339815191529060009061303f90600190613c75565b600084815260038401602052604081205460028501805493945090928490811061306b5761306b613f4c565b906000526020600020015490508084600201838154811061308e5761308e613f4c565b6000918252602080832090910192909255828152600386019091526040808220849055868252812055600284018054806130ca576130ca6141ad565b600190038181906000526020600020016000905590555050505050565b6000805160206141c48339815191526000600161310385611055565b61310d9190613c75565b6001600160a01b0390941660009081526020838152604080832087845282528083208690559482526001909301909252502055565b6109fd82826040518060200160405280600081525061344d565b6000805460ff191660021790556009546131769042613f76565b60018190556040517f5b895c4285b0e62ec6442d90a01aa2b069e6b5e5dd40b8689d36cb4a5dc174a591612cfa9160029190614192565b6000805460ff191660039081179091554260018190556040517f5b895c4285b0e62ec6442d90a01aa2b069e6b5e5dd40b8689d36cb4a5dc174a592612cfa929091614192565b6000805160206142248339815191525460ff16610eff57604051638dfc202b60e01b815260040160405180910390fd5b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106132625772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef8100000000831061328e576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106132ac57662386f26fc10000830492506010015b6305f5e10083106132c4576305f5e100830492506008015b61271083106132d857612710830492506004015b606483106132ea576064830492506002015b600a83106109335760010192915050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610eff57604051631afcd79f60e31b815260040160405180910390fd5b61334c6132fb565b6000805160206141e4833981519152806133668482614007565b5060018101610aa38382614007565b611cc46132fb565b61273e6132fb565b61338d6132fb565b600080516020614224833981519152805460ff19169055565b600081815b84518110156133e1576133d7828683815181106133ca576133ca613f4c565b6020026020010151613465565b91506001016133ab565b509392505050565b6133f4838383613491565b610b55576001600160a01b03831661342257604051637e27328960e01b815260048101829052602401610a3f565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401610a3f565b61345783836134f6565b610b55336000858585612a72565b6000818310613481576000828152602084905260409020611a43565b5060009182526020526040902090565b60006001600160a01b03831615801590610a115750826001600160a01b0316846001600160a01b031614806134cb57506134cb8484611bee565b80610a115750826001600160a01b03166134e483611fe7565b6001600160a01b031614949350505050565b6001600160a01b03821661352057604051633250574960e11b815260006004820152602401610a3f565b600061352e838360006120b4565b90506001600160a01b03811615610b55576040516339e3563760e11b815260006004820152602401610a3f565b6001600160e01b031981168114610bde57600080fd5b60006020828403121561358357600080fd5b8135611a438161355b565b634e487b7160e01b600052602160045260246000fd5b600481106135c257634e487b7160e01b600052602160045260246000fd5b9052565b6020810161093382846135a4565b60005b838110156135ef5781810151838201526020016135d7565b50506000910152565b600081518084526136108160208601602086016135d4565b601f01601f19169290920160200192915050565b602081526000611a4360208301846135f8565b60006020828403121561364957600080fd5b5035919050565b6001600160a01b0381168114610bde57600080fd5b6000806040838503121561367857600080fd5b823561368381613650565b946020939093013593505050565b60008083601f8401126136a357600080fd5b5081356001600160401b038111156136ba57600080fd5b6020830191508360208260051b85010111156136d557600080fd5b9250929050565b6000806000604084860312156136f157600080fd5b83356136fc81613650565b925060208401356001600160401b0381111561371757600080fd5b61372386828701613691565b9497909650939450505050565b60006020828403121561374257600080fd5b8135611a4381613650565b60008060006060848603121561376257600080fd5b833561376d81613650565b9250602084013561377d81613650565b929592945050506040919091013590565b6000806000604084860312156137a357600080fd5b83356001600160401b038111156137b957600080fd5b6137c586828701613691565b909790965060209590950135949350505050565b6000602082840312156137eb57600080fd5b81356001600160401b0381111561380157600080fd5b82016101208185031215611a4357600080fd5b6000806020838503121561382757600080fd5b82356001600160401b0381111561383d57600080fd5b8301601f8101851361384e57600080fd5b80356001600160401b0381111561386457600080fd5b85602082840101111561387657600080fd5b6020919091019590945092505050565b6000806040838503121561389957600080fd5b82356138a481613650565b9150602083013580151581146138b957600080fd5b809150509250929050565b8981528860208201528760408201528660608201528560808201528460a082015261012060c082015260006138fd6101208301866135f8565b60e0830194909452506101000152979650505050505050565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b038111828210171561394f5761394f613916565b60405290565b6000806001600160401b0384111561396f5761396f613916565b50604051601f19601f85018116603f011681018181106001600160401b038211171561399d5761399d613916565b6040528381529050808284018510156139b557600080fd5b83836020830137600060208583010152509392505050565b600080600080608085870312156139e357600080fd5b84356139ee81613650565b935060208501356139fe81613650565b92506040850135915060608501356001600160401b03811115613a2057600080fd5b8501601f81018713613a3157600080fd5b613a4087823560208401613955565b91505092959194509250565b60008060408385031215613a5f57600080fd5b8235613a6a81613650565b915060208301356138b981613650565b600082601f830112613a8b57600080fd5b611a4383833560208501613955565b60006101208284031215613aad57600080fd5b613ab561392c565b823581526020808401359082015260408084013590820152606080840135908201526080808401359082015260a08084013590820152905060c08201356001600160401b03811115613b0657600080fd5b613b1284828501613a7a565b60c08301525060e082810135908201526101009182013591810191909152919050565b600080600080600060a08688031215613b4d57600080fd5b8535613b5881613650565b945060208601356001600160401b03811115613b7357600080fd5b613b7f88828901613a7a565b94505060408601356001600160401b03811115613b9b57600080fd5b613ba788828901613a7a565b9350506060860135613bb881613650565b915060808601356001600160401b03811115613bd357600080fd5b613bdf88828901613a9a565b9150509295509295909350565b600181811c90821680613c0057607f821691505b602082108103613c2057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761093357610933613c26565b600082613c7057634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561093357610933613c26565b60006109333683613a9a565b6000808335601e19843603018112613cab57600080fd5b8301803591506001600160401b03821115613cc557600080fd5b6020019150368190038213156136d557600080fd5b601f821115610b5557806000526020600020601f840160051c81016020851015613d015750805b601f840160051c820191505b818110156126685760008155600101613d0d565b6001600160401b03831115613d3857613d38613916565b613d4c83613d468354613bec565b83613cda565b6000601f841160018114613d805760008515613d685750838201355b600019600387901b1c1916600186901b178355612668565b600083815260209020601f19861690835b82811015613db15786850135825560209485019460019092019101613d91565b5086821015613dce5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b813581556020820135600182015560408201356002820155606082013560038201556080820135600482015560a08201356005820155613e2360c0830183613c94565b613e31818360068601613d21565b505060e0820135600782015561010090910135600890910155565b6000808335601e19843603018112613e6357600080fd5b83016020810192503590506001600160401b03811115613e8257600080fd5b8036038213156136d557600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602080825282358282015282013560408083019190915282013560608083019190915282013560808083019190915282013560a08083019190915282013560c080830191909152600090613f1090840184613e4c565b61012060e0850152613f2761014085018284613e91565b60e0860135610100868101919091529095013561012090940193909352509192915050565b634e487b7160e01b600052603260045260246000fd5b602081526000610a11602083018486613e91565b8082018082111561093357610933613c26565b600060208284031215613f9b57600080fd5b8151611a4381613650565b600060208284031215613fb857600080fd5b5051919050565b600060018201613fd157613fd1613c26565b5060010190565b60008351613fea8184602088016135d4565b835190830190613ffe8183602088016135d4565b01949350505050565b81516001600160401b0381111561402057614020613916565b6140348161402e8454613bec565b84613cda565b6020601f82116001811461406857600083156140505750848201515b600019600385901b1c1916600184901b178455612668565b600084815260208120601f198516915b828110156140985787850151825560209485019460019092019101614078565b50848210156140b65786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6020815281516020820152602082015160408201526040820151606082015260608201516080820152608082015160a082015260a082015160c0820152600060c083015161012060e084015261411f6101408401826135f8565b905060e08401516101008401526101008401516101208401528091505092915050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906120aa908301846135f8565b60006020828403121561418757600080fd5b8151611a438161355b565b604081016141a082856135a4565b8260208301529392505050565b634e487b7160e01b600052603160045260246000fdfe645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed0080bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed02cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a2646970667358221220b75445e5e9aec28e61bf947ddd3635f192d61c36f7c3f483ec3f39c9bbae12d364736f6c634300081b0033