.tools/venv/lib/python3.9/site-packages/urllib3/__init__.py:35: NotOpenSSLWarning: urllib3 v2 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020
  warnings.warn(
'solc --version' running
'solc @openzeppelin/contracts/=node_modules/@openzeppelin/contracts/ @openzeppelin/=node_modules/@openzeppelin/ src/OptionNFT.sol --combined-json abi,ast,bin,bin-runtime,srcmap,srcmap-runtime,userdoc,devdoc,hashes --via-ir --optimize --optimize-runs 200 --evm-version cancun --allow-paths .,OptionNFT/src' running
Compilation warnings/errors on src/OptionNFT.sol:
.tools/venv/lib/python3.9/site-packages/urllib3/__init__.py:35: NotOpenSSLWarning: urllib3 v2 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020
  warnings.warn(


Detector: incorrect-exp
Base64._encode(bytes,bool) (node_modules/@openzeppelin/contracts/utils/Base64.sol#48-139) has bitwise-xor operator ^ instead of the exponentiation operator **: 
	 - mstore(uint256,uint256)(0x3f,ghijklmnopqrstuvwxyz0123456789+/ ^ urlAndFilenameSafe * 0x670) (node_modules/@openzeppelin/contracts/utils/Base64.sol#83)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#206-277) has bitwise-xor operator ^ instead of the exponentiation operator **: 
	 - inverse = (3 * denominator) ^ 2 (node_modules/@openzeppelin/contracts/utils/math/Math.sol#259)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-exponentiation

Detector: divide-before-multiply
Base64._encode(bytes,bool) (node_modules/@openzeppelin/contracts/utils/Base64.sol#48-139) performs a multiplication on the result of a division:
	- resultLength = 4 * ((data.length + 2) / 3) (node_modules/@openzeppelin/contracts/utils/Base64.sol#70)
Base64._decode(bytes) (node_modules/@openzeppelin/contracts/utils/Base64.sol#144-233) performs a multiplication on the result of a division:
	- resultLength = (dataLength / 4) * 3 (node_modules/@openzeppelin/contracts/utils/Base64.sol#150)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#206-277) performs a multiplication on the result of a division:
	- denominator = denominator / twos (node_modules/@openzeppelin/contracts/utils/math/Math.sol#244)
	- inverse = (3 * denominator) ^ 2 (node_modules/@openzeppelin/contracts/utils/math/Math.sol#259)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#206-277) performs a multiplication on the result of a division:
	- denominator = denominator / twos (node_modules/@openzeppelin/contracts/utils/math/Math.sol#244)
	- inverse *= 2 - denominator * inverse (node_modules/@openzeppelin/contracts/utils/math/Math.sol#263)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#206-277) performs a multiplication on the result of a division:
	- denominator = denominator / twos (node_modules/@openzeppelin/contracts/utils/math/Math.sol#244)
	- inverse *= 2 - denominator * inverse (node_modules/@openzeppelin/contracts/utils/math/Math.sol#264)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#206-277) performs a multiplication on the result of a division:
	- denominator = denominator / twos (node_modules/@openzeppelin/contracts/utils/math/Math.sol#244)
	- inverse *= 2 - denominator * inverse (node_modules/@openzeppelin/contracts/utils/math/Math.sol#265)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#206-277) performs a multiplication on the result of a division:
	- denominator = denominator / twos (node_modules/@openzeppelin/contracts/utils/math/Math.sol#244)
	- inverse *= 2 - denominator * inverse (node_modules/@openzeppelin/contracts/utils/math/Math.sol#266)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#206-277) performs a multiplication on the result of a division:
	- denominator = denominator / twos (node_modules/@openzeppelin/contracts/utils/math/Math.sol#244)
	- inverse *= 2 - denominator * inverse (node_modules/@openzeppelin/contracts/utils/math/Math.sol#267)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#206-277) performs a multiplication on the result of a division:
	- denominator = denominator / twos (node_modules/@openzeppelin/contracts/utils/math/Math.sol#244)
	- inverse *= 2 - denominator * inverse (node_modules/@openzeppelin/contracts/utils/math/Math.sol#268)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#206-277) performs a multiplication on the result of a division:
	- low = low / twos (node_modules/@openzeppelin/contracts/utils/math/Math.sol#247)
	- result = low * inverse (node_modules/@openzeppelin/contracts/utils/math/Math.sol#274)
Math.invMod(uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#317-363) performs a multiplication on the result of a division:
	- quotient = gcd / remainder (node_modules/@openzeppelin/contracts/utils/math/Math.sol#339)
	- (gcd,remainder) = (remainder,gcd - remainder * quotient) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#341-348)
OptionNFT._date(uint256) (src/OptionNFT.sol#239-253) performs a multiplication on the result of a division:
	- era = z / 146_097 (src/OptionNFT.sol#241)
	- doe = z - era * 146_097 (src/OptionNFT.sol#242)
OptionNFT._date(uint256) (src/OptionNFT.sol#239-253) performs a multiplication on the result of a division:
	- yoe = (doe - doe / 1460 + doe / 36_524 - doe / 146_096) / 365 (src/OptionNFT.sol#243)
	- doy = doe - (365 * yoe + yoe / 4 - yoe / 100) (src/OptionNFT.sol#244)
OptionNFT._date(uint256) (src/OptionNFT.sol#239-253) performs a multiplication on the result of a division:
	- mp = (5 * doy + 2) / 153 (src/OptionNFT.sol#245)
	- day = doy - (153 * mp + 2) / 5 + 1 (src/OptionNFT.sol#246)
OptionNFT._date(uint256) (src/OptionNFT.sol#239-253) performs a multiplication on the result of a division:
	- era = z / 146_097 (src/OptionNFT.sol#241)
	- year = yoe + era * 400 + 0 (src/OptionNFT.sol#248)
OptionNFT._date(uint256) (src/OptionNFT.sol#239-253) performs a multiplication on the result of a division:
	- era = z / 146_097 (src/OptionNFT.sol#241)
	- year = yoe + era * 400 + 1 (src/OptionNFT.sol#248)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#divide-before-multiply

Detector: assembly
ERC721Utils.checkOnERC721Received(address,address,address,uint256,bytes) (node_modules/@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol#25-49) uses assembly
	- INLINE ASM (node_modules/@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol#43-45)
Base64._encode(bytes,bool) (node_modules/@openzeppelin/contracts/utils/Base64.sol#48-139) uses assembly
	- INLINE ASM (node_modules/@openzeppelin/contracts/utils/Base64.sol#72-138)
Base64._decode(bytes) (node_modules/@openzeppelin/contracts/utils/Base64.sol#144-233) uses assembly
	- INLINE ASM (node_modules/@openzeppelin/contracts/utils/Base64.sol#157-232)
Bytes.slice(bytes,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/Bytes.sol#86-98) uses assembly
	- INLINE ASM (node_modules/@openzeppelin/contracts/utils/Bytes.sol#93-95)
Bytes.splice(bytes,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/Bytes.sol#117-129) uses assembly
	- INLINE ASM (node_modules/@openzeppelin/contracts/utils/Bytes.sol#123-126)
Bytes.replace(bytes,uint256,bytes,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/Bytes.sol#154-172) uses assembly
	- INLINE ASM (node_modules/@openzeppelin/contracts/utils/Bytes.sol#167-169)
Bytes.concat(bytes[]) (node_modules/@openzeppelin/contracts/utils/Bytes.sol#183-203) uses assembly
	- INLINE ASM (node_modules/@openzeppelin/contracts/utils/Bytes.sol#194-196)
Bytes.toNibbles(bytes) (node_modules/@openzeppelin/contracts/utils/Bytes.sol#210-245) uses assembly
	- INLINE ASM (node_modules/@openzeppelin/contracts/utils/Bytes.sol#211-244)
Bytes._unsafeReadBytesOffset(bytes,uint256) (node_modules/@openzeppelin/contracts/utils/Bytes.sol#326-331) uses assembly
	- INLINE ASM (node_modules/@openzeppelin/contracts/utils/Bytes.sol#328-330)
Panic.panic(uint256) (node_modules/@openzeppelin/contracts/utils/Panic.sol#50-56) uses assembly
	- INLINE ASM (node_modules/@openzeppelin/contracts/utils/Panic.sol#51-55)
Strings.toString(uint256) (node_modules/@openzeppelin/contracts/utils/Strings.sol#42-60) uses assembly
	- INLINE ASM (node_modules/@openzeppelin/contracts/utils/Strings.sol#47-49)
	- INLINE ASM (node_modules/@openzeppelin/contracts/utils/Strings.sol#52-54)
Strings.toChecksumHexString(address) (node_modules/@openzeppelin/contracts/utils/Strings.sol#108-126) uses assembly
	- INLINE ASM (node_modules/@openzeppelin/contracts/utils/Strings.sol#113-115)
Strings.escapeJSON(string) (node_modules/@openzeppelin/contracts/utils/Strings.sol#461-505) uses assembly
	- INLINE ASM (node_modules/@openzeppelin/contracts/utils/Strings.sol#468-470)
	- INLINE ASM (node_modules/@openzeppelin/contracts/utils/Strings.sol#499-502)
Strings._unsafeReadBytesOffset(bytes,uint256) (node_modules/@openzeppelin/contracts/utils/Strings.sol#513-518) uses assembly
	- INLINE ASM (node_modules/@openzeppelin/contracts/utils/Strings.sol#515-517)
Strings._unsafeWriteBytesOffset(bytes,uint256,bytes1) (node_modules/@openzeppelin/contracts/utils/Strings.sol#526-531) uses assembly
	- INLINE ASM (node_modules/@openzeppelin/contracts/utils/Strings.sol#528-530)
Math.add512(uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#25-30) uses assembly
	- INLINE ASM (node_modules/@openzeppelin/contracts/utils/math/Math.sol#26-29)
Math.mul512(uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#37-46) uses assembly
	- INLINE ASM (node_modules/@openzeppelin/contracts/utils/math/Math.sol#41-45)
Math.tryMul(uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#73-84) uses assembly
	- INLINE ASM (node_modules/@openzeppelin/contracts/utils/math/Math.sol#76-80)
Math.tryDiv(uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#89-97) uses assembly
	- INLINE ASM (node_modules/@openzeppelin/contracts/utils/math/Math.sol#92-95)
Math.tryMod(uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#102-110) uses assembly
	- INLINE ASM (node_modules/@openzeppelin/contracts/utils/math/Math.sol#105-108)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#206-277) uses assembly
	- INLINE ASM (node_modules/@openzeppelin/contracts/utils/math/Math.sol#229-236)
	- INLINE ASM (node_modules/@openzeppelin/contracts/utils/math/Math.sol#242-251)
Math.tryModExp(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#411-435) uses assembly
	- INLINE ASM (node_modules/@openzeppelin/contracts/utils/math/Math.sol#413-434)
Math.tryModExp(bytes,bytes,bytes) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#451-473) uses assembly
	- INLINE ASM (node_modules/@openzeppelin/contracts/utils/math/Math.sol#463-472)
Math._zeroBytes(bytes) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#478-490) uses assembly
	- INLINE ASM (node_modules/@openzeppelin/contracts/utils/math/Math.sol#482-484)
Math.log2(uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#619-658) uses assembly
	- INLINE ASM (node_modules/@openzeppelin/contracts/utils/math/Math.sol#655-657)
SafeCast.toUint(bool) (node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol#1157-1161) uses assembly
	- INLINE ASM (node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol#1158-1160)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage

Detector: pragma
7 different versions of Solidity are used:
	- Version constraint >=0.8.4 is used by:
		->=0.8.4 (node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol#4)
	- Version constraint >=0.4.16 is used by:
		->=0.4.16 (node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol#4)
		->=0.4.16 (node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol#4)
	- Version constraint >=0.6.2 is used by:
		->=0.6.2 (node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol#4)
		->=0.6.2 (node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol#4)
		->=0.6.2 (node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol#4)
	- Version constraint ^0.8.24 is used by:
		-^0.8.24 (node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol#4)
		-^0.8.24 (node_modules/@openzeppelin/contracts/utils/Bytes.sol#4)
		-^0.8.24 (node_modules/@openzeppelin/contracts/utils/Strings.sol#4)
	- Version constraint >=0.5.0 is used by:
		->=0.5.0 (node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol#4)
	- Version constraint ^0.8.20 is used by:
		-^0.8.20 (node_modules/@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol#4)
		-^0.8.20 (node_modules/@openzeppelin/contracts/utils/Base64.sol#4)
		-^0.8.20 (node_modules/@openzeppelin/contracts/utils/Context.sol#4)
		-^0.8.20 (node_modules/@openzeppelin/contracts/utils/Panic.sol#4)
		-^0.8.20 (node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol#4)
		-^0.8.20 (node_modules/@openzeppelin/contracts/utils/math/Math.sol#4)
		-^0.8.20 (node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol#5)
		-^0.8.20 (node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol#4)
	- Version constraint 0.8.28 is used by:
		-0.8.28 (src/OptionNFT.sol#2)
		-0.8.28 (src/interfaces/IOptionMarket.sol#2)
		-0.8.28 (src/interfaces/IOptionNFT.sol#2)
		-0.8.28 (src/lib/Constants.sol#2)
		-0.8.28 (src/lib/Errors.sol#2)
		-0.8.28 (src/lib/Types.sol#2)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#different-pragma-directives-are-used

Detector: dead-code
Context._contextSuffixLength() (node_modules/@openzeppelin/contracts/utils/Context.sol#25-27) is never used and should be removed
Context._msgData() (node_modules/@openzeppelin/contracts/utils/Context.sol#21-23) is never used and should be removed
ERC721._baseURI() (node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol#88-90) is never used and should be removed
ERC721._increaseBalance(address,uint128) (node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol#199-203) is never used and should be removed
ERC721._safeMint(address,uint256) (node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol#279-281) is never used and should be removed
ERC721._safeMint(address,uint256,bytes) (node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol#287-290) is never used and should be removed
ERC721._safeTransfer(address,address,uint256) (node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol#352-354) is never used and should be removed
ERC721._safeTransfer(address,address,uint256,bytes) (node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol#360-363) is never used and should be removed
ERC721._transfer(address,address,uint256) (node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol#321-331) is never used and should be removed
OptionNFT._line(uint256,string,string) (src/OptionNFT.sol#264-276) is never used and should be removed
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dead-code

Detector: solc-version
Version constraint >=0.8.4 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)
	- FullInlinerNonExpressionSplitArgumentEvaluationOrder
	- MissingSideEffectsOnSelectorAccess
	- AbiReencodingHeadOverflowWithStaticArrayCleanup
	- DirtyBytesArrayToStorage
	- DataLocationChangeInInternalOverride
	- NestedCalldataArrayAbiReencodingSizeValidation
	- SignedImmutables.
It is used by:
	- >=0.8.4 (node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol#4)
Version constraint >=0.4.16 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)
	- DirtyBytesArrayToStorage
	- ABIDecodeTwoDimensionalArrayMemory
	- KeccakCaching
	- EmptyByteArrayCopy
	- DynamicArrayCleanup
	- ImplicitConstructorCallvalueCheck
	- TupleAssignmentMultiStackSlotComponents
	- MemoryArrayCreationOverflow
	- privateCanBeOverridden
	- SignedArrayStorageCopy
	- ABIEncoderV2StorageArrayWithMultiSlotElement
	- DynamicConstructorArgumentsClippedABIV2
	- UninitializedFunctionPointerInConstructor_0.4.x
	- IncorrectEventSignatureInLibraries_0.4.x
	- ExpExponentCleanup
	- NestedArrayFunctionCallDecoder
	- ZeroFunctionSelector.
It is used by:
	- >=0.4.16 (node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol#4)
	- >=0.4.16 (node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol#4)
Version constraint >=0.6.2 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)
	- MissingSideEffectsOnSelectorAccess
	- AbiReencodingHeadOverflowWithStaticArrayCleanup
	- DirtyBytesArrayToStorage
	- NestedCalldataArrayAbiReencodingSizeValidation
	- ABIDecodeTwoDimensionalArrayMemory
	- KeccakCaching
	- EmptyByteArrayCopy
	- DynamicArrayCleanup
	- MissingEscapingInFormatting
	- ArraySliceDynamicallyEncodedBaseType
	- ImplicitConstructorCallvalueCheck
	- TupleAssignmentMultiStackSlotComponents
	- MemoryArrayCreationOverflow.
It is used by:
	- >=0.6.2 (node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol#4)
	- >=0.6.2 (node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol#4)
	- >=0.6.2 (node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol#4)
Version constraint >=0.5.0 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)
	- DirtyBytesArrayToStorage
	- ABIDecodeTwoDimensionalArrayMemory
	- KeccakCaching
	- EmptyByteArrayCopy
	- DynamicArrayCleanup
	- ImplicitConstructorCallvalueCheck
	- TupleAssignmentMultiStackSlotComponents
	- MemoryArrayCreationOverflow
	- privateCanBeOverridden
	- SignedArrayStorageCopy
	- ABIEncoderV2StorageArrayWithMultiSlotElement
	- DynamicConstructorArgumentsClippedABIV2
	- UninitializedFunctionPointerInConstructor
	- IncorrectEventSignatureInLibraries
	- ABIEncoderV2PackedStorage.
It is used by:
	- >=0.5.0 (node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol#4)
Version constraint ^0.8.20 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)
	- VerbatimInvalidDeduplication
	- FullInlinerNonExpressionSplitArgumentEvaluationOrder
	- MissingSideEffectsOnSelectorAccess.
It is used by:
	- ^0.8.20 (node_modules/@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol#4)
	- ^0.8.20 (node_modules/@openzeppelin/contracts/utils/Base64.sol#4)
	- ^0.8.20 (node_modules/@openzeppelin/contracts/utils/Context.sol#4)
	- ^0.8.20 (node_modules/@openzeppelin/contracts/utils/Panic.sol#4)
	- ^0.8.20 (node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol#4)
	- ^0.8.20 (node_modules/@openzeppelin/contracts/utils/math/Math.sol#4)
	- ^0.8.20 (node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol#5)
	- ^0.8.20 (node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol#4)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-versions-of-solidity

Detector: too-many-digits
Bytes.toNibbles(bytes) (node_modules/@openzeppelin/contracts/utils/Bytes.sol#210-245) uses literals with too many digits:
	- chunk_toNibbles_asm_0 = 0x0000000000000000ffffffffffffffff0000000000000000ffffffffffffffff & chunk_toNibbles_asm_0 << 64 | chunk_toNibbles_asm_0 (node_modules/@openzeppelin/contracts/utils/Bytes.sol#222-225)
Bytes.toNibbles(bytes) (node_modules/@openzeppelin/contracts/utils/Bytes.sol#210-245) uses literals with too many digits:
	- chunk_toNibbles_asm_0 = 0x00000000ffffffff00000000ffffffff00000000ffffffff00000000ffffffff & chunk_toNibbles_asm_0 << 32 | chunk_toNibbles_asm_0 (node_modules/@openzeppelin/contracts/utils/Bytes.sol#226-229)
Bytes.reverseBytes32(bytes32) (node_modules/@openzeppelin/contracts/utils/Bytes.sol#258-272) uses literals with too many digits:
	- value = ((value >> 32) & 0x00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF) | ((value & 0x00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF) << 32) (node_modules/@openzeppelin/contracts/utils/Bytes.sol#265-267)
Bytes.reverseBytes32(bytes32) (node_modules/@openzeppelin/contracts/utils/Bytes.sol#258-272) uses literals with too many digits:
	- value = ((value >> 64) & 0x0000000000000000FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF) | ((value & 0x0000000000000000FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF) << 64) (node_modules/@openzeppelin/contracts/utils/Bytes.sol#268-270)
Bytes.reverseBytes16(bytes16) (node_modules/@openzeppelin/contracts/utils/Bytes.sol#275-286) uses literals with too many digits:
	- value = ((value & 0xFFFFFFFF00000000FFFFFFFF00000000) >> 32) | ((value & 0x00000000FFFFFFFF00000000FFFFFFFF) << 32) (node_modules/@openzeppelin/contracts/utils/Bytes.sol#282-284)
Math.log2(uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#619-658) uses literals with too many digits:
	- r = r | byte(uint256,uint256)(x >> r,0x0000010102020202030303030303030300000000000000000000000000000000) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#656)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#too-many-digits

Detector: unimplemented-functions
OptionNFT (src/OptionNFT.sol#17-303) does not implement functions:
	- IOptionNFT.ownerOf(uint256) (src/interfaces/IOptionNFT.sol#7)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unimplemented-functions
src/OptionNFT.sol analyzed (25 contracts with 100 detectors), 67 result(s) found
