diff --git a/.gas-snapshot b/.gas-snapshot index fb8e76c2b..720fe5bff 100644 --- a/.gas-snapshot +++ b/.gas-snapshot @@ -1,9 +1,9 @@ Base64Test:testBase64DecodeSentenceGas() (gas: 3663) Base64Test:testBase64DecodeShortStringGas() (gas: 896) -Base64Test:testBase64EncodeDecode(bytes) (runs: 257, μ: 5995, ~: 4968) -Base64Test:testBase64EncodeDecodeAltModes(bytes) (runs: 257, μ: 850023, ~: 735759) +Base64Test:testBase64EncodeDecode(bytes) (runs: 258, μ: 5994, ~: 4968) +Base64Test:testBase64EncodeDecodeAltModes(bytes) (runs: 258, μ: 849584, ~: 735889) Base64Test:testBase64EncodeEmptyString() (gas: 902) -Base64Test:testBase64EncodeFileSafeAndNoPadding(bytes,bool,bool) (runs: 257, μ: 15375, ~: 14264) +Base64Test:testBase64EncodeFileSafeAndNoPadding(bytes,bool,bool) (runs: 258, μ: 15362, ~: 14264) Base64Test:testBase64EncodeSentence() (gas: 4333) Base64Test:testBase64EncodeShortStrings() (gas: 7610) Base64Test:testBase64EncodeToStringWithDoublePadding() (gas: 1553) @@ -11,78 +11,78 @@ Base64Test:testBase64EncodeToStringWithNoPadding() (gas: 1531) Base64Test:testBase64EncodeToStringWithSinglePadding() (gas: 1487) Base64Test:testBase64WordBoundary() (gas: 11624) Base64Test:test__codesize() (gas: 6613) -CREATE3Test:testDeployERC20() (gas: 833248) -CREATE3Test:testDeployERC20(bytes32,string,string,uint8) (runs: 257, μ: 880119, ~: 879332) +CREATE3Test:testDeployERC20() (gas: 833235) +CREATE3Test:testDeployERC20(bytes32,string,string,uint8) (runs: 258, μ: 880103, ~: 879319) CREATE3Test:testDeployedUpperBitsSafeForPlainSolidity() (gas: 613) CREATE3Test:testDoubleDeployDifferentBytecodeReverts() (gas: 96898738) -CREATE3Test:testDoubleDeployDifferentBytecodeReverts(bytes32,bytes,bytes) (runs: 257, μ: 96880354, ~: 96880365) -CREATE3Test:testDoubleDeploySameBytecodeReverts() (gas: 96889197) -CREATE3Test:testDoubleDeploySameBytecodeReverts(bytes32,bytes) (runs: 257, μ: 96881062, ~: 96880999) -CREATE3Test:test__codesize() (gas: 14119) -DateTimeLibTest:testAddSubDiffDays(uint256,uint256) (runs: 257, μ: 4205, ~: 4216) -DateTimeLibTest:testAddSubDiffHours(uint256,uint256) (runs: 257, μ: 4150, ~: 4162) -DateTimeLibTest:testAddSubDiffMinutes(uint256,uint256) (runs: 257, μ: 4147, ~: 4136) -DateTimeLibTest:testAddSubDiffMonths(uint256,uint256) (runs: 257, μ: 7249, ~: 7264) -DateTimeLibTest:testAddSubDiffSeconds(uint256,uint256) (runs: 257, μ: 3767, ~: 3728) -DateTimeLibTest:testAddSubDiffYears(uint256,uint256) (runs: 257, μ: 6813, ~: 6829) +CREATE3Test:testDoubleDeployDifferentBytecodeReverts(bytes32,bytes,bytes) (runs: 258, μ: 96880355, ~: 96880358) +CREATE3Test:testDoubleDeploySameBytecodeReverts() (gas: 96889196) +CREATE3Test:testDoubleDeploySameBytecodeReverts(bytes32,bytes) (runs: 258, μ: 96881057, ~: 96880998) +CREATE3Test:test__codesize() (gas: 14114) +DateTimeLibTest:testAddSubDiffDays(uint256,uint256) (runs: 258, μ: 4206, ~: 4216) +DateTimeLibTest:testAddSubDiffHours(uint256,uint256) (runs: 258, μ: 4150, ~: 4162) +DateTimeLibTest:testAddSubDiffMinutes(uint256,uint256) (runs: 258, μ: 4147, ~: 4136) +DateTimeLibTest:testAddSubDiffMonths(uint256,uint256) (runs: 258, μ: 7250, ~: 7264) +DateTimeLibTest:testAddSubDiffSeconds(uint256,uint256) (runs: 258, μ: 3767, ~: 3728) +DateTimeLibTest:testAddSubDiffYears(uint256,uint256) (runs: 258, μ: 6814, ~: 6829) DateTimeLibTest:testDateTimeArithmeticReverts() (gas: 4495) DateTimeLibTest:testDateTimeMaxSupported() (gas: 2823) -DateTimeLibTest:testDateTimeToAndFroTimestamp((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 257, μ: 4181, ~: 4124) -DateTimeLibTest:testDateToAndFroEpochDay((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 257, μ: 2582, ~: 2605) +DateTimeLibTest:testDateTimeToAndFroTimestamp((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 258, μ: 4182, ~: 4124) +DateTimeLibTest:testDateToAndFroEpochDay((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 258, μ: 2583, ~: 2613) DateTimeLibTest:testDateToAndFroEpochDay() (gas: 866444) DateTimeLibTest:testDateToAndFroTimestamp() (gas: 908693) DateTimeLibTest:testDateToEpochDay() (gas: 1559) -DateTimeLibTest:testDateToEpochDayDifferential((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 257, μ: 2321, ~: 2339) -DateTimeLibTest:testDateToEpochDayDifferential2((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 257, μ: 2243, ~: 2266) +DateTimeLibTest:testDateToEpochDayDifferential((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 258, μ: 2321, ~: 2347) +DateTimeLibTest:testDateToEpochDayDifferential2((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 258, μ: 2244, ~: 2274) DateTimeLibTest:testDateToEpochDayGas() (gas: 756479) DateTimeLibTest:testDateToEpochDayGas2() (gas: 759345) DateTimeLibTest:testDayOfWeek() (gas: 175255) DateTimeLibTest:testDaysInMonth() (gas: 1226) -DateTimeLibTest:testDaysInMonth(uint256,uint256) (runs: 257, μ: 1083, ~: 1093) +DateTimeLibTest:testDaysInMonth(uint256,uint256) (runs: 258, μ: 1083, ~: 1093) DateTimeLibTest:testDaysToDate() (gas: 8377) -DateTimeLibTest:testEpochDayToDate(uint256) (runs: 257, μ: 1045, ~: 1045) -DateTimeLibTest:testEpochDayToDateDifferential(uint256) (runs: 257, μ: 1777, ~: 1721) -DateTimeLibTest:testEpochDayToDateDifferential2(uint256) (runs: 257, μ: 1785, ~: 1709) +DateTimeLibTest:testEpochDayToDate(uint256) (runs: 258, μ: 1045, ~: 1045) +DateTimeLibTest:testEpochDayToDateDifferential(uint256) (runs: 258, μ: 1777, ~: 1721) +DateTimeLibTest:testEpochDayToDateDifferential2(uint256) (runs: 258, μ: 1785, ~: 1709) DateTimeLibTest:testEpochDayToDateGas() (gas: 340769) DateTimeLibTest:testEpochDayToDateGas2() (gas: 357399) DateTimeLibTest:testIsLeapYear() (gas: 741) -DateTimeLibTest:testIsLeapYear(uint256) (runs: 257, μ: 539, ~: 517) +DateTimeLibTest:testIsLeapYear(uint256) (runs: 258, μ: 539, ~: 517) DateTimeLibTest:testIsSupportedDateFalse() (gas: 1180) -DateTimeLibTest:testIsSupportedDateTime((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 257, μ: 3002, ~: 2984) +DateTimeLibTest:testIsSupportedDateTime((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 258, μ: 3001, ~: 2984) DateTimeLibTest:testIsSupportedDateTrue() (gas: 626) DateTimeLibTest:testIsSupportedEpochDayFalse() (gas: 494) DateTimeLibTest:testIsSupportedEpochDayTrue() (gas: 305) DateTimeLibTest:testIsSupportedTimestampFalse() (gas: 541) DateTimeLibTest:testIsSupportedTimestampTrue() (gas: 326) -DateTimeLibTest:testIsWeekEnd(uint256) (runs: 257, μ: 691, ~: 617) +DateTimeLibTest:testIsWeekEnd(uint256) (runs: 258, μ: 692, ~: 617) DateTimeLibTest:testMondayTimestamp() (gas: 1106) -DateTimeLibTest:testMondayTimestamp(uint256) (runs: 257, μ: 768, ~: 836) +DateTimeLibTest:testMondayTimestamp(uint256) (runs: 258, μ: 768, ~: 836) DateTimeLibTest:testNthWeekdayInMonthOfYearTimestamp() (gas: 12053) -DateTimeLibTest:testNthWeekdayInMonthOfYearTimestamp(uint256,uint256,uint256,uint256) (runs: 257, μ: 3575, ~: 3622) +DateTimeLibTest:testNthWeekdayInMonthOfYearTimestamp(uint256,uint256,uint256,uint256) (runs: 258, μ: 3572, ~: 3622) DateTimeLibTest:testWeekday() (gas: 682) DateTimeLibTest:test__codesize() (gas: 19095) DelegateCheckerLibTest:testCheckDelegateForAll() (gas: 35639) -DelegateCheckerLibTest:testCheckDelegateForAll(address,address,bytes32) (runs: 257, μ: 235371, ~: 244625) +DelegateCheckerLibTest:testCheckDelegateForAll(address,address,bytes32) (runs: 258, μ: 236129, ~: 244657) DelegateCheckerLibTest:testCheckDelegateForContract() (gas: 54172) -DelegateCheckerLibTest:testCheckDelegateForContract(address,address,address,bytes32) (runs: 257, μ: 332267, ~: 293859) +DelegateCheckerLibTest:testCheckDelegateForContract(address,address,address,bytes32) (runs: 258, μ: 332750, ~: 293958) DelegateCheckerLibTest:testCheckDelegateForERC1155() (gas: 62242) -DelegateCheckerLibTest:testCheckDelegateForERC1155(address,address,address,uint256,bytes32) (runs: 257, μ: 283055, ~: 300036) +DelegateCheckerLibTest:testCheckDelegateForERC1155(address,address,address,uint256,bytes32) (runs: 258, μ: 284310, ~: 300098) DelegateCheckerLibTest:testCheckDelegateForERC20() (gas: 61708) -DelegateCheckerLibTest:testCheckDelegateForERC20(address,address,address,bytes32) (runs: 257, μ: 280928, ~: 278319) +DelegateCheckerLibTest:testCheckDelegateForERC20(address,address,address,bytes32) (runs: 258, μ: 281144, ~: 278348) DelegateCheckerLibTest:testCheckDelegateForERC721() (gas: 69938) -DelegateCheckerLibTest:testCheckDelegateForERC721(address,address,address,uint256,bytes32) (runs: 257, μ: 431360, ~: 370727) +DelegateCheckerLibTest:testCheckDelegateForERC721(address,address,address,uint256,bytes32) (runs: 258, μ: 431063, ~: 368359) DelegateCheckerLibTest:test__codesize() (gas: 33111) -DeploylessPredeployQueryerTest:testPredeployQueryer(bytes32) (runs: 257, μ: 229679, ~: 222488) +DeploylessPredeployQueryerTest:testPredeployQueryer(bytes32) (runs: 258, μ: 229293, ~: 222435) DeploylessPredeployQueryerTest:test__codesize() (gas: 6732) -DynamicBufferLibTest:testClear(uint256) (runs: 257, μ: 34542, ~: 34590) -DynamicBufferLibTest:testDynamicBuffer(bytes[],uint256) (runs: 257, μ: 971057, ~: 800274) -DynamicBufferLibTest:testDynamicBuffer(uint256) (runs: 257, μ: 874713, ~: 680759) +DynamicBufferLibTest:testClear(uint256) (runs: 258, μ: 34542, ~: 34586) +DynamicBufferLibTest:testDynamicBuffer(bytes[],uint256) (runs: 258, μ: 982931, ~: 801170) +DynamicBufferLibTest:testDynamicBuffer(uint256) (runs: 258, μ: 873964, ~: 680766) DynamicBufferLibTest:testDynamicBufferChaining() (gas: 12661) -DynamicBufferLibTest:testDynamicBufferPushSingles(uint256,uint256,uint256) (runs: 257, μ: 362143, ~: 42966) +DynamicBufferLibTest:testDynamicBufferPushSingles(uint256,uint256,uint256) (runs: 258, μ: 360904, ~: 42832) DynamicBufferLibTest:testDynamicBufferPushSinglesReinterpretCast() (gas: 21959) DynamicBufferLibTest:testDynamicBufferReserveFromEmpty() (gas: 2754) DynamicBufferLibTest:testDynamicBufferReserveFromEmpty2() (gas: 2463) -DynamicBufferLibTest:testDynamicBufferReserveFromEmpty3(bytes,uint256) (runs: 257, μ: 2788, ~: 2069) +DynamicBufferLibTest:testDynamicBufferReserveFromEmpty3(bytes,uint256) (runs: 258, μ: 2790, ~: 2081) DynamicBufferLibTest:testJoinWithConcat() (gas: 31429) DynamicBufferLibTest:testJoinWithDynamicBuffer() (gas: 10830) DynamicBufferLibTest:test__codesize() (gas: 12781) @@ -93,7 +93,7 @@ ECDSATest:testBytesToEthSignedMessageHashExceedsMaxLengthReverts() (gas: 614955) ECDSATest:testBytesToEthSignedMessageHashLong() (gas: 681) ECDSATest:testBytesToEthSignedMessageHashShort() (gas: 620) ECDSATest:testEmptyCalldataHelpers() (gas: 3224) -ECDSATest:testRecoverAndTryRecover(bytes32) (runs: 257, μ: 2900804, ~: 2532650) +ECDSATest:testRecoverAndTryRecover(bytes32) (runs: 258, μ: 2894506, ~: 2532648) ECDSATest:testRecoverWithInvalidLongSignatureReverts() (gas: 7363) ECDSATest:testRecoverWithInvalidShortSignatureReturnsZero() (gas: 7176) ECDSATest:testRecoverWithInvalidSignatureReverts() (gas: 7963) @@ -143,60 +143,60 @@ EIP712Test:testHashTypedDataWithChaindIdChange() (gas: 45775) EIP712Test:test__codesize() (gas: 11765) ERC1155HooksTest:testERC1155Hooks() (gas: 4614597) ERC1155HooksTest:test__codesize() (gas: 12638) -ERC1155Test:testApproveAll(address,bool) (runs: 257, μ: 49259, ~: 58598) -ERC1155Test:testAuthorizedEquivalence(address,address,bool) (runs: 257, μ: 714, ~: 715) -ERC1155Test:testBalanceOfBatchWithArrayMismatchReverts(uint256) (runs: 257, μ: 31782, ~: 34829) -ERC1155Test:testBatchBalanceOf(uint256) (runs: 257, μ: 119101, ~: 148228) -ERC1155Test:testBatchBurn(uint256) (runs: 257, μ: 184080, ~: 162861) -ERC1155Test:testBatchBurnInsufficientBalanceReverts(uint256) (runs: 257, μ: 177398, ~: 174197) -ERC1155Test:testBatchBurnWithArrayLengthMismatchReverts(uint256) (runs: 257, μ: 44786, ~: 43805) -ERC1155Test:testBatchMintToEOA(uint256) (runs: 257, μ: 123553, ~: 100287) -ERC1155Test:testBatchMintToERC1155Recipient(uint256) (runs: 257, μ: 775802, ~: 819899) -ERC1155Test:testBatchMintToNonERC1155RecipientReverts(uint256) (runs: 257, μ: 161906, ~: 185416) -ERC1155Test:testBatchMintToRevertingERC1155RecipientReverts(uint256) (runs: 257, μ: 341259, ~: 327099) -ERC1155Test:testBatchMintToWrongReturnDataERC1155RecipientReverts(uint256) (runs: 257, μ: 290409, ~: 273015) -ERC1155Test:testBatchMintToZeroReverts(uint256) (runs: 257, μ: 79027, ~: 90119) -ERC1155Test:testBatchMintWithArrayMismatchReverts(uint256) (runs: 257, μ: 33401, ~: 35618) -ERC1155Test:testBurn(uint256) (runs: 257, μ: 91938, ~: 84282) -ERC1155Test:testBurnInsufficientBalanceReverts(uint256) (runs: 257, μ: 97207, ~: 96658) -ERC1155Test:testDirectSetApprovalForAll(address,address,bool) (runs: 257, μ: 25369, ~: 15691) -ERC1155Test:testMintToEOA(uint256) (runs: 257, μ: 72755, ~: 72331) -ERC1155Test:testMintToERC1155Recipient(uint256) (runs: 257, μ: 667465, ~: 652320) -ERC1155Test:testMintToNonERC155RecipientReverts(uint256) (runs: 257, μ: 103272, ~: 103341) -ERC1155Test:testMintToRevertingERC155RecipientReverts(uint256) (runs: 257, μ: 283803, ~: 283846) -ERC1155Test:testMintToWrongReturnDataERC155RecipientReverts(uint256) (runs: 257, μ: 238380, ~: 238440) -ERC1155Test:testMintToZeroReverts(uint256) (runs: 257, μ: 33221, ~: 33191) +ERC1155Test:testApproveAll(address,bool) (runs: 258, μ: 49295, ~: 58598) +ERC1155Test:testAuthorizedEquivalence(address,address,bool) (runs: 258, μ: 714, ~: 715) +ERC1155Test:testBalanceOfBatchWithArrayMismatchReverts(uint256) (runs: 258, μ: 31750, ~: 34828) +ERC1155Test:testBatchBalanceOf(uint256) (runs: 258, μ: 118992, ~: 148195) +ERC1155Test:testBatchBurn(uint256) (runs: 258, μ: 184290, ~: 162864) +ERC1155Test:testBatchBurnInsufficientBalanceReverts(uint256) (runs: 258, μ: 177386, ~: 174201) +ERC1155Test:testBatchBurnWithArrayLengthMismatchReverts(uint256) (runs: 258, μ: 44778, ~: 43717) +ERC1155Test:testBatchMintToEOA(uint256) (runs: 258, μ: 123662, ~: 100338) +ERC1155Test:testBatchMintToERC1155Recipient(uint256) (runs: 258, μ: 775781, ~: 819899) +ERC1155Test:testBatchMintToNonERC1155RecipientReverts(uint256) (runs: 258, μ: 161999, ~: 185489) +ERC1155Test:testBatchMintToRevertingERC1155RecipientReverts(uint256) (runs: 258, μ: 341168, ~: 323165) +ERC1155Test:testBatchMintToWrongReturnDataERC1155RecipientReverts(uint256) (runs: 258, μ: 290153, ~: 273002) +ERC1155Test:testBatchMintToZeroReverts(uint256) (runs: 258, μ: 78972, ~: 90108) +ERC1155Test:testBatchMintWithArrayMismatchReverts(uint256) (runs: 258, μ: 33410, ~: 35616) +ERC1155Test:testBurn(uint256) (runs: 258, μ: 91987, ~: 84289) +ERC1155Test:testBurnInsufficientBalanceReverts(uint256) (runs: 258, μ: 97212, ~: 96690) +ERC1155Test:testDirectSetApprovalForAll(address,address,bool) (runs: 258, μ: 25332, ~: 15691) +ERC1155Test:testMintToEOA(uint256) (runs: 258, μ: 72753, ~: 72312) +ERC1155Test:testMintToERC1155Recipient(uint256) (runs: 258, μ: 667561, ~: 652341) +ERC1155Test:testMintToNonERC155RecipientReverts(uint256) (runs: 258, μ: 103272, ~: 103358) +ERC1155Test:testMintToRevertingERC155RecipientReverts(uint256) (runs: 258, μ: 283803, ~: 283846) +ERC1155Test:testMintToWrongReturnDataERC155RecipientReverts(uint256) (runs: 258, μ: 238381, ~: 238440) +ERC1155Test:testMintToZeroReverts(uint256) (runs: 258, μ: 33220, ~: 33191) ERC1155Test:testSafeBatchTransfer() (gas: 8294532) -ERC1155Test:testSafeBatchTransferFromToEOA(uint256) (runs: 257, μ: 215214, ~: 189824) -ERC1155Test:testSafeBatchTransferFromToERC1155Recipient(uint256) (runs: 257, μ: 913044, ~: 956506) -ERC1155Test:testSafeBatchTransferFromToNonERC1155RecipientReverts(uint256) (runs: 257, μ: 227984, ~: 197721) -ERC1155Test:testSafeBatchTransferFromToRevertingERC1155RecipientReverts(uint256) (runs: 257, μ: 415518, ~: 378850) -ERC1155Test:testSafeBatchTransferFromToWrongReturnDataERC1155RecipientReverts(uint256) (runs: 257, μ: 368320, ~: 334148) -ERC1155Test:testSafeBatchTransferFromToZeroReverts(uint256) (runs: 257, μ: 156733, ~: 173104) -ERC1155Test:testSafeBatchTransferFromWithArrayLengthMismatchReverts(uint256) (runs: 257, μ: 49583, ~: 66812) -ERC1155Test:testSafeBatchTransferInsufficientBalanceReverts(uint256) (runs: 257, μ: 178961, ~: 175236) -ERC1155Test:testSafeTransferFromInsufficientBalanceReverts(uint256) (runs: 257, μ: 98905, ~: 99673) -ERC1155Test:testSafeTransferFromSelf(uint256) (runs: 257, μ: 106577, ~: 106200) -ERC1155Test:testSafeTransferFromSelfInsufficientBalanceReverts(uint256) (runs: 257, μ: 71626, ~: 72184) -ERC1155Test:testSafeTransferFromToEOA(uint256) (runs: 257, μ: 119149, ~: 111660) -ERC1155Test:testSafeTransferFromToERC1155Recipient(uint256) (runs: 257, μ: 750360, ~: 734265) -ERC1155Test:testSafeTransferFromToNonERC155RecipientReverts(uint256) (runs: 257, μ: 141227, ~: 140974) -ERC1155Test:testSafeTransferFromToRevertingERC1155RecipientReverts(uint256) (runs: 257, μ: 321293, ~: 321289) -ERC1155Test:testSafeTransferFromToWrongReturnDataERC1155RecipientReverts(uint256) (runs: 257, μ: 275961, ~: 275494) -ERC1155Test:testSafeTransferFromToZeroReverts(uint256) (runs: 257, μ: 70811, ~: 70499) +ERC1155Test:testSafeBatchTransferFromToEOA(uint256) (runs: 258, μ: 215111, ~: 189781) +ERC1155Test:testSafeBatchTransferFromToERC1155Recipient(uint256) (runs: 258, μ: 913853, ~: 964770) +ERC1155Test:testSafeBatchTransferFromToNonERC1155RecipientReverts(uint256) (runs: 258, μ: 228420, ~: 197722) +ERC1155Test:testSafeBatchTransferFromToRevertingERC1155RecipientReverts(uint256) (runs: 258, μ: 415366, ~: 378822) +ERC1155Test:testSafeBatchTransferFromToWrongReturnDataERC1155RecipientReverts(uint256) (runs: 258, μ: 368747, ~: 360305) +ERC1155Test:testSafeBatchTransferFromToZeroReverts(uint256) (runs: 258, μ: 156992, ~: 173144) +ERC1155Test:testSafeBatchTransferFromWithArrayLengthMismatchReverts(uint256) (runs: 258, μ: 49653, ~: 66813) +ERC1155Test:testSafeBatchTransferInsufficientBalanceReverts(uint256) (runs: 258, μ: 178776, ~: 175224) +ERC1155Test:testSafeTransferFromInsufficientBalanceReverts(uint256) (runs: 258, μ: 98890, ~: 99673) +ERC1155Test:testSafeTransferFromSelf(uint256) (runs: 258, μ: 106583, ~: 106226) +ERC1155Test:testSafeTransferFromSelfInsufficientBalanceReverts(uint256) (runs: 258, μ: 71623, ~: 72152) +ERC1155Test:testSafeTransferFromToEOA(uint256) (runs: 258, μ: 119006, ~: 111655) +ERC1155Test:testSafeTransferFromToERC1155Recipient(uint256) (runs: 258, μ: 750442, ~: 734266) +ERC1155Test:testSafeTransferFromToNonERC155RecipientReverts(uint256) (runs: 258, μ: 141156, ~: 140956) +ERC1155Test:testSafeTransferFromToRevertingERC1155RecipientReverts(uint256) (runs: 258, μ: 321311, ~: 321296) +ERC1155Test:testSafeTransferFromToWrongReturnDataERC1155RecipientReverts(uint256) (runs: 258, μ: 275950, ~: 275487) +ERC1155Test:testSafeTransferFromToZeroReverts(uint256) (runs: 258, μ: 70808, ~: 70477) ERC1155Test:test__codesize() (gas: 42341) ERC1271Test:testBasefeeBytecodeContract() (gas: 45430) ERC1271Test:testIsValidSignature() (gas: 2465639) -ERC1271Test:testIsValidSignature(uint256) (runs: 257, μ: 252582, ~: 213785) +ERC1271Test:testIsValidSignature(uint256) (runs: 258, μ: 251718, ~: 213760) ERC1271Test:testSupportsNestedTypedDataSign() (gas: 165491) ERC1271Test:test__codesize() (gas: 30808) ERC1967FactoryTest:testChangeAdmin() (gas: 266356) ERC1967FactoryTest:testChangeAdminUnauthorized() (gas: 257653) ERC1967FactoryTest:testDeploy() (gas: 257202) -ERC1967FactoryTest:testDeployAndCall(uint256) (runs: 257, μ: 339513, ~: 340946) +ERC1967FactoryTest:testDeployAndCall(uint256) (runs: 258, μ: 339521, ~: 340947) ERC1967FactoryTest:testDeployAndCallWithRevert() (gas: 211730) -ERC1967FactoryTest:testDeployBrutalized(uint256) (runs: 257, μ: 95610, ~: 44118) -ERC1967FactoryTest:testDeployDeterministicAndCall(uint256) (runs: 257, μ: 302912, ~: 350126) +ERC1967FactoryTest:testDeployBrutalized(uint256) (runs: 258, μ: 96213, ~: 44122) +ERC1967FactoryTest:testDeployDeterministicAndCall(uint256) (runs: 258, μ: 303097, ~: 350126) ERC1967FactoryTest:testFactoryDeployment() (gas: 494435) ERC1967FactoryTest:testProxyFails() (gas: 259028) ERC1967FactoryTest:testProxySucceeds() (gas: 255707) @@ -209,45 +209,45 @@ ERC1967FactoryTest:test__codesize() (gas: 32011) ERC20Invariants:invariantBalanceSum() (runs: 10, calls: 150, reverts: 94) ERC20Invariants:test__codesize() (gas: 7532) ERC20Test:testApprove() (gas: 35730) -ERC20Test:testApprove(address,uint256) (runs: 257, μ: 31103, ~: 31181) +ERC20Test:testApprove(address,uint256) (runs: 258, μ: 31103, ~: 31181) ERC20Test:testBurn() (gas: 62048) -ERC20Test:testBurn(address,uint256,uint256) (runs: 257, μ: 62247, ~: 62663) -ERC20Test:testBurnInsufficientBalanceReverts(address,uint256,uint256) (runs: 257, μ: 56284, ~: 56517) -ERC20Test:testDirectSpendAllowance(uint256) (runs: 257, μ: 61712, ~: 61795) -ERC20Test:testDirectTransfer(uint256) (runs: 257, μ: 98655, ~: 86519) +ERC20Test:testBurn(address,uint256,uint256) (runs: 258, μ: 62248, ~: 62663) +ERC20Test:testBurnInsufficientBalanceReverts(address,uint256,uint256) (runs: 258, μ: 56285, ~: 56517) +ERC20Test:testDirectSpendAllowance(uint256) (runs: 258, μ: 61711, ~: 61795) +ERC20Test:testDirectTransfer(uint256) (runs: 258, μ: 98709, ~: 86519) ERC20Test:testInfiniteApproveTransferFrom() (gas: 90288) ERC20Test:testMetadata() (gas: 16516) ERC20Test:testMint() (gas: 58700) -ERC20Test:testMint(address,uint256) (runs: 257, μ: 58788, ~: 58943) +ERC20Test:testMint(address,uint256) (runs: 258, μ: 58788, ~: 58943) ERC20Test:testMintOverMaxUintReverts() (gas: 55969) ERC20Test:testPermit() (gas: 89767) -ERC20Test:testPermit(uint256) (runs: 257, μ: 89735, ~: 89710) -ERC20Test:testPermitBadDeadlineReverts(uint256) (runs: 257, μ: 41486, ~: 41470) -ERC20Test:testPermitBadNonceReverts(uint256) (runs: 257, μ: 41918, ~: 41950) -ERC20Test:testPermitPastDeadlineReverts(uint256) (runs: 257, μ: 36056, ~: 36014) -ERC20Test:testPermitReplayReverts(uint256) (runs: 257, μ: 92431, ~: 92415) +ERC20Test:testPermit(uint256) (runs: 258, μ: 89735, ~: 89710) +ERC20Test:testPermitBadDeadlineReverts(uint256) (runs: 258, μ: 41485, ~: 41470) +ERC20Test:testPermitBadNonceReverts(uint256) (runs: 258, μ: 41918, ~: 41950) +ERC20Test:testPermitPastDeadlineReverts(uint256) (runs: 258, μ: 36056, ~: 36014) +ERC20Test:testPermitReplayReverts(uint256) (runs: 258, μ: 92432, ~: 92415) ERC20Test:testTransfer() (gas: 65514) -ERC20Test:testTransfer(address,uint256) (runs: 257, μ: 65575, ~: 65730) +ERC20Test:testTransfer(address,uint256) (runs: 258, μ: 65575, ~: 65730) ERC20Test:testTransferFrom() (gas: 85869) -ERC20Test:testTransferFrom(address,address,address,uint256,uint256) (runs: 257, μ: 92838, ~: 95053) +ERC20Test:testTransferFrom(address,address,address,uint256,uint256) (runs: 258, μ: 92846, ~: 95053) ERC20Test:testTransferFromInsufficientAllowanceReverts() (gas: 81760) -ERC20Test:testTransferFromInsufficientAllowanceReverts(address,uint256,uint256) (runs: 257, μ: 82136, ~: 82214) +ERC20Test:testTransferFromInsufficientAllowanceReverts(address,uint256,uint256) (runs: 258, μ: 82136, ~: 82214) ERC20Test:testTransferFromInsufficientBalanceReverts() (gas: 62108) -ERC20Test:testTransferFromInsufficientBalanceReverts(address,uint256,uint256) (runs: 257, μ: 62778, ~: 62649) +ERC20Test:testTransferFromInsufficientBalanceReverts(address,uint256,uint256) (runs: 258, μ: 62778, ~: 62649) ERC20Test:testTransferInsufficientBalanceReverts() (gas: 56113) -ERC20Test:testTransferInsufficientBalanceReverts(address,uint256,uint256) (runs: 257, μ: 56343, ~: 56576) +ERC20Test:testTransferInsufficientBalanceReverts(address,uint256,uint256) (runs: 258, μ: 56344, ~: 56576) ERC20Test:test__codesize() (gas: 22620) -ERC2981Test:testRoyaltyOverflowCheckDifferential(uint256,uint256) (runs: 257, μ: 480, ~: 480) -ERC2981Test:testSetAndGetRoyaltyInfo(uint256) (runs: 257, μ: 110155, ~: 105361) +ERC2981Test:testRoyaltyOverflowCheckDifferential(uint256,uint256) (runs: 258, μ: 480, ~: 480) +ERC2981Test:testSetAndGetRoyaltyInfo(uint256) (runs: 258, μ: 110137, ~: 105368) ERC2981Test:test__codesize() (gas: 7113) ERC4337FactoryTest:testCreateAccountRepeatedDeployment() (gas: 149735) -ERC4337FactoryTest:testCreateAccountRepeatedDeployment(uint256) (runs: 257, μ: 171667, ~: 171564) -ERC4337FactoryTest:testDeployDeterministic(uint256) (runs: 257, μ: 130981, ~: 139917) +ERC4337FactoryTest:testCreateAccountRepeatedDeployment(uint256) (runs: 258, μ: 171666, ~: 171564) +ERC4337FactoryTest:testDeployDeterministic(uint256) (runs: 258, μ: 131016, ~: 139917) ERC4337FactoryTest:test__codesize() (gas: 12860) ERC4337Test:testCdFallback() (gas: 438041) ERC4337Test:testCdFallback2() (gas: 1135303) ERC4337Test:testDelegateExecute() (gas: 366407) -ERC4337Test:testDelegateExecute(uint256) (runs: 257, μ: 354297, ~: 345250) +ERC4337Test:testDelegateExecute(uint256) (runs: 258, μ: 354262, ~: 345250) ERC4337Test:testDelegateExecuteRevertsIfOwnerSlotValueChanged() (gas: 320067) ERC4337Test:testDepositFunctions() (gas: 497140) ERC4337Test:testDirectStorage() (gas: 70503) @@ -255,7 +255,7 @@ ERC4337Test:testDisableInitializerForImplementation() (gas: 1335854) ERC4337Test:testETHReceived() (gas: 16584) ERC4337Test:testExecute() (gas: 383712) ERC4337Test:testExecuteBatch() (gas: 694187) -ERC4337Test:testExecuteBatch(uint256) (runs: 257, μ: 520970, ~: 369178) +ERC4337Test:testExecuteBatch(uint256) (runs: 258, μ: 520381, ~: 369170) ERC4337Test:testInitializer() (gas: 285656) ERC4337Test:testIsValidSignature() (gas: 120568) ERC4337Test:testIsValidSignaturePersonalSign() (gas: 103754) @@ -269,15 +269,15 @@ ERC4337Test:testValidateUserOp() (gas: 484912) ERC4337Test:test__codesize() (gas: 57428) ERC4626Test:testDepositWithNoApprovalReverts() (gas: 16569) ERC4626Test:testDepositWithNotEnoughApprovalReverts() (gas: 90179) -ERC4626Test:testDifferentialFullMulDiv(uint256,uint256,uint256) (runs: 257, μ: 3313, ~: 3319) +ERC4626Test:testDifferentialFullMulDiv(uint256,uint256,uint256) (runs: 258, μ: 3315, ~: 3319) ERC4626Test:testMetadata() (gas: 14354) ERC4626Test:testMintWithNoApprovalReverts() (gas: 16543) ERC4626Test:testMintZero() (gas: 53551) ERC4626Test:testMultipleMintDepositRedeemWithdraw() (gas: 410466) ERC4626Test:testRedeemWithNoShareAmountReverts() (gas: 10918) ERC4626Test:testRedeemWithNotEnoughShareAmountReverts() (gas: 143210) -ERC4626Test:testSingleDepositWithdraw(uint128) (runs: 257, μ: 201956, ~: 201960) -ERC4626Test:testSingleMintRedeem(uint128) (runs: 257, μ: 200921, ~: 200926) +ERC4626Test:testSingleDepositWithdraw(uint128) (runs: 258, μ: 201956, ~: 201960) +ERC4626Test:testSingleMintRedeem(uint128) (runs: 258, μ: 200921, ~: 200926) ERC4626Test:testTryGetAssetDecimals() (gas: 31508026) ERC4626Test:testUseVirtualShares() (gas: 2428448) ERC4626Test:testVaultInteractionsForSomeoneElse() (gas: 296637) @@ -288,283 +288,283 @@ ERC4626Test:testWithdrawZero() (gas: 51874) ERC4626Test:test__codesize() (gas: 37159) ERC6551Test:testBaseFeeMini() (gas: 39514) ERC6551Test:testCdFallback() (gas: 895572) -ERC6551Test:testDeployERC6551(uint256) (runs: 257, μ: 170784, ~: 168933) +ERC6551Test:testDeployERC6551(uint256) (runs: 258, μ: 170832, ~: 168933) ERC6551Test:testDeployERC6551Proxy() (gas: 80395) ERC6551Test:testExecute() (gas: 507633) ERC6551Test:testExecuteBatch() (gas: 817562) -ERC6551Test:testExecuteBatch(uint256) (runs: 257, μ: 649607, ~: 763023) +ERC6551Test:testExecuteBatch(uint256) (runs: 258, μ: 648962, ~: 763017) ERC6551Test:testInitializeERC6551ProxyImplementation() (gas: 189914) -ERC6551Test:testIsValidSigner(address) (runs: 257, μ: 167464, ~: 167453) +ERC6551Test:testIsValidSigner(address) (runs: 258, μ: 167464, ~: 167453) ERC6551Test:testOnERC1155BatchReceived() (gas: 1702519) ERC6551Test:testOnERC1155Received() (gas: 1699882) ERC6551Test:testOnERC721Received() (gas: 1738866) ERC6551Test:testOnERC721ReceivedCycles() (gas: 2914176) -ERC6551Test:testOnERC721ReceivedCyclesWithDifferentChainIds(uint256) (runs: 257, μ: 451378, ~: 455763) -ERC6551Test:testOwnerWorksWithChainIdChange(uint256,uint256) (runs: 257, μ: 1386809, ~: 1386816) +ERC6551Test:testOnERC721ReceivedCyclesWithDifferentChainIds(uint256) (runs: 258, μ: 451397, ~: 455780) +ERC6551Test:testOwnerWorksWithChainIdChange(uint256,uint256) (runs: 258, μ: 1386809, ~: 1386813) ERC6551Test:testSupportsInterface() (gas: 169450) -ERC6551Test:testUpdateState(uint256) (runs: 257, μ: 235266, ~: 235225) +ERC6551Test:testUpdateState(uint256) (runs: 258, μ: 235266, ~: 235229) ERC6551Test:testUpgrade() (gas: 248478) ERC6551Test:test__codesize() (gas: 52534) ERC6909Test:testApprove() (gas: 36872) -ERC6909Test:testApprove(address,uint256,uint256) (runs: 257, μ: 37436, ~: 37514) +ERC6909Test:testApprove(address,uint256,uint256) (runs: 258, μ: 37436, ~: 37514) ERC6909Test:testBurn() (gas: 40870) -ERC6909Test:testBurn(address,uint256,uint256,uint256) (runs: 257, μ: 40608, ~: 41381) -ERC6909Test:testBurnInsufficientBalanceReverts(address,uint256,uint256,uint256) (runs: 257, μ: 35086, ~: 35166) +ERC6909Test:testBurn(address,uint256,uint256,uint256) (runs: 258, μ: 40612, ~: 41381) +ERC6909Test:testBurnInsufficientBalanceReverts(address,uint256,uint256,uint256) (runs: 258, μ: 35087, ~: 35166) ERC6909Test:testDecimals() (gas: 5676) ERC6909Test:testDirectApprove() (gas: 36737) -ERC6909Test:testDirectFunctions(uint256) (runs: 257, μ: 202189, ~: 202015) +ERC6909Test:testDirectFunctions(uint256) (runs: 258, μ: 202189, ~: 202079) ERC6909Test:testDirectSetOperator() (gas: 35937) ERC6909Test:testDirectTransfer() (gas: 66221) ERC6909Test:testInfiniteApproveTransferFrom() (gas: 78590) -ERC6909Test:testMetadata(uint256) (runs: 257, μ: 8257, ~: 8257) +ERC6909Test:testMetadata(uint256) (runs: 258, μ: 8257, ~: 8257) ERC6909Test:testMint() (gas: 37035) -ERC6909Test:testMint(address,uint256,uint256) (runs: 257, μ: 37193, ~: 37271) +ERC6909Test:testMint(address,uint256,uint256) (runs: 258, μ: 37193, ~: 37271) ERC6909Test:testMintOverMaxUintReverts() (gas: 34604) -ERC6909Test:testMintOverMaxUintReverts(address,uint256,uint256,uint256) (runs: 257, μ: 35526, ~: 35542) +ERC6909Test:testMintOverMaxUintReverts(address,uint256,uint256,uint256) (runs: 258, μ: 35526, ~: 35542) ERC6909Test:testOperatorTransferFrom() (gas: 74112) ERC6909Test:testSetOperator() (gas: 37139) -ERC6909Test:testSetOperator(address,address,bool) (runs: 257, μ: 26445, ~: 16767) +ERC6909Test:testSetOperator(address,address,bool) (runs: 258, μ: 26408, ~: 16767) ERC6909Test:testTokenURI() (gas: 32671) ERC6909Test:testTransfer() (gas: 48262) -ERC6909Test:testTransfer(address,uint256,uint256) (runs: 257, μ: 47317, ~: 47395) +ERC6909Test:testTransfer(address,uint256,uint256) (runs: 258, μ: 47317, ~: 47393) ERC6909Test:testTransferFrom() (gas: 74676) -ERC6909Test:testTransferFrom(address,address,address,uint256,uint256,uint256) (runs: 257, μ: 79923, ~: 81173) -ERC6909Test:testTransferFromCallerIsNotOperator(address,uint256,uint256) (runs: 257, μ: 39606, ~: 39606) -ERC6909Test:testTransferFromInsufficientAllowanceReverts(address,uint256,uint256,uint256) (runs: 257, μ: 67230, ~: 67771) +ERC6909Test:testTransferFrom(address,address,address,uint256,uint256,uint256) (runs: 258, μ: 79908, ~: 81173) +ERC6909Test:testTransferFromCallerIsNotOperator(address,uint256,uint256) (runs: 258, μ: 39606, ~: 39606) +ERC6909Test:testTransferFromInsufficientAllowanceReverts(address,uint256,uint256,uint256) (runs: 258, μ: 67232, ~: 67771) ERC6909Test:testTransferFromInsufficientBalanceReverts() (gas: 49861) -ERC6909Test:testTransferFromInsufficientBalanceReverts(address,uint256,uint256,uint256) (runs: 257, μ: 50560, ~: 50100) +ERC6909Test:testTransferFromInsufficientBalanceReverts(address,uint256,uint256,uint256) (runs: 258, μ: 50558, ~: 50099) ERC6909Test:testTransferFromInsufficientPermission() (gas: 67246) ERC6909Test:testTransferFromOverMaxUintReverts() (gas: 90493) -ERC6909Test:testTransferFromOverMaxUintReverts(address,uint256,uint256,uint256) (runs: 257, μ: 113364, ~: 113604) +ERC6909Test:testTransferFromOverMaxUintReverts(address,uint256,uint256,uint256) (runs: 258, μ: 113365, ~: 113604) ERC6909Test:testTransferInsufficientBalanceReverts() (gas: 34728) -ERC6909Test:testTransferInsufficientBalanceReverts(address,uint256,uint256,uint256) (runs: 257, μ: 34884, ~: 35270) +ERC6909Test:testTransferInsufficientBalanceReverts(address,uint256,uint256,uint256) (runs: 258, μ: 34885, ~: 35270) ERC6909Test:testTransferOverMaxUintReverts() (gas: 63748) -ERC6909Test:testTransferOverMaxUintReverts(address,uint256,uint256,uint256) (runs: 257, μ: 64314, ~: 64303) +ERC6909Test:testTransferOverMaxUintReverts(address,uint256,uint256,uint256) (runs: 258, μ: 64314, ~: 64303) ERC6909Test:test__codesize() (gas: 25821) ERC721HooksTest:testERC721Hooks() (gas: 3195690) ERC721HooksTest:test__codesize() (gas: 10893) -ERC721Test:testApprove(uint256) (runs: 257, μ: 108292, ~: 108326) -ERC721Test:testApproveAll(uint256) (runs: 257, μ: 49707, ~: 40673) -ERC721Test:testApproveBurn(uint256) (runs: 257, μ: 86907, ~: 86911) -ERC721Test:testApproveNonExistentReverts(uint256,address) (runs: 257, μ: 33696, ~: 33624) -ERC721Test:testApproveUnauthorizedReverts(uint256) (runs: 257, μ: 83593, ~: 84389) -ERC721Test:testAuthorizedEquivalence(address,bool,bool) (runs: 257, μ: 684, ~: 678) -ERC721Test:testAux(uint256) (runs: 257, μ: 192669, ~: 191642) -ERC721Test:testBurn(uint256) (runs: 257, μ: 82685, ~: 94019) -ERC721Test:testBurnNonExistentReverts(uint256) (runs: 257, μ: 10805, ~: 10805) +ERC721Test:testApprove(uint256) (runs: 258, μ: 108292, ~: 108326) +ERC721Test:testApproveAll(uint256) (runs: 258, μ: 49747, ~: 40676) +ERC721Test:testApproveBurn(uint256) (runs: 258, μ: 86907, ~: 86905) +ERC721Test:testApproveNonExistentReverts(uint256,address) (runs: 258, μ: 33696, ~: 33624) +ERC721Test:testApproveUnauthorizedReverts(uint256) (runs: 258, μ: 83597, ~: 84389) +ERC721Test:testAuthorizedEquivalence(address,bool,bool) (runs: 258, μ: 684, ~: 678) +ERC721Test:testAux(uint256) (runs: 258, μ: 192665, ~: 191641) +ERC721Test:testBurn(uint256) (runs: 258, μ: 82729, ~: 94028) +ERC721Test:testBurnNonExistentReverts(uint256) (runs: 258, μ: 10805, ~: 10805) ERC721Test:testCannotExceedMaxBalance() (gas: 170165) -ERC721Test:testDoubleBurnReverts(uint256) (runs: 257, μ: 63605, ~: 63550) -ERC721Test:testDoubleMintReverts(uint256) (runs: 257, μ: 79272, ~: 79311) -ERC721Test:testEverything(uint256) (runs: 257, μ: 304508, ~: 302846) -ERC721Test:testExtraData(uint256) (runs: 257, μ: 99572, ~: 99532) -ERC721Test:testExtraData2(uint256,uint256) (runs: 257, μ: 53889, ~: 53889) -ERC721Test:testIsApprovedOrOwner(uint256) (runs: 257, μ: 136268, ~: 136261) -ERC721Test:testMint(uint256) (runs: 257, μ: 82907, ~: 82837) -ERC721Test:testMintAndSetExtraDataUnchecked(uint256) (runs: 257, μ: 84532, ~: 84462) -ERC721Test:testMintAndSetExtraDataUncheckedWithOverwrite(uint256,uint96) (runs: 257, μ: 83819, ~: 83731) -ERC721Test:testMintToZeroReverts(uint256) (runs: 257, μ: 39510, ~: 39510) -ERC721Test:testOwnerOfNonExistent(uint256) (runs: 257, μ: 33412, ~: 33472) -ERC721Test:testSafeMintToEOA(uint256) (runs: 257, μ: 83451, ~: 83488) -ERC721Test:testSafeMintToERC721Recipient(uint256) (runs: 257, μ: 409738, ~: 410055) -ERC721Test:testSafeMintToERC721RecipientWithData(uint256,bytes) (runs: 257, μ: 460513, ~: 453822) -ERC721Test:testSafeMintToERC721RecipientWithWrongReturnData(uint256) (runs: 257, μ: 170407, ~: 170407) -ERC721Test:testSafeMintToERC721RecipientWithWrongReturnDataWithData(uint256,bytes) (runs: 257, μ: 171613, ~: 171569) -ERC721Test:testSafeMintToNonERC721RecipientReverts(uint256) (runs: 257, μ: 100507, ~: 100507) -ERC721Test:testSafeMintToNonERC721RecipientWithDataReverts(uint256,bytes) (runs: 257, μ: 101745, ~: 101701) -ERC721Test:testSafeMintToRevertingERC721RecipientReverts(uint256) (runs: 257, μ: 203343, ~: 203343) -ERC721Test:testSafeMintToRevertingERC721RecipientWithDataReverts(uint256,bytes) (runs: 257, μ: 204570, ~: 204526) -ERC721Test:testSafeTransferFromToEOA(uint256) (runs: 257, μ: 122383, ~: 122570) -ERC721Test:testSafeTransferFromToERC721Recipient(uint256) (runs: 257, μ: 471835, ~: 472128) -ERC721Test:testSafeTransferFromToERC721RecipientWithData(uint256,bytes) (runs: 257, μ: 522599, ~: 516005) -ERC721Test:testSafeTransferFromToERC721RecipientWithWrongReturnDataReverts(uint256) (runs: 257, μ: 201619, ~: 201573) -ERC721Test:testSafeTransferFromToERC721RecipientWithWrongReturnDataWithDataReverts(uint256,bytes) (runs: 257, μ: 202923, ~: 202903) -ERC721Test:testSafeTransferFromToNonERC721RecipientReverts(uint256) (runs: 257, μ: 131727, ~: 131764) -ERC721Test:testSafeTransferFromToNonERC721RecipientWithDataReverts(uint256,bytes) (runs: 257, μ: 133034, ~: 133013) -ERC721Test:testSafeTransferFromToRevertingERC721RecipientReverts(uint256) (runs: 257, μ: 234590, ~: 234627) -ERC721Test:testSafeTransferFromToRevertingERC721RecipientWithDataReverts(uint256,bytes) (runs: 257, μ: 235813, ~: 235794) -ERC721Test:testSafetyOfCustomStorage(uint256,uint256) (runs: 257, μ: 713, ~: 713) +ERC721Test:testDoubleBurnReverts(uint256) (runs: 258, μ: 63604, ~: 63549) +ERC721Test:testDoubleMintReverts(uint256) (runs: 258, μ: 79273, ~: 79315) +ERC721Test:testEverything(uint256) (runs: 258, μ: 304506, ~: 302854) +ERC721Test:testExtraData(uint256) (runs: 258, μ: 99567, ~: 99521) +ERC721Test:testExtraData2(uint256,uint256) (runs: 258, μ: 53889, ~: 53889) +ERC721Test:testIsApprovedOrOwner(uint256) (runs: 258, μ: 136269, ~: 136262) +ERC721Test:testMint(uint256) (runs: 258, μ: 82906, ~: 82837) +ERC721Test:testMintAndSetExtraDataUnchecked(uint256) (runs: 258, μ: 84533, ~: 84522) +ERC721Test:testMintAndSetExtraDataUncheckedWithOverwrite(uint256,uint96) (runs: 258, μ: 83819, ~: 83731) +ERC721Test:testMintToZeroReverts(uint256) (runs: 258, μ: 39510, ~: 39510) +ERC721Test:testOwnerOfNonExistent(uint256) (runs: 258, μ: 33412, ~: 33472) +ERC721Test:testSafeMintToEOA(uint256) (runs: 258, μ: 83450, ~: 83432) +ERC721Test:testSafeMintToERC721Recipient(uint256) (runs: 258, μ: 409740, ~: 410055) +ERC721Test:testSafeMintToERC721RecipientWithData(uint256,bytes) (runs: 258, μ: 460400, ~: 453822) +ERC721Test:testSafeMintToERC721RecipientWithWrongReturnData(uint256) (runs: 258, μ: 170407, ~: 170407) +ERC721Test:testSafeMintToERC721RecipientWithWrongReturnDataWithData(uint256,bytes) (runs: 258, μ: 171613, ~: 171569) +ERC721Test:testSafeMintToNonERC721RecipientReverts(uint256) (runs: 258, μ: 100507, ~: 100507) +ERC721Test:testSafeMintToNonERC721RecipientWithDataReverts(uint256,bytes) (runs: 258, μ: 101745, ~: 101701) +ERC721Test:testSafeMintToRevertingERC721RecipientReverts(uint256) (runs: 258, μ: 203343, ~: 203343) +ERC721Test:testSafeMintToRevertingERC721RecipientWithDataReverts(uint256,bytes) (runs: 258, μ: 204570, ~: 204526) +ERC721Test:testSafeTransferFromToEOA(uint256) (runs: 258, μ: 122384, ~: 122570) +ERC721Test:testSafeTransferFromToERC721Recipient(uint256) (runs: 258, μ: 471836, ~: 472128) +ERC721Test:testSafeTransferFromToERC721RecipientWithData(uint256,bytes) (runs: 258, μ: 522488, ~: 516005) +ERC721Test:testSafeTransferFromToERC721RecipientWithWrongReturnDataReverts(uint256) (runs: 258, μ: 201619, ~: 201573) +ERC721Test:testSafeTransferFromToERC721RecipientWithWrongReturnDataWithDataReverts(uint256,bytes) (runs: 258, μ: 202923, ~: 202903) +ERC721Test:testSafeTransferFromToNonERC721RecipientReverts(uint256) (runs: 258, μ: 131727, ~: 131764) +ERC721Test:testSafeTransferFromToNonERC721RecipientWithDataReverts(uint256,bytes) (runs: 258, μ: 133034, ~: 133013) +ERC721Test:testSafeTransferFromToRevertingERC721RecipientReverts(uint256) (runs: 258, μ: 234590, ~: 234627) +ERC721Test:testSafeTransferFromToRevertingERC721RecipientWithDataReverts(uint256,bytes) (runs: 258, μ: 235813, ~: 235794) +ERC721Test:testSafetyOfCustomStorage(uint256,uint256) (runs: 258, μ: 713, ~: 713) ERC721Test:testTransferFrom() (gas: 86013) -ERC721Test:testTransferFrom(uint256) (runs: 257, μ: 114469, ~: 113054) -ERC721Test:testTransferFromApproveAll(uint256) (runs: 257, μ: 119776, ~: 119795) -ERC721Test:testTransferFromNotExistentReverts(address,address,uint256) (runs: 257, μ: 34280, ~: 34275) -ERC721Test:testTransferFromNotOwner(uint256) (runs: 257, μ: 85065, ~: 85037) -ERC721Test:testTransferFromSelf(uint256) (runs: 257, μ: 93023, ~: 93041) -ERC721Test:testTransferFromToZeroReverts(uint256) (runs: 257, μ: 63087, ~: 63085) -ERC721Test:testTransferFromWrongFromReverts(address,uint256) (runs: 257, μ: 80782, ~: 80775) +ERC721Test:testTransferFrom(uint256) (runs: 258, μ: 114461, ~: 113050) +ERC721Test:testTransferFromApproveAll(uint256) (runs: 258, μ: 119775, ~: 119795) +ERC721Test:testTransferFromNotExistentReverts(address,address,uint256) (runs: 258, μ: 34280, ~: 34275) +ERC721Test:testTransferFromNotOwner(uint256) (runs: 258, μ: 85066, ~: 85046) +ERC721Test:testTransferFromSelf(uint256) (runs: 258, μ: 93024, ~: 93041) +ERC721Test:testTransferFromToZeroReverts(uint256) (runs: 258, μ: 63086, ~: 63084) +ERC721Test:testTransferFromWrongFromReverts(address,uint256) (runs: 258, μ: 80784, ~: 80775) ERC721Test:test__codesize() (gas: 43024) EfficientHashLibTest:testEfficientHash() (gas: 7544) -EfficientHashLibTest:testEfficientHash(uint256) (runs: 257, μ: 7615, ~: 7615) +EfficientHashLibTest:testEfficientHash(uint256) (runs: 258, μ: 7615, ~: 7615) EfficientHashLibTest:testEfficientHashFree() (gas: 372) -EfficientHashLibTest:testEfficientHashFree(uint8,bool,uint8) (runs: 257, μ: 979, ~: 822) +EfficientHashLibTest:testEfficientHashFree(uint8,bool,uint8) (runs: 258, μ: 979, ~: 822) EfficientHashLibTest:testEfficientHashSet() (gas: 2034) EfficientHashLibTest:testEfficientHashUints() (gas: 6658) EfficientHashLibTest:test__codesize() (gas: 4730) EnumerableSetLibTest:testEnumerableAddressSetBasic() (gas: 248436) EnumerableSetLibTest:testEnumerableAddressSetBasic2() (gas: 175344) EnumerableSetLibTest:testEnumerableAddressSetNoStorageCollision() (gas: 98950) -EnumerableSetLibTest:testEnumerableAddressSetRevertsOnSentinel(uint256) (runs: 257, μ: 48562, ~: 39882) +EnumerableSetLibTest:testEnumerableAddressSetRevertsOnSentinel(uint256) (runs: 258, μ: 48514, ~: 39811) EnumerableSetLibTest:testEnumerableBytes32SetBasic() (gas: 271282) EnumerableSetLibTest:testEnumerableBytes32SetBasic2() (gas: 178471) EnumerableSetLibTest:testEnumerableBytes32SetNoStorageCollision() (gas: 103477) -EnumerableSetLibTest:testEnumerableBytes32SetRevertsOnSentinel(uint256) (runs: 257, μ: 47983, ~: 39822) -EnumerableSetLibTest:testEnumerableSetFuzz(uint256) (runs: 257, μ: 658069, ~: 526856) +EnumerableSetLibTest:testEnumerableBytes32SetRevertsOnSentinel(uint256) (runs: 258, μ: 47928, ~: 39771) +EnumerableSetLibTest:testEnumerableSetFuzz(uint256) (runs: 258, μ: 656440, ~: 523785) EnumerableSetLibTest:test__codesize() (gas: 14493) FixedPointMathLibTest:testAbs() (gas: 680) -FixedPointMathLibTest:testAbs(int256) (runs: 257, μ: 533, ~: 501) +FixedPointMathLibTest:testAbs(int256) (runs: 258, μ: 533, ~: 501) FixedPointMathLibTest:testAbsEdgeCases() (gas: 469) FixedPointMathLibTest:testAvg() (gas: 443) FixedPointMathLibTest:testAvgEdgeCase() (gas: 470) FixedPointMathLibTest:testAvgSigned() (gas: 900) FixedPointMathLibTest:testCbrt() (gas: 10306) -FixedPointMathLibTest:testCbrt(uint256) (runs: 257, μ: 1499, ~: 1513) -FixedPointMathLibTest:testCbrtBack(uint256) (runs: 257, μ: 34583, ~: 42311) +FixedPointMathLibTest:testCbrt(uint256) (runs: 258, μ: 1499, ~: 1513) +FixedPointMathLibTest:testCbrtBack(uint256) (runs: 258, μ: 34659, ~: 42632) FixedPointMathLibTest:testCbrtWad() (gas: 12349) -FixedPointMathLibTest:testCbrtWad(uint256) (runs: 257, μ: 2227, ~: 1973) +FixedPointMathLibTest:testCbrtWad(uint256) (runs: 258, μ: 2229, ~: 1973) FixedPointMathLibTest:testCbrtWadConverged() (gas: 2729) -FixedPointMathLibTest:testCbrtWadConverged(uint256) (runs: 257, μ: 2196, ~: 2250) +FixedPointMathLibTest:testCbrtWadConverged(uint256) (runs: 258, μ: 2196, ~: 2250) FixedPointMathLibTest:testCbrtWadDebug() (gas: 7361) FixedPointMathLibTest:testCbrtWadMonotonicallyIncreasing() (gas: 4700) -FixedPointMathLibTest:testCbrtWadMonotonicallyIncreasing(uint256,uint256) (runs: 257, μ: 3256, ~: 2381) -FixedPointMathLibTest:testClamp(uint256,uint256,uint256) (runs: 257, μ: 591, ~: 591) -FixedPointMathLibTest:testClampSigned(int256,int256,int256) (runs: 257, μ: 611, ~: 611) +FixedPointMathLibTest:testCbrtWadMonotonicallyIncreasing(uint256,uint256) (runs: 258, μ: 3259, ~: 2381) +FixedPointMathLibTest:testClamp(uint256,uint256,uint256) (runs: 258, μ: 591, ~: 591) +FixedPointMathLibTest:testClampSigned(int256,int256,int256) (runs: 258, μ: 611, ~: 611) FixedPointMathLibTest:testDist() (gas: 656) -FixedPointMathLibTest:testDist(int256,int256) (runs: 257, μ: 542, ~: 547) +FixedPointMathLibTest:testDist(int256,int256) (runs: 258, μ: 542, ~: 547) FixedPointMathLibTest:testDistEdgeCases() (gas: 548) FixedPointMathLibTest:testDivWad() (gas: 725) -FixedPointMathLibTest:testDivWad(uint256,uint256) (runs: 257, μ: 784, ~: 869) +FixedPointMathLibTest:testDivWad(uint256,uint256) (runs: 258, μ: 783, ~: 869) FixedPointMathLibTest:testDivWadEdgeCases() (gas: 414) -FixedPointMathLibTest:testDivWadOverflowReverts(uint256,uint256) (runs: 256, μ: 3771, ~: 3771) +FixedPointMathLibTest:testDivWadOverflowReverts(uint256,uint256) (runs: 257, μ: 3771, ~: 3771) FixedPointMathLibTest:testDivWadUp() (gas: 3129) -FixedPointMathLibTest:testDivWadUp(uint256,uint256) (runs: 257, μ: 904, ~: 1009) +FixedPointMathLibTest:testDivWadUp(uint256,uint256) (runs: 258, μ: 903, ~: 1009) FixedPointMathLibTest:testDivWadUpEdgeCases() (gas: 483) -FixedPointMathLibTest:testDivWadUpOverflowReverts(uint256,uint256) (runs: 256, μ: 3770, ~: 3770) +FixedPointMathLibTest:testDivWadUpOverflowReverts(uint256,uint256) (runs: 257, μ: 3770, ~: 3770) FixedPointMathLibTest:testDivWadUpZeroDenominatorReverts() (gas: 3239) -FixedPointMathLibTest:testDivWadUpZeroDenominatorReverts(uint256) (runs: 257, μ: 3273, ~: 3273) +FixedPointMathLibTest:testDivWadUpZeroDenominatorReverts(uint256) (runs: 258, μ: 3273, ~: 3273) FixedPointMathLibTest:testDivWadZeroDenominatorReverts() (gas: 3262) -FixedPointMathLibTest:testDivWadZeroDenominatorReverts(uint256) (runs: 257, μ: 3315, ~: 3315) +FixedPointMathLibTest:testDivWadZeroDenominatorReverts(uint256) (runs: 258, μ: 3315, ~: 3315) FixedPointMathLibTest:testExpWad() (gas: 8047) FixedPointMathLibTest:testFactorial() (gas: 98469) FixedPointMathLibTest:testFactorialOriginal() (gas: 94187) FixedPointMathLibTest:testFullMulDiv() (gas: 1106) -FixedPointMathLibTest:testFullMulDiv(uint256,uint256,uint256) (runs: 257, μ: 1388, ~: 983) -FixedPointMathLibTest:testFullMulDivAlwaysRevertsIfDivisorIsZero(uint256,uint256) (runs: 257, μ: 3456, ~: 3456) +FixedPointMathLibTest:testFullMulDiv(uint256,uint256,uint256) (runs: 258, μ: 1388, ~: 983) +FixedPointMathLibTest:testFullMulDivAlwaysRevertsIfDivisorIsZero(uint256,uint256) (runs: 258, μ: 3456, ~: 3456) FixedPointMathLibTest:testFullMulDivUnchecked() (gas: 1613) -FixedPointMathLibTest:testFullMulDivUnchecked(uint256,uint256,uint256) (runs: 257, μ: 1672, ~: 1565) -FixedPointMathLibTest:testFullMulDivUp(uint256,uint256,uint256) (runs: 257, μ: 1723, ~: 1405) +FixedPointMathLibTest:testFullMulDivUnchecked(uint256,uint256,uint256) (runs: 258, μ: 1672, ~: 1629) +FixedPointMathLibTest:testFullMulDivUp(uint256,uint256,uint256) (runs: 258, μ: 1724, ~: 1405) FixedPointMathLibTest:testFullMulDivUpRevertsIfRoundedUpResultOverflowsCase1() (gas: 3694) FixedPointMathLibTest:testFullMulDivUpRevertsIfRoundedUpResultOverflowsCase2() (gas: 3727) FixedPointMathLibTest:testGcd() (gas: 4206) -FixedPointMathLibTest:testGcd(uint256,uint256) (runs: 257, μ: 6731, ~: 3170) +FixedPointMathLibTest:testGcd(uint256,uint256) (runs: 258, μ: 6736, ~: 3170) FixedPointMathLibTest:testLambertW0WadAccuracy() (gas: 7160) -FixedPointMathLibTest:testLambertW0WadAccuracy(uint184) (runs: 257, μ: 2179, ~: 409) +FixedPointMathLibTest:testLambertW0WadAccuracy(uint184) (runs: 258, μ: 2187, ~: 409) FixedPointMathLibTest:testLambertW0WadKnownValues() (gas: 1685570) FixedPointMathLibTest:testLambertW0WadMonoDebug() (gas: 770645) FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasing() (gas: 18416531) -FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasing(int256,int256) (runs: 257, μ: 7305, ~: 6993) +FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasing(int256,int256) (runs: 258, μ: 7308, ~: 7002) FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasing2() (gas: 4035368) -FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasingAround(int256) (runs: 257, μ: 28220, ~: 35428) -FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasingAround2(uint96) (runs: 257, μ: 55152, ~: 17618) +FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasingAround(int256) (runs: 258, μ: 28248, ~: 35428) +FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasingAround2(uint96) (runs: 258, μ: 55081, ~: 17618) FixedPointMathLibTest:testLambertW0WadRevertsForOutOfDomain() (gas: 16586) FixedPointMathLibTest:testLambertW0WadWithinBounds() (gas: 122061) -FixedPointMathLibTest:testLambertW0WadWithinBounds(int256) (runs: 257, μ: 3491, ~: 4962) +FixedPointMathLibTest:testLambertW0WadWithinBounds(int256) (runs: 258, μ: 3496, ~: 4962) FixedPointMathLibTest:testLerpInt() (gas: 6461) -FixedPointMathLibTest:testLerpInt(int256,int256,int256,int256,int256) (runs: 257, μ: 1649, ~: 1176) +FixedPointMathLibTest:testLerpInt(int256,int256,int256,int256,int256) (runs: 258, μ: 1647, ~: 1176) FixedPointMathLibTest:testLerpUint() (gas: 6420) -FixedPointMathLibTest:testLerpUint(uint256,uint256,uint256,uint256,uint256) (runs: 257, μ: 1131, ~: 841) +FixedPointMathLibTest:testLerpUint(uint256,uint256,uint256,uint256,uint256) (runs: 258, μ: 1130, ~: 841) FixedPointMathLibTest:testLnWad() (gas: 2032) FixedPointMathLibTest:testLnWadBig() (gas: 2087) FixedPointMathLibTest:testLnWadNegativeReverts() (gas: 3341) FixedPointMathLibTest:testLnWadOverflowReverts() (gas: 3359) FixedPointMathLibTest:testLnWadSmall() (gas: 2644) FixedPointMathLibTest:testLog10() (gas: 76212) -FixedPointMathLibTest:testLog10(uint256,uint256) (runs: 257, μ: 2185, ~: 2210) +FixedPointMathLibTest:testLog10(uint256,uint256) (runs: 258, μ: 2186, ~: 2210) FixedPointMathLibTest:testLog10Up() (gas: 4435) FixedPointMathLibTest:testLog2() (gas: 243209) FixedPointMathLibTest:testLog256() (gas: 22809) -FixedPointMathLibTest:testLog256(uint256,uint256) (runs: 257, μ: 2096, ~: 2151) +FixedPointMathLibTest:testLog256(uint256,uint256) (runs: 258, μ: 2096, ~: 2151) FixedPointMathLibTest:testLog256Up() (gas: 1271) -FixedPointMathLibTest:testLog2Differential(uint256) (runs: 257, μ: 913, ~: 909) +FixedPointMathLibTest:testLog2Differential(uint256) (runs: 258, μ: 914, ~: 909) FixedPointMathLibTest:testLog2Up() (gas: 297346) -FixedPointMathLibTest:testMax(uint256,uint256) (runs: 257, μ: 540, ~: 545) -FixedPointMathLibTest:testMaxCasted(uint32,uint32,uint256) (runs: 257, μ: 869, ~: 874) -FixedPointMathLibTest:testMaxSigned(int256,int256) (runs: 257, μ: 519, ~: 515) -FixedPointMathLibTest:testMin(uint256,uint256) (runs: 257, μ: 476, ~: 472) -FixedPointMathLibTest:testMinBrutalized(uint256,uint256) (runs: 257, μ: 872, ~: 863) -FixedPointMathLibTest:testMinSigned(int256,int256) (runs: 257, μ: 541, ~: 546) +FixedPointMathLibTest:testMax(uint256,uint256) (runs: 258, μ: 540, ~: 545) +FixedPointMathLibTest:testMaxCasted(uint32,uint32,uint256) (runs: 258, μ: 869, ~: 874) +FixedPointMathLibTest:testMaxSigned(int256,int256) (runs: 258, μ: 519, ~: 515) +FixedPointMathLibTest:testMin(uint256,uint256) (runs: 258, μ: 476, ~: 472) +FixedPointMathLibTest:testMinBrutalized(uint256,uint256) (runs: 258, μ: 872, ~: 863) +FixedPointMathLibTest:testMinSigned(int256,int256) (runs: 258, μ: 541, ~: 546) FixedPointMathLibTest:testMulDiv() (gas: 1868) -FixedPointMathLibTest:testMulDiv(uint256,uint256,uint256) (runs: 257, μ: 1643, ~: 858) +FixedPointMathLibTest:testMulDiv(uint256,uint256,uint256) (runs: 258, μ: 1650, ~: 858) FixedPointMathLibTest:testMulDivEdgeCases() (gas: 762) -FixedPointMathLibTest:testMulDivOverflowReverts(uint256,uint256,uint256) (runs: 256, μ: 3847, ~: 3847) +FixedPointMathLibTest:testMulDivOverflowReverts(uint256,uint256,uint256) (runs: 257, μ: 3847, ~: 3847) FixedPointMathLibTest:testMulDivUp() (gas: 2148) -FixedPointMathLibTest:testMulDivUp(uint256,uint256,uint256) (runs: 257, μ: 1818, ~: 1121) +FixedPointMathLibTest:testMulDivUp(uint256,uint256,uint256) (runs: 258, μ: 1824, ~: 1121) FixedPointMathLibTest:testMulDivUpEdgeCases() (gas: 840) -FixedPointMathLibTest:testMulDivUpOverflowReverts(uint256,uint256,uint256) (runs: 256, μ: 3902, ~: 3902) +FixedPointMathLibTest:testMulDivUpOverflowReverts(uint256,uint256,uint256) (runs: 257, μ: 3902, ~: 3902) FixedPointMathLibTest:testMulDivUpZeroDenominator() (gas: 3234) -FixedPointMathLibTest:testMulDivUpZeroDenominatorReverts(uint256,uint256) (runs: 257, μ: 3335, ~: 3335) +FixedPointMathLibTest:testMulDivUpZeroDenominatorReverts(uint256,uint256) (runs: 258, μ: 3335, ~: 3335) FixedPointMathLibTest:testMulDivZeroDenominatorReverts() (gas: 3256) -FixedPointMathLibTest:testMulDivZeroDenominatorReverts(uint256,uint256) (runs: 257, μ: 3380, ~: 3380) +FixedPointMathLibTest:testMulDivZeroDenominatorReverts(uint256,uint256) (runs: 258, μ: 3380, ~: 3380) FixedPointMathLibTest:testMulWad() (gas: 714) -FixedPointMathLibTest:testMulWad(uint256,uint256) (runs: 257, μ: 726, ~: 855) +FixedPointMathLibTest:testMulWad(uint256,uint256) (runs: 258, μ: 725, ~: 855) FixedPointMathLibTest:testMulWadEdgeCases() (gas: 737) -FixedPointMathLibTest:testMulWadOverflowReverts(uint256,uint256) (runs: 256, μ: 3769, ~: 3769) +FixedPointMathLibTest:testMulWadOverflowReverts(uint256,uint256) (runs: 257, μ: 3769, ~: 3769) FixedPointMathLibTest:testMulWadUp() (gas: 815) -FixedPointMathLibTest:testMulWadUp(uint256,uint256) (runs: 257, μ: 846, ~: 1043) +FixedPointMathLibTest:testMulWadUp(uint256,uint256) (runs: 258, μ: 844, ~: 1043) FixedPointMathLibTest:testMulWadUpEdgeCases() (gas: 793) -FixedPointMathLibTest:testMulWadUpOverflowReverts(uint256,uint256) (runs: 256, μ: 3834, ~: 3834) +FixedPointMathLibTest:testMulWadUpOverflowReverts(uint256,uint256) (runs: 257, μ: 3834, ~: 3834) FixedPointMathLibTest:testPackUnpackSci() (gas: 129327) -FixedPointMathLibTest:testPackUnpackSci(uint256) (runs: 257, μ: 30159, ~: 30149) +FixedPointMathLibTest:testPackUnpackSci(uint256) (runs: 258, μ: 30160, ~: 30149) FixedPointMathLibTest:testRPow() (gas: 3298) FixedPointMathLibTest:testRPowOverflowReverts() (gas: 4974) -FixedPointMathLibTest:testRawAdd(int256,int256) (runs: 257, μ: 462, ~: 462) -FixedPointMathLibTest:testRawAdd(uint256,uint256) (runs: 257, μ: 463, ~: 463) -FixedPointMathLibTest:testRawAddMod(uint256,uint256,uint256) (runs: 257, μ: 577, ~: 577) -FixedPointMathLibTest:testRawDiv(uint256,uint256) (runs: 257, μ: 466, ~: 466) -FixedPointMathLibTest:testRawMod(uint256,uint256) (runs: 257, μ: 464, ~: 464) -FixedPointMathLibTest:testRawMul(int256,int256) (runs: 257, μ: 412, ~: 412) -FixedPointMathLibTest:testRawMul(uint256,uint256) (runs: 257, μ: 485, ~: 485) -FixedPointMathLibTest:testRawMulMod(uint256,uint256,uint256) (runs: 257, μ: 579, ~: 579) -FixedPointMathLibTest:testRawSDiv(int256,int256) (runs: 257, μ: 443, ~: 443) -FixedPointMathLibTest:testRawSMod(int256,int256) (runs: 257, μ: 466, ~: 466) -FixedPointMathLibTest:testRawSub(int256,int256) (runs: 257, μ: 441, ~: 441) -FixedPointMathLibTest:testRawSub(uint256,uint256) (runs: 257, μ: 463, ~: 463) +FixedPointMathLibTest:testRawAdd(int256,int256) (runs: 258, μ: 462, ~: 462) +FixedPointMathLibTest:testRawAdd(uint256,uint256) (runs: 258, μ: 463, ~: 463) +FixedPointMathLibTest:testRawAddMod(uint256,uint256,uint256) (runs: 258, μ: 577, ~: 577) +FixedPointMathLibTest:testRawDiv(uint256,uint256) (runs: 258, μ: 466, ~: 466) +FixedPointMathLibTest:testRawMod(uint256,uint256) (runs: 258, μ: 464, ~: 464) +FixedPointMathLibTest:testRawMul(int256,int256) (runs: 258, μ: 412, ~: 412) +FixedPointMathLibTest:testRawMul(uint256,uint256) (runs: 258, μ: 485, ~: 485) +FixedPointMathLibTest:testRawMulMod(uint256,uint256,uint256) (runs: 258, μ: 579, ~: 579) +FixedPointMathLibTest:testRawSDiv(int256,int256) (runs: 258, μ: 443, ~: 443) +FixedPointMathLibTest:testRawSMod(int256,int256) (runs: 258, μ: 466, ~: 466) +FixedPointMathLibTest:testRawSub(int256,int256) (runs: 258, μ: 441, ~: 441) +FixedPointMathLibTest:testRawSub(uint256,uint256) (runs: 258, μ: 463, ~: 463) FixedPointMathLibTest:testSDivWad() (gas: 894) -FixedPointMathLibTest:testSDivWad(int256,int256) (runs: 257, μ: 847, ~: 971) +FixedPointMathLibTest:testSDivWad(int256,int256) (runs: 258, μ: 845, ~: 971) FixedPointMathLibTest:testSDivWadEdgeCases() (gas: 422) -FixedPointMathLibTest:testSDivWadOverflowReverts(int256,int256) (runs: 256, μ: 3781, ~: 3781) -FixedPointMathLibTest:testSDivWadZeroDenominatorReverts(int256) (runs: 257, μ: 3330, ~: 3330) +FixedPointMathLibTest:testSDivWadOverflowReverts(int256,int256) (runs: 257, μ: 3781, ~: 3781) +FixedPointMathLibTest:testSDivWadZeroDenominatorReverts(int256) (runs: 258, μ: 3330, ~: 3330) FixedPointMathLibTest:testSMulWad() (gas: 1010) -FixedPointMathLibTest:testSMulWad(int256,int256) (runs: 257, μ: 849, ~: 1025) +FixedPointMathLibTest:testSMulWad(int256,int256) (runs: 258, μ: 847, ~: 1025) FixedPointMathLibTest:testSMulWadEdgeCases() (gas: 1309) -FixedPointMathLibTest:testSMulWadOverflowRevertsOnCondition1(int256,int256) (runs: 256, μ: 3820, ~: 3820) +FixedPointMathLibTest:testSMulWadOverflowRevertsOnCondition1(int256,int256) (runs: 257, μ: 3820, ~: 3820) FixedPointMathLibTest:testSMulWadOverflowRevertsOnCondition2(int256) (runs: 257, μ: 3729, ~: 3729) -FixedPointMathLibTest:testSMulWadOverflowTrickDifferential(int256,int256) (runs: 257, μ: 621, ~: 632) +FixedPointMathLibTest:testSMulWadOverflowTrickDifferential(int256,int256) (runs: 258, μ: 621, ~: 632) FixedPointMathLibTest:testSci() (gas: 1838614) -FixedPointMathLibTest:testSci(uint256) (runs: 257, μ: 34818, ~: 40023) -FixedPointMathLibTest:testSci2(uint256) (runs: 257, μ: 935, ~: 933) +FixedPointMathLibTest:testSci(uint256) (runs: 258, μ: 34704, ~: 40023) +FixedPointMathLibTest:testSci2(uint256) (runs: 258, μ: 935, ~: 933) FixedPointMathLibTest:testSqrt() (gas: 43776) -FixedPointMathLibTest:testSqrt(uint256) (runs: 257, μ: 1046, ~: 1054) -FixedPointMathLibTest:testSqrtBack(uint256) (runs: 257, μ: 10028, ~: 386) -FixedPointMathLibTest:testSqrtHashed(uint256) (runs: 257, μ: 54681, ~: 55063) +FixedPointMathLibTest:testSqrt(uint256) (runs: 258, μ: 1046, ~: 1054) +FixedPointMathLibTest:testSqrtBack(uint256) (runs: 258, μ: 10164, ~: 386) +FixedPointMathLibTest:testSqrtHashed(uint256) (runs: 258, μ: 54679, ~: 54850) FixedPointMathLibTest:testSqrtHashedSingle() (gas: 54610) FixedPointMathLibTest:testSqrtWad() (gas: 7981) -FixedPointMathLibTest:testSqrtWad(uint256) (runs: 257, μ: 1655, ~: 1580) -FixedPointMathLibTest:testSqrtWadConverged(uint256) (runs: 257, μ: 1952, ~: 1984) -FixedPointMathLibTest:testSqrtWadMonotonicallyIncreasing(uint256,uint256) (runs: 257, μ: 2166, ~: 1825) -FixedPointMathLibTest:testTernary(bool,uint256,uint256) (runs: 257, μ: 518, ~: 514) -FixedPointMathLibTest:testZeroFloorSub(uint256,uint256) (runs: 257, μ: 569, ~: 540) -FixedPointMathLibTest:testZeroFloorSubCasted(uint32,uint32,uint256) (runs: 257, μ: 926, ~: 890) +FixedPointMathLibTest:testSqrtWad(uint256) (runs: 258, μ: 1656, ~: 1580) +FixedPointMathLibTest:testSqrtWadConverged(uint256) (runs: 258, μ: 1952, ~: 1984) +FixedPointMathLibTest:testSqrtWadMonotonicallyIncreasing(uint256,uint256) (runs: 258, μ: 2168, ~: 1825) +FixedPointMathLibTest:testTernary(bool,uint256,uint256) (runs: 258, μ: 518, ~: 514) +FixedPointMathLibTest:testZeroFloorSub(uint256,uint256) (runs: 258, μ: 569, ~: 540) +FixedPointMathLibTest:testZeroFloorSubCasted(uint32,uint32,uint256) (runs: 258, μ: 926, ~: 890) FixedPointMathLibTest:test__codesize() (gas: 45539) GasBurnerLibTest:testBurnGas() (gas: 1700805) GasBurnerLibTest:test__codesize() (gas: 1189) InitializableTest:testDisableInitializers() (gas: 42010) InitializableTest:testInitializableConstructor() (gas: 691882) InitializableTest:testInitialize() (gas: 54688) -InitializableTest:testInitializeInititalizerTrick(bool,uint64,uint16) (runs: 257, μ: 791, ~: 791) -InitializableTest:testInitializeReinititalize(uint256) (runs: 257, μ: 95590, ~: 95978) -InitializableTest:testInitializeReinititalizerTrick(bool,uint64,uint64) (runs: 257, μ: 674, ~: 687) +InitializableTest:testInitializeInititalizerTrick(bool,uint64,uint16) (runs: 258, μ: 791, ~: 791) +InitializableTest:testInitializeReinititalize(uint256) (runs: 258, μ: 95524, ~: 95964) +InitializableTest:testInitializeReinititalizerTrick(bool,uint64,uint64) (runs: 258, μ: 674, ~: 687) InitializableTest:testOnlyInitializing() (gas: 10420) InitializableTest:test__codesize() (gas: 10406) -JSONParserLibTest:testDecodeEncodedStringDoesNotRevert(string) (runs: 257, μ: 57519, ~: 56354) +JSONParserLibTest:testDecodeEncodedStringDoesNotRevert(string) (runs: 258, μ: 57514, ~: 56354) JSONParserLibTest:testDecodeInvalidStringReverts() (gas: 172692) JSONParserLibTest:testDecodeString() (gas: 192954) JSONParserLibTest:testEmptyItem() (gas: 2913) @@ -572,9 +572,9 @@ JSONParserLibTest:testParseEmptyArrays() (gas: 499245) JSONParserLibTest:testParseEmptyObjects() (gas: 500206) JSONParserLibTest:testParseGas() (gas: 151909) JSONParserLibTest:testParseInt() (gas: 203956) -JSONParserLibTest:testParseInt(int256) (runs: 257, μ: 18736, ~: 17387) -JSONParserLibTest:testParseIntReverts(uint256) (runs: 257, μ: 55907, ~: 55896) -JSONParserLibTest:testParseIntTrick(uint256,bool) (runs: 257, μ: 528, ~: 532) +JSONParserLibTest:testParseInt(int256) (runs: 258, μ: 18768, ~: 17447) +JSONParserLibTest:testParseIntReverts(uint256) (runs: 258, μ: 55907, ~: 55896) +JSONParserLibTest:testParseIntTrick(uint256,bool) (runs: 258, μ: 528, ~: 532) JSONParserLibTest:testParseInvalidIntReverts() (gas: 210407) JSONParserLibTest:testParseInvalidNumberReverts() (gas: 4066057) JSONParserLibTest:testParseInvalidReverts() (gas: 8584964) @@ -590,146 +590,146 @@ JSONParserLibTest:testParseSimpleUintArray() (gas: 1175003) JSONParserLibTest:testParseSpecials() (gas: 260178) JSONParserLibTest:testParseString() (gas: 1236853) JSONParserLibTest:testParseUint() (gas: 95512) -JSONParserLibTest:testParseUint(uint256) (runs: 257, μ: 35407, ~: 31602) +JSONParserLibTest:testParseUint(uint256) (runs: 258, μ: 35454, ~: 31742) JSONParserLibTest:testParseUintFromHex() (gas: 1381018) -JSONParserLibTest:testParseValidObjectDoesNotRevert(string,string) (runs: 257, μ: 49777, ~: 48726) +JSONParserLibTest:testParseValidObjectDoesNotRevert(string,string) (runs: 258, μ: 49764, ~: 48725) JSONParserLibTest:test__codesize() (gas: 38015) LibBitTest:testAnd() (gas: 185887) -LibBitTest:testAnd(bool,bool) (runs: 257, μ: 632, ~: 634) -LibBitTest:testAutoClean(uint256,uint256) (runs: 257, μ: 468, ~: 468) -LibBitTest:testBoolToUint(bool) (runs: 257, μ: 485, ~: 485) +LibBitTest:testAnd(bool,bool) (runs: 258, μ: 632, ~: 634) +LibBitTest:testAutoClean(uint256,uint256) (runs: 258, μ: 468, ~: 468) +LibBitTest:testBoolToUint(bool) (runs: 258, μ: 485, ~: 485) LibBitTest:testCLZ() (gas: 297260) LibBitTest:testFFS() (gas: 152877) LibBitTest:testFLS() (gas: 245237) LibBitTest:testIsPo2() (gas: 57663) -LibBitTest:testIsPo2(uint256) (runs: 257, μ: 3494, ~: 2002) -LibBitTest:testIsPo2(uint8,uint8) (runs: 257, μ: 623, ~: 624) +LibBitTest:testIsPo2(uint256) (runs: 258, μ: 3511, ~: 2002) +LibBitTest:testIsPo2(uint8,uint8) (runs: 258, μ: 623, ~: 624) LibBitTest:testOr() (gas: 188733) -LibBitTest:testOr(bool,bool) (runs: 257, μ: 649, ~: 648) +LibBitTest:testOr(bool,bool) (runs: 258, μ: 649, ~: 648) LibBitTest:testPassInBool() (gas: 830) LibBitTest:testPopCount() (gas: 63738) -LibBitTest:testPopCount(uint256) (runs: 257, μ: 3636, ~: 2144) +LibBitTest:testPopCount(uint256) (runs: 258, μ: 3653, ~: 2144) LibBitTest:testReturnsBool() (gas: 779) LibBitTest:testReverseBits() (gas: 131521) -LibBitTest:testReverseBitsDifferential(uint256) (runs: 257, μ: 18724, ~: 18724) +LibBitTest:testReverseBitsDifferential(uint256) (runs: 258, μ: 18724, ~: 18724) LibBitTest:testReverseBytes() (gas: 12492) -LibBitTest:testReverseBytesDifferential(uint256) (runs: 257, μ: 2675, ~: 2675) +LibBitTest:testReverseBytesDifferential(uint256) (runs: 258, μ: 2675, ~: 2675) LibBitTest:test__codesize() (gas: 5767) LibBitmapTest:testBitmapClaimWithGetSet() (gas: 27155) LibBitmapTest:testBitmapClaimWithToggle() (gas: 17392) LibBitmapTest:testBitmapFindLastSet() (gas: 1300541) -LibBitmapTest:testBitmapFindLastSet(uint256,uint256) (runs: 257, μ: 76118, ~: 76094) +LibBitmapTest:testBitmapFindLastSet(uint256,uint256) (runs: 258, μ: 76119, ~: 76094) LibBitmapTest:testBitmapFindLastSet2() (gas: 23882) LibBitmapTest:testBitmapGet() (gas: 2513) -LibBitmapTest:testBitmapGet(uint256) (runs: 257, μ: 2586, ~: 2586) +LibBitmapTest:testBitmapGet(uint256) (runs: 258, μ: 2586, ~: 2586) LibBitmapTest:testBitmapPopCount() (gas: 750426) -LibBitmapTest:testBitmapPopCount(uint256,uint256,uint256) (runs: 257, μ: 207551, ~: 171183) +LibBitmapTest:testBitmapPopCount(uint256,uint256,uint256) (runs: 258, μ: 207309, ~: 171118) LibBitmapTest:testBitmapPopCountAcrossMultipleBuckets() (gas: 73611) LibBitmapTest:testBitmapPopCountWithinSingleBucket() (gas: 34054) LibBitmapTest:testBitmapSet() (gas: 22549) -LibBitmapTest:testBitmapSet(uint256) (runs: 257, μ: 22621, ~: 22621) -LibBitmapTest:testBitmapSetAndGet(uint256) (runs: 257, μ: 22655, ~: 22655) +LibBitmapTest:testBitmapSet(uint256) (runs: 258, μ: 22621, ~: 22621) +LibBitmapTest:testBitmapSetAndGet(uint256) (runs: 258, μ: 22655, ~: 22655) LibBitmapTest:testBitmapSetBatch() (gas: 3009999) LibBitmapTest:testBitmapSetBatchAcrossMultipleBuckets() (gas: 438393) LibBitmapTest:testBitmapSetBatchWithinSingleBucket() (gas: 389011) LibBitmapTest:testBitmapSetTo() (gas: 14292) -LibBitmapTest:testBitmapSetTo(uint256,bool,uint256) (runs: 257, μ: 12651, ~: 2888) -LibBitmapTest:testBitmapSetTo(uint256,uint256) (runs: 257, μ: 44466, ~: 49958) +LibBitmapTest:testBitmapSetTo(uint256,bool,uint256) (runs: 258, μ: 12690, ~: 2888) +LibBitmapTest:testBitmapSetTo(uint256,uint256) (runs: 258, μ: 44493, ~: 49958) LibBitmapTest:testBitmapToggle() (gas: 30828) -LibBitmapTest:testBitmapToggle(uint256,bool) (runs: 257, μ: 18926, ~: 23125) +LibBitmapTest:testBitmapToggle(uint256,bool) (runs: 258, μ: 18907, ~: 23125) LibBitmapTest:testBitmapUnset() (gas: 22528) -LibBitmapTest:testBitmapUnset(uint256) (runs: 257, μ: 14322, ~: 14337) +LibBitmapTest:testBitmapUnset(uint256) (runs: 258, μ: 14322, ~: 14337) LibBitmapTest:testBitmapUnsetBatch() (gas: 2991450) LibBitmapTest:testBitmapUnsetBatchAcrossMultipleBuckets() (gas: 438470) LibBitmapTest:testBitmapUnsetBatchWithinSingleBucket() (gas: 445869) LibBitmapTest:test__codesize() (gas: 7169) LibCloneTest:testClone() (gas: 72955) -LibCloneTest:testClone(uint256) (runs: 257, μ: 73027, ~: 73027) +LibCloneTest:testClone(uint256) (runs: 258, μ: 73027, ~: 73027) LibCloneTest:testCloneDeteministicWithImmutableArgs() (gas: 192023) -LibCloneTest:testCloneDeteministicWithImmutableArgs(address,uint256,uint256[],bytes,uint64,uint8,uint256) (runs: 257, μ: 1110143, ~: 1063747) +LibCloneTest:testCloneDeteministicWithImmutableArgs(address,uint256,uint256[],bytes,uint64,uint8,uint256) (runs: 258, μ: 1111902, ~: 1066389) LibCloneTest:testCloneDeterministic() (gas: 96960) -LibCloneTest:testCloneDeterministic(uint256,bytes32) (runs: 257, μ: 97029, ~: 97029) +LibCloneTest:testCloneDeterministic(uint256,bytes32) (runs: 258, μ: 97029, ~: 97029) LibCloneTest:testCloneDeterministicRevertsIfAddressAlreadyUsed() (gas: 96882842) LibCloneTest:testCloneWithImmutableArgs() (gas: 120864) -LibCloneTest:testCloneWithImmutableArgs(uint256,address,uint256,uint256[],uint64,uint8) (runs: 257, μ: 985510, ~: 968628) +LibCloneTest:testCloneWithImmutableArgs(uint256,address,uint256,uint256[],uint64,uint8) (runs: 258, μ: 988903, ~: 972135) LibCloneTest:testCloneWithImmutableArgsRevertsIfDataTooBig() (gas: 97305794) -LibCloneTest:testCreateDeterministicERC1967(uint256,bytes32) (runs: 257, μ: 125124, ~: 125124) -LibCloneTest:testCreateDeterministicERC1967BeaconProxy(uint256,bytes32) (runs: 257, μ: 327732, ~: 357211) -LibCloneTest:testCreateDeterministicERC1967I(uint256,bytes32) (runs: 257, μ: 129450, ~: 129450) +LibCloneTest:testCreateDeterministicERC1967(uint256,bytes32) (runs: 258, μ: 125124, ~: 125124) +LibCloneTest:testCreateDeterministicERC1967BeaconProxy(uint256,bytes32) (runs: 258, μ: 327604, ~: 357211) +LibCloneTest:testCreateDeterministicERC1967I(uint256,bytes32) (runs: 258, μ: 129450, ~: 129450) LibCloneTest:testDeployDeterministicERC1967() (gas: 123217) -LibCloneTest:testDeployDeterministicERC1967(uint256,bytes32) (runs: 257, μ: 123244, ~: 123244) -LibCloneTest:testDeployDeterministicERC1967BeaconProxy(uint256,bytes32) (runs: 257, μ: 323017, ~: 293312) +LibCloneTest:testDeployDeterministicERC1967(uint256,bytes32) (runs: 258, μ: 123244, ~: 123244) +LibCloneTest:testDeployDeterministicERC1967BeaconProxy(uint256,bytes32) (runs: 258, μ: 322901, ~: 293312) LibCloneTest:testDeployDeterministicERC1967I() (gas: 127555) -LibCloneTest:testDeployDeterministicERC1967I(uint256,bytes32) (runs: 257, μ: 127581, ~: 127581) +LibCloneTest:testDeployDeterministicERC1967I(uint256,bytes32) (runs: 258, μ: 127581, ~: 127581) LibCloneTest:testDeployERC1967() (gas: 99244) -LibCloneTest:testDeployERC1967(uint256) (runs: 257, μ: 99273, ~: 99273) -LibCloneTest:testDeployERC1967BeaconProxy(uint256) (runs: 257, μ: 301114, ~: 331327) -LibCloneTest:testDeployERC1967BeaconProxyCodeHashAndLength(address) (runs: 257, μ: 142512, ~: 142512) -LibCloneTest:testDeployERC1967CodeHashAndLength(address) (runs: 257, μ: 134051, ~: 134051) +LibCloneTest:testDeployERC1967(uint256) (runs: 258, μ: 99273, ~: 99273) +LibCloneTest:testDeployERC1967BeaconProxy(uint256) (runs: 258, μ: 301231, ~: 331327) +LibCloneTest:testDeployERC1967BeaconProxyCodeHashAndLength(address) (runs: 258, μ: 142512, ~: 142512) +LibCloneTest:testDeployERC1967CodeHashAndLength(address) (runs: 258, μ: 134051, ~: 134051) LibCloneTest:testDeployERC1967I() (gas: 103584) -LibCloneTest:testDeployERC1967I(uint256) (runs: 257, μ: 103633, ~: 103633) -LibCloneTest:testDeployERC1967ICodeHashAndLength(address) (runs: 257, μ: 142468, ~: 142468) +LibCloneTest:testDeployERC1967I(uint256) (runs: 258, μ: 103633, ~: 103633) +LibCloneTest:testDeployERC1967ICodeHashAndLength(address) (runs: 258, μ: 142468, ~: 142468) LibCloneTest:testDeployERC1967ISpecialPath() (gas: 71720) -LibCloneTest:testDeployERC1967ISpecialPath(address,bytes1) (runs: 257, μ: 72177, ~: 72255) -LibCloneTest:testERC1967BeaconProxyGasBehavior(uint256,uint256) (runs: 257, μ: 293096, ~: 304564) -LibCloneTest:testERC1967ConstantBootstrap(address,bytes32) (runs: 257, μ: 153716, ~: 142026) -LibCloneTest:testInitCode(address,uint256,uint256) (runs: 257, μ: 1016727, ~: 837864) +LibCloneTest:testDeployERC1967ISpecialPath(address,bytes1) (runs: 258, μ: 72177, ~: 72255) +LibCloneTest:testERC1967BeaconProxyGasBehavior(uint256,uint256) (runs: 258, μ: 292976, ~: 304488) +LibCloneTest:testERC1967ConstantBootstrap(address,bytes32) (runs: 258, μ: 153652, ~: 142025) +LibCloneTest:testInitCode(address,uint256,uint256) (runs: 258, μ: 1016039, ~: 837876) LibCloneTest:testInitialDeposit() (gas: 607508) -LibCloneTest:testStartsWith(uint256) (runs: 257, μ: 29425, ~: 29409) +LibCloneTest:testStartsWith(uint256) (runs: 258, μ: 29425, ~: 29409) LibCloneTest:test__codesize() (gas: 26859) -LibERC6551Test:testComputeAccountAddress(address,bytes32,uint256,address,uint256) (runs: 257, μ: 204463, ~: 29313) -LibERC6551Test:testContext(address,bytes32,uint256,address,uint256) (runs: 257, μ: 101980, ~: 101978) -LibERC6551Test:testInitCodeHash(address,bytes32,uint256,address,uint256) (runs: 257, μ: 184907, ~: 24234) -LibERC6551Test:testIsERC6551Account(address,bytes32,uint256,address,uint256) (runs: 257, μ: 111887, ~: 112003) +LibERC6551Test:testComputeAccountAddress(address,bytes32,uint256,address,uint256) (runs: 258, μ: 206487, ~: 29313) +LibERC6551Test:testContext(address,bytes32,uint256,address,uint256) (runs: 258, μ: 101981, ~: 101978) +LibERC6551Test:testInitCodeHash(address,bytes32,uint256,address,uint256) (runs: 258, μ: 184285, ~: 24234) +LibERC6551Test:testIsERC6551Account(address,bytes32,uint256,address,uint256) (runs: 258, μ: 111891, ~: 112003) LibERC6551Test:test__codesize() (gas: 6400) -LibMapTest:testFoundStatementDifferential(uint256,uint256,uint256) (runs: 257, μ: 499, ~: 499) +LibMapTest:testFoundStatementDifferential(uint256,uint256,uint256) (runs: 258, μ: 499, ~: 499) LibMapTest:testGeneralMapFunctionsGas() (gas: 3304775) -LibMapTest:testGeneralMapFunctionsWithSmallBitWidths(uint256) (runs: 257, μ: 82538, ~: 85786) +LibMapTest:testGeneralMapFunctionsWithSmallBitWidths(uint256) (runs: 258, μ: 82567, ~: 85809) LibMapTest:testGeneralMapFunctionsWithZeroBitWidth() (gas: 12260) -LibMapTest:testGeneralMapSearchSorted(uint256) (runs: 257, μ: 199656, ~: 129320) +LibMapTest:testGeneralMapSearchSorted(uint256) (runs: 258, μ: 199481, ~: 129603) LibMapTest:testMapGetFromBigArray() (gas: 3330) LibMapTest:testMapGetUint8() (gas: 3313) LibMapTest:testMapSetUint8() (gas: 23276) LibMapTest:testMapSetUint8FromBigArray() (gas: 23263) -LibMapTest:testUint128MapSearchSorted(uint256) (runs: 257, μ: 177432, ~: 131248) +LibMapTest:testUint128MapSearchSorted(uint256) (runs: 258, μ: 177241, ~: 131248) LibMapTest:testUint128MapSetAndGet() (gas: 1607245) -LibMapTest:testUint128MapSetAndGet(uint256) (runs: 257, μ: 171645, ~: 169427) -LibMapTest:testUint128MapSetAndGet2(uint256) (runs: 257, μ: 68584, ~: 69420) -LibMapTest:testUint16MapSearchSorted(uint256) (runs: 257, μ: 94538, ~: 86043) +LibMapTest:testUint128MapSetAndGet(uint256) (runs: 258, μ: 171551, ~: 169425) +LibMapTest:testUint128MapSetAndGet2(uint256) (runs: 258, μ: 68587, ~: 69420) +LibMapTest:testUint16MapSearchSorted(uint256) (runs: 258, μ: 94534, ~: 86054) LibMapTest:testUint16MapSetAndGet() (gas: 958193) -LibMapTest:testUint16MapSetAndGet(uint256) (runs: 257, μ: 81166, ~: 81233) -LibMapTest:testUint16MapSetAndGet2(uint256) (runs: 257, μ: 66779, ~: 69185) -LibMapTest:testUint32MapSearchSorted(uint256) (runs: 257, μ: 108503, ~: 86140) +LibMapTest:testUint16MapSetAndGet(uint256) (runs: 258, μ: 81168, ~: 81233) +LibMapTest:testUint16MapSetAndGet2(uint256) (runs: 258, μ: 66788, ~: 69185) +LibMapTest:testUint32MapSearchSorted(uint256) (runs: 258, μ: 108520, ~: 86151) LibMapTest:testUint32MapSetAndGet() (gas: 1067093) -LibMapTest:testUint32MapSetAndGet(uint256) (runs: 257, μ: 109692, ~: 103617) -LibMapTest:testUint32MapSetAndGet2(uint256) (runs: 257, μ: 66590, ~: 69140) -LibMapTest:testUint32Maps(uint256) (runs: 257, μ: 66600, ~: 72264) -LibMapTest:testUint40MapSearchSorted(uint256) (runs: 257, μ: 128276, ~: 108725) +LibMapTest:testUint32MapSetAndGet(uint256) (runs: 258, μ: 109752, ~: 103620) +LibMapTest:testUint32MapSetAndGet2(uint256) (runs: 258, μ: 66600, ~: 69140) +LibMapTest:testUint32Maps(uint256) (runs: 258, μ: 66622, ~: 72264) +LibMapTest:testUint40MapSearchSorted(uint256) (runs: 258, μ: 128091, ~: 108725) LibMapTest:testUint40MapSetAndGet() (gas: 1127344) -LibMapTest:testUint40MapSetAndGet(uint256) (runs: 257, μ: 130123, ~: 125467) -LibMapTest:testUint40MapSetAndGet2(uint256) (runs: 257, μ: 67209, ~: 69214) -LibMapTest:testUint64MapSearchSorted(uint256) (runs: 257, μ: 131460, ~: 108348) +LibMapTest:testUint40MapSetAndGet(uint256) (runs: 258, μ: 130104, ~: 125463) +LibMapTest:testUint40MapSetAndGet2(uint256) (runs: 258, μ: 67218, ~: 69214) +LibMapTest:testUint64MapSearchSorted(uint256) (runs: 258, μ: 131361, ~: 108323) LibMapTest:testUint64MapSetAndGet() (gas: 1220437) -LibMapTest:testUint64MapSetAndGet(uint256) (runs: 257, μ: 139049, ~: 146522) -LibMapTest:testUint64MapSetAndGet2(uint256) (runs: 257, μ: 67733, ~: 69203) -LibMapTest:testUint8MapSearchSorted(uint256) (runs: 257, μ: 96770, ~: 86511) +LibMapTest:testUint64MapSetAndGet(uint256) (runs: 258, μ: 139081, ~: 146531) +LibMapTest:testUint64MapSetAndGet2(uint256) (runs: 258, μ: 67739, ~: 69203) +LibMapTest:testUint8MapSearchSorted(uint256) (runs: 258, μ: 96713, ~: 86502) LibMapTest:testUint8MapSetAndGet() (gas: 883454) -LibMapTest:testUint8MapSetAndGet(uint256) (runs: 257, μ: 59152, ~: 59107) -LibMapTest:testUint8MapSetAndGet2(uint256) (runs: 257, μ: 66724, ~: 69122) +LibMapTest:testUint8MapSetAndGet(uint256) (runs: 258, μ: 59152, ~: 59107) +LibMapTest:testUint8MapSetAndGet2(uint256) (runs: 258, μ: 66656, ~: 69122) LibMapTest:test__codesize() (gas: 12035) LibPRNGTest:testExponentialWad() (gas: 4394348) LibPRNGTest:testLCGGas() (gas: 20803) LibPRNGTest:testLazyShufflerGet() (gas: 298238) -LibPRNGTest:testLazyShufflerGetOutOfBoundsReverts(uint256,uint256) (runs: 257, μ: 26644, ~: 26667) +LibPRNGTest:testLazyShufflerGetOutOfBoundsReverts(uint256,uint256) (runs: 258, μ: 26644, ~: 26667) LibPRNGTest:testLazyShufflerNoStorageCollisions() (gas: 266115) -LibPRNGTest:testLazyShufflerProducesShuffledRange(uint256) (runs: 257, μ: 168290, ~: 91030) +LibPRNGTest:testLazyShufflerProducesShuffledRange(uint256) (runs: 258, μ: 167994, ~: 91030) LibPRNGTest:testLazyShufflerProducesShuffledRange2() (gas: 8974962) -LibPRNGTest:testLazyShufflerProducesShuffledRangeWithGrow(uint256,uint256) (runs: 257, μ: 187957, ~: 174665) +LibPRNGTest:testLazyShufflerProducesShuffledRangeWithGrow(uint256,uint256) (runs: 258, μ: 187910, ~: 174844) LibPRNGTest:testLazyShufflerRestart() (gas: 274850) LibPRNGTest:testLazyShufflerRevertsOnDoubleInit() (gas: 26824) -LibPRNGTest:testLazyShufflerRevertsOnFinshedNext(uint256) (runs: 257, μ: 62603, ~: 54996) -LibPRNGTest:testLazyShufflerRevertsOnGrowWithInvalidLength(uint256,uint256) (runs: 257, μ: 24688, ~: 24600) -LibPRNGTest:testLazyShufflerRevertsOnInitWithInvalidLength(uint256) (runs: 257, μ: 23061, ~: 23497) +LibPRNGTest:testLazyShufflerRevertsOnFinshedNext(uint256) (runs: 258, μ: 62564, ~: 54980) +LibPRNGTest:testLazyShufflerRevertsOnGrowWithInvalidLength(uint256,uint256) (runs: 258, μ: 24689, ~: 24600) +LibPRNGTest:testLazyShufflerRevertsOnInitWithInvalidLength(uint256) (runs: 258, μ: 23063, ~: 23561) LibPRNGTest:testLazyShufflerRevertsOnZeroLengthNext() (gas: 27776) LibPRNGTest:testPRNGGas() (gas: 25667) LibPRNGTest:testPRNGNext() (gas: 16162) @@ -743,325 +743,325 @@ LibPRNGTest:testPRNGShuffleGas() (gas: 1610927) LibPRNGTest:testPRNGUniform() (gas: 559430) LibPRNGTest:testStandardNormalWad() (gas: 4425913) LibPRNGTest:test__codesize() (gas: 14289) -LibRLPTest:testComputeAddressDifferential(address,uint256) (runs: 257, μ: 4201, ~: 3950) +LibRLPTest:testComputeAddressDifferential(address,uint256) (runs: 258, μ: 4203, ~: 3950) LibRLPTest:testComputeAddressForLargeNonces() (gas: 1760) LibRLPTest:testComputeAddressForSmallNonces() (gas: 1007) LibRLPTest:testComputeAddressOriginalForLargeNonces() (gas: 3766) LibRLPTest:testComputeAddressOriginalForSmallNonces() (gas: 2185) -LibRLPTest:testRLPEncodeAddressDifferential(address) (runs: 257, μ: 378300, ~: 637215) -LibRLPTest:testRLPEncodeAddressViaList(address,address) (runs: 257, μ: 270048, ~: 27588) -LibRLPTest:testRLPEncodeBool(bool) (runs: 257, μ: 27573, ~: 27579) +LibRLPTest:testRLPEncodeAddressDifferential(address) (runs: 258, μ: 379306, ~: 637249) +LibRLPTest:testRLPEncodeAddressViaList(address,address) (runs: 258, μ: 269107, ~: 27588) +LibRLPTest:testRLPEncodeBool(bool) (runs: 258, μ: 27573, ~: 27579) LibRLPTest:testRLPEncodeBytes() (gas: 382181) LibRLPTest:testRLPEncodeBytes2() (gas: 156293) -LibRLPTest:testRLPEncodeBytesDifferential(bytes32) (runs: 257, μ: 422005, ~: 638195) +LibRLPTest:testRLPEncodeBytesDifferential(bytes32) (runs: 258, μ: 420474, ~: 638170) LibRLPTest:testRLPEncodeList() (gas: 730914) LibRLPTest:testRLPEncodeList2() (gas: 806602) -LibRLPTest:testRLPEncodeListDifferential(bytes,uint256) (runs: 257, μ: 713176, ~: 651396) +LibRLPTest:testRLPEncodeListDifferential(bytes,uint256) (runs: 258, μ: 712931, ~: 651383) LibRLPTest:testRLPEncodeUint() (gas: 1555284) -LibRLPTest:testRLPEncodeUint(uint256) (runs: 257, μ: 166236, ~: 25294) -LibRLPTest:testRLPEncodeUintDifferential(uint256) (runs: 257, μ: 452897, ~: 27492) -LibRLPTest:testRLPMemory(bytes32) (runs: 257, μ: 473456, ~: 642771) +LibRLPTest:testRLPEncodeUint(uint256) (runs: 258, μ: 168065, ~: 25295) +LibRLPTest:testRLPEncodeUintDifferential(uint256) (runs: 258, μ: 451247, ~: 27470) +LibRLPTest:testRLPMemory(bytes32) (runs: 258, μ: 471727, ~: 642600) LibRLPTest:testRLPPUint256() (gas: 364901) -LibRLPTest:testSmallLog256Equivalence(uint256) (runs: 257, μ: 23653, ~: 23689) +LibRLPTest:testSmallLog256Equivalence(uint256) (runs: 258, μ: 23654, ~: 23689) LibRLPTest:test__codesize() (gas: 15119) -LibSortTest:testCopy(uint256) (runs: 257, μ: 119326, ~: 26807) -LibSortTest:testInsertionSortAddressesDifferential(uint256) (runs: 257, μ: 57465, ~: 25926) +LibSortTest:testCopy(uint256) (runs: 258, μ: 121309, ~: 26807) +LibSortTest:testInsertionSortAddressesDifferential(uint256) (runs: 258, μ: 57345, ~: 25928) LibSortTest:testInsertionSortInts() (gas: 112151) LibSortTest:testInsertionSortPsuedorandom() (gas: 62807) -LibSortTest:testInsertionSortPsuedorandom(uint256) (runs: 257, μ: 61723, ~: 61658) -LibSortTest:testIsSortedAddressesDifferential(uint256) (runs: 257, μ: 41606, ~: 29099) -LibSortTest:testIsSortedAndUniquifiedAddressesDifferential(uint256) (runs: 257, μ: 35159, ~: 28599) -LibSortTest:testIsSortedAndUniquifiedDifferential(uint256) (runs: 257, μ: 32860, ~: 27743) -LibSortTest:testIsSortedAndUniquifiedIntsDifferential(uint256) (runs: 257, μ: 53285, ~: 29879) -LibSortTest:testIsSortedDifferential(uint256) (runs: 257, μ: 39081, ~: 27703) -LibSortTest:testIsSortedIntsDifferential(uint256) (runs: 257, μ: 54424, ~: 29585) +LibSortTest:testInsertionSortPsuedorandom(uint256) (runs: 258, μ: 61718, ~: 61652) +LibSortTest:testIsSortedAddressesDifferential(uint256) (runs: 258, μ: 41552, ~: 29071) +LibSortTest:testIsSortedAndUniquifiedAddressesDifferential(uint256) (runs: 258, μ: 35145, ~: 28612) +LibSortTest:testIsSortedAndUniquifiedDifferential(uint256) (runs: 258, μ: 32857, ~: 27743) +LibSortTest:testIsSortedAndUniquifiedIntsDifferential(uint256) (runs: 258, μ: 53174, ~: 29872) +LibSortTest:testIsSortedDifferential(uint256) (runs: 258, μ: 39037, ~: 27714) +LibSortTest:testIsSortedIntsDifferential(uint256) (runs: 258, μ: 54309, ~: 29568) LibSortTest:testReverse() (gas: 114805) LibSortTest:testSearchSorted() (gas: 118972) LibSortTest:testSearchSortedAddresses() (gas: 251950) LibSortTest:testSearchSortedBasicCases() (gas: 2244) -LibSortTest:testSearchSortedDifferential(uint256) (runs: 257, μ: 43887, ~: 29627) +LibSortTest:testSearchSortedDifferential(uint256) (runs: 258, μ: 43817, ~: 29623) LibSortTest:testSearchSortedEdgeCases() (gas: 1617) -LibSortTest:testSearchSortedElementInArray(uint256) (runs: 257, μ: 58085, ~: 31309) +LibSortTest:testSearchSortedElementInArray(uint256) (runs: 258, μ: 57979, ~: 31295) LibSortTest:testSearchSortedElementNotInArray() (gas: 6135) -LibSortTest:testSearchSortedElementNotInArray(uint256) (runs: 257, μ: 58029, ~: 32843) +LibSortTest:testSearchSortedElementNotInArray(uint256) (runs: 258, μ: 57932, ~: 32848) LibSortTest:testSearchSortedInts() (gas: 120794) -LibSortTest:testSearchSortedInts(int256[],int256) (runs: 257, μ: 12031, ~: 11602) +LibSortTest:testSearchSortedInts(int256[],int256) (runs: 258, μ: 12024, ~: 11546) LibSortTest:testSearchSortedWithEmptyArray() (gas: 709) -LibSortTest:testSort(uint256) (runs: 257, μ: 45845, ~: 28959) -LibSortTest:testSortAddressesDifferential(uint256) (runs: 257, μ: 64080, ~: 28939) +LibSortTest:testSort(uint256) (runs: 258, μ: 46983, ~: 28967) +LibSortTest:testSortAddressesDifferential(uint256) (runs: 258, μ: 63953, ~: 29084) LibSortTest:testSortAddressesPsuedorandom() (gas: 144832) -LibSortTest:testSortAddressesPsuedorandom(uint256) (runs: 257, μ: 146330, ~: 146408) +LibSortTest:testSortAddressesPsuedorandom(uint256) (runs: 258, μ: 146323, ~: 146406) LibSortTest:testSortAddressesPsuedorandomBrutalizeUpperBits() (gas: 195855) LibSortTest:testSortAddressesReversed() (gas: 45400) LibSortTest:testSortAddressesSorted() (gas: 42376) LibSortTest:testSortBasicCase() (gas: 1210) -LibSortTest:testSortChecksumed(uint256) (runs: 257, μ: 52864, ~: 29039) -LibSortTest:testSortDifferential(uint256) (runs: 257, μ: 71767, ~: 27965) +LibSortTest:testSortChecksumed(uint256) (runs: 258, μ: 52750, ~: 29011) +LibSortTest:testSortDifferential(uint256) (runs: 258, μ: 71588, ~: 27839) LibSortTest:testSortInts() (gas: 612213) LibSortTest:testSortMostlySame() (gas: 67374) LibSortTest:testSortOriginalMostlySame() (gas: 207985) LibSortTest:testSortOriginalPsuedorandom() (gas: 284071) -LibSortTest:testSortOriginalPsuedorandom(uint256) (runs: 257, μ: 285488, ~: 284712) +LibSortTest:testSortOriginalPsuedorandom(uint256) (runs: 258, μ: 285522, ~: 284722) LibSortTest:testSortOriginalReversed() (gas: 156282) LibSortTest:testSortOriginalSorted() (gas: 142263) LibSortTest:testSortPsuedorandom() (gas: 138552) -LibSortTest:testSortPsuedorandom(uint256) (runs: 257, μ: 139982, ~: 140017) +LibSortTest:testSortPsuedorandom(uint256) (runs: 258, μ: 139979, ~: 140010) LibSortTest:testSortPsuedorandomNonuniform() (gas: 145689) -LibSortTest:testSortPsuedorandomNonuniform(uint256) (runs: 257, μ: 145373, ~: 145365) +LibSortTest:testSortPsuedorandomNonuniform(uint256) (runs: 258, μ: 145384, ~: 145411) LibSortTest:testSortReversed() (gas: 38827) LibSortTest:testSortSorted() (gas: 35785) LibSortTest:testSortTestOverhead() (gas: 102190) LibSortTest:testSortedDifferenceDifferential() (gas: 174078) -LibSortTest:testSortedDifferenceDifferential(uint256) (runs: 257, μ: 34674, ~: 34195) -LibSortTest:testSortedDifferenceDifferentialInt(uint256) (runs: 257, μ: 36597, ~: 36145) -LibSortTest:testSortedDifferenceUnionIntersection(uint256) (runs: 257, μ: 62653, ~: 58994) +LibSortTest:testSortedDifferenceDifferential(uint256) (runs: 258, μ: 34720, ~: 34316) +LibSortTest:testSortedDifferenceDifferentialInt(uint256) (runs: 258, μ: 36640, ~: 36197) +LibSortTest:testSortedDifferenceUnionIntersection(uint256) (runs: 258, μ: 62772, ~: 59416) LibSortTest:testSortedIntersectionDifferential() (gas: 208213) -LibSortTest:testSortedIntersectionDifferential(uint256) (runs: 257, μ: 33182, ~: 32854) -LibSortTest:testSortedIntersectionDifferentialInt(uint256) (runs: 257, μ: 34545, ~: 33701) +LibSortTest:testSortedIntersectionDifferential(uint256) (runs: 258, μ: 33160, ~: 32733) +LibSortTest:testSortedIntersectionDifferentialInt(uint256) (runs: 258, μ: 34556, ~: 33724) LibSortTest:testSortedUnionDifferential() (gas: 212667) -LibSortTest:testSortedUnionDifferential(uint256) (runs: 257, μ: 34583, ~: 33797) -LibSortTest:testSortedUnionDifferentialInt(uint256) (runs: 257, μ: 38076, ~: 37563) -LibSortTest:testTwoComplementConversionSort(int256,int256) (runs: 257, μ: 515, ~: 517) +LibSortTest:testSortedUnionDifferential(uint256) (runs: 258, μ: 34578, ~: 33716) +LibSortTest:testSortedUnionDifferentialInt(uint256) (runs: 258, μ: 38096, ~: 37565) +LibSortTest:testTwoComplementConversionSort(int256,int256) (runs: 258, μ: 515, ~: 517) LibSortTest:testUniquifySorted() (gas: 1710) -LibSortTest:testUniquifySorted(uint256) (runs: 257, μ: 46464, ~: 28576) +LibSortTest:testUniquifySorted(uint256) (runs: 258, μ: 46374, ~: 28445) LibSortTest:testUniquifySortedAddress() (gas: 4039) -LibSortTest:testUniquifySortedAddress(uint256) (runs: 257, μ: 54786, ~: 28984) -LibSortTest:testUniquifySortedDifferential(uint256) (runs: 257, μ: 67736, ~: 31910) +LibSortTest:testUniquifySortedAddress(uint256) (runs: 258, μ: 54665, ~: 28968) +LibSortTest:testUniquifySortedDifferential(uint256) (runs: 258, μ: 67598, ~: 31920) LibSortTest:testUniquifySortedWithEmptyArray() (gas: 506) LibSortTest:test__codesize() (gas: 21807) -LibStringTest:testAddressToHexStringZeroRightPadded(address) (runs: 257, μ: 3414, ~: 3414) +LibStringTest:testAddressToHexStringZeroRightPadded(address) (runs: 258, μ: 3414, ~: 3414) LibStringTest:testBytesToHexString() (gas: 4801) -LibStringTest:testBytesToHexString(bytes) (runs: 257, μ: 745769, ~: 596713) +LibStringTest:testBytesToHexString(bytes) (runs: 258, μ: 745211, ~: 596713) LibStringTest:testBytesToHexStringNoPrefix() (gas: 4467) -LibStringTest:testBytesToHexStringNoPrefix(bytes) (runs: 257, μ: 738236, ~: 596381) +LibStringTest:testBytesToHexStringNoPrefix(bytes) (runs: 258, μ: 737707, ~: 596381) LibStringTest:testContains() (gas: 43966) LibStringTest:testFromAddressToHexString() (gas: 3137) LibStringTest:testFromAddressToHexStringChecksummed() (gas: 35217) -LibStringTest:testFromAddressToHexStringChecksummedDifferential(uint256) (runs: 257, μ: 720691, ~: 585406) +LibStringTest:testFromAddressToHexStringChecksummedDifferential(uint256) (runs: 258, μ: 720167, ~: 585409) LibStringTest:testFromAddressToHexStringWithLeadingZeros() (gas: 3113) -LibStringTest:testHexStringNoPrefixVariants(uint256,uint256) (runs: 257, μ: 753273, ~: 594749) +LibStringTest:testHexStringNoPrefixVariants(uint256,uint256) (runs: 258, μ: 752701, ~: 594772) LibStringTest:testNormalizeSmallString() (gas: 1387) -LibStringTest:testNormalizeSmallString(bytes32) (runs: 257, μ: 2941, ~: 3955) +LibStringTest:testNormalizeSmallString(bytes32) (runs: 258, μ: 2946, ~: 4084) LibStringTest:testStringConcat() (gas: 3967) -LibStringTest:testStringConcat(string,string) (runs: 257, μ: 625305, ~: 576903) +LibStringTest:testStringConcat(string,string) (runs: 258, μ: 625116, ~: 576899) LibStringTest:testStringConcatOriginal() (gas: 4654) LibStringTest:testStringDirectReturn() (gas: 6741) -LibStringTest:testStringDirectReturn(string) (runs: 257, μ: 3003, ~: 2916) +LibStringTest:testStringDirectReturn(string) (runs: 258, μ: 3002, ~: 2916) LibStringTest:testStringEndsWith() (gas: 2829) -LibStringTest:testStringEndsWith(uint256) (runs: 257, μ: 668977, ~: 607078) -LibStringTest:testStringEq(string,string) (runs: 257, μ: 1544, ~: 1545) +LibStringTest:testStringEndsWith(uint256) (runs: 258, μ: 668731, ~: 606711) +LibStringTest:testStringEq(string,string) (runs: 258, μ: 1544, ~: 1545) LibStringTest:testStringEqs() (gas: 2013) LibStringTest:testStringEscapeHTML() (gas: 8427) -LibStringTest:testStringEscapeHTML(uint256) (runs: 257, μ: 757570, ~: 615686) +LibStringTest:testStringEscapeHTML(uint256) (runs: 258, μ: 757034, ~: 615750) LibStringTest:testStringEscapeJSON() (gas: 39797) LibStringTest:testStringEscapeJSONHexEncode() (gas: 700117) LibStringTest:testStringIndexOf() (gas: 17375) -LibStringTest:testStringIndexOf(uint256) (runs: 257, μ: 719093, ~: 617846) +LibStringTest:testStringIndexOf(uint256) (runs: 258, μ: 718664, ~: 617828) LibStringTest:testStringIndicesOf() (gas: 11700) -LibStringTest:testStringIndicesOf(uint256) (runs: 257, μ: 785482, ~: 620500) +LibStringTest:testStringIndicesOf(uint256) (runs: 258, μ: 784811, ~: 620498) LibStringTest:testStringIs7BitASCII() (gas: 205346) -LibStringTest:testStringIs7BitASCIIDifferential(bytes) (runs: 257, μ: 713112, ~: 576615) +LibStringTest:testStringIs7BitASCIIDifferential(bytes) (runs: 258, μ: 712583, ~: 576610) LibStringTest:testStringIs7BitASCIIWithAllowedLookup() (gas: 4939) -LibStringTest:testStringIs7BitASCIIWithAllowedLookupDifferential(bytes,uint128) (runs: 257, μ: 676480, ~: 576388) +LibStringTest:testStringIs7BitASCIIWithAllowedLookupDifferential(bytes,uint128) (runs: 258, μ: 676092, ~: 576388) LibStringTest:testStringLastIndexOf() (gas: 24042) -LibStringTest:testStringLastIndexOf(uint256) (runs: 257, μ: 704855, ~: 620973) +LibStringTest:testStringLastIndexOf(uint256) (runs: 258, μ: 704484, ~: 620826) LibStringTest:testStringLowerDifferential() (gas: 3051885) -LibStringTest:testStringLowerDifferential(string) (runs: 257, μ: 8285, ~: 7991) +LibStringTest:testStringLowerDifferential(string) (runs: 258, μ: 8284, ~: 7991) LibStringTest:testStringLowerOriginal() (gas: 1219) LibStringTest:testStringPackAndUnpackOne() (gas: 725086) -LibStringTest:testStringPackAndUnpackOne(string) (runs: 257, μ: 672446, ~: 575680) -LibStringTest:testStringPackAndUnpackOneDifferential(string) (runs: 257, μ: 716307, ~: 575496) +LibStringTest:testStringPackAndUnpackOne(string) (runs: 258, μ: 672071, ~: 575680) +LibStringTest:testStringPackAndUnpackOneDifferential(string) (runs: 258, μ: 715763, ~: 575496) LibStringTest:testStringPackAndUnpackTwo() (gas: 880925) -LibStringTest:testStringPackAndUnpackTwo(string,string) (runs: 257, μ: 659623, ~: 576953) -LibStringTest:testStringPackAndUnpackTwoDifferential(string,string) (runs: 257, μ: 628159, ~: 576482) +LibStringTest:testStringPackAndUnpackTwo(string,string) (runs: 258, μ: 659304, ~: 576955) +LibStringTest:testStringPackAndUnpackTwoDifferential(string,string) (runs: 258, μ: 627956, ~: 576481) LibStringTest:testStringRepeat() (gas: 4926) -LibStringTest:testStringRepeat(string,uint256) (runs: 257, μ: 694120, ~: 578160) +LibStringTest:testStringRepeat(string,uint256) (runs: 258, μ: 693683, ~: 578199) LibStringTest:testStringRepeatOriginal() (gas: 9598) -LibStringTest:testStringReplace(uint256) (runs: 257, μ: 703407, ~: 623596) +LibStringTest:testStringReplace(uint256) (runs: 258, μ: 703176, ~: 623878) LibStringTest:testStringReplaceLong() (gas: 8551) LibStringTest:testStringReplaceMedium() (gas: 7559) LibStringTest:testStringReplaceShort() (gas: 12307) LibStringTest:testStringRuneCount() (gas: 2973849) -LibStringTest:testStringRuneCountDifferential(string) (runs: 257, μ: 6097, ~: 5868) +LibStringTest:testStringRuneCountDifferential(string) (runs: 258, μ: 6094, ~: 5868) LibStringTest:testStringSlice() (gas: 9262) -LibStringTest:testStringSlice(uint256) (runs: 257, μ: 757183, ~: 616151) +LibStringTest:testStringSlice(uint256) (runs: 258, μ: 756640, ~: 616293) LibStringTest:testStringSplit() (gas: 20287) -LibStringTest:testStringSplit(uint256) (runs: 257, μ: 734110, ~: 624521) +LibStringTest:testStringSplit(uint256) (runs: 258, μ: 733729, ~: 624612) LibStringTest:testStringStartsWith() (gas: 2544) -LibStringTest:testStringStartsWith(uint256) (runs: 257, μ: 726339, ~: 609669) +LibStringTest:testStringStartsWith(uint256) (runs: 258, μ: 725871, ~: 609654) LibStringTest:testStringUpperDifferential() (gas: 3599376) -LibStringTest:testStringUpperDifferential(string) (runs: 257, μ: 8284, ~: 7990) +LibStringTest:testStringUpperDifferential(string) (runs: 258, μ: 8283, ~: 7990) LibStringTest:testStringUpperOriginal() (gas: 1218) LibStringTest:testTo7BitASCIIAllowedLookup() (gas: 3113) LibStringTest:testToHexStringFixedLengthInsufficientLength() (gas: 3395) LibStringTest:testToHexStringFixedLengthPositiveNumberLong() (gas: 3699) LibStringTest:testToHexStringFixedLengthPositiveNumberShort() (gas: 940) LibStringTest:testToHexStringFixedLengthUint256Max() (gas: 3656) -LibStringTest:testToHexStringFixedLengthZeroRightPadded(uint256,uint256) (runs: 257, μ: 8203, ~: 5968) +LibStringTest:testToHexStringFixedLengthZeroRightPadded(uint256,uint256) (runs: 258, μ: 8238, ~: 6009) LibStringTest:testToHexStringPositiveNumber() (gas: 865) LibStringTest:testToHexStringUint256Max() (gas: 3442) LibStringTest:testToHexStringZero() (gas: 805) -LibStringTest:testToHexStringZeroRightPadded(uint256) (runs: 257, μ: 1912, ~: 1382) +LibStringTest:testToHexStringZeroRightPadded(uint256) (runs: 258, μ: 1918, ~: 1382) LibStringTest:testToMinimalHexStringNoPrefixPositiveNumber() (gas: 3426) LibStringTest:testToMinimalHexStringNoPrefixUint256Max() (gas: 3424) LibStringTest:testToMinimalHexStringNoPrefixZero() (gas: 809) -LibStringTest:testToMinimalHexStringNoPrefixZeroRightPadded(uint256) (runs: 257, μ: 1932, ~: 1404) +LibStringTest:testToMinimalHexStringNoPrefixZeroRightPadded(uint256) (runs: 258, μ: 1938, ~: 1404) LibStringTest:testToMinimalHexStringPositiveNumber() (gas: 3556) LibStringTest:testToMinimalHexStringUint256Max() (gas: 3470) LibStringTest:testToMinimalHexStringZero() (gas: 829) -LibStringTest:testToMinimalHexStringZeroRightPadded(uint256) (runs: 257, μ: 2004, ~: 1474) +LibStringTest:testToMinimalHexStringZeroRightPadded(uint256) (runs: 258, μ: 2010, ~: 1474) LibStringTest:testToSmallString() (gas: 4448) LibStringTest:testToStringPositiveNumber() (gas: 910) LibStringTest:testToStringPositiveNumberBrutalized() (gas: 752723) -LibStringTest:testToStringSignedDifferential(int256) (runs: 257, μ: 667355, ~: 578672) +LibStringTest:testToStringSignedDifferential(int256) (runs: 258, μ: 667040, ~: 578737) LibStringTest:testToStringSignedGas() (gas: 7305) -LibStringTest:testToStringSignedMemory(int256) (runs: 257, μ: 769512, ~: 576946) +LibStringTest:testToStringSignedMemory(int256) (runs: 258, μ: 768780, ~: 576972) LibStringTest:testToStringSignedOriginalGas() (gas: 9817) LibStringTest:testToStringUint256Max() (gas: 6687) LibStringTest:testToStringUint256MaxBrutalized() (gas: 587176) LibStringTest:testToStringZero() (gas: 699) LibStringTest:testToStringZeroBrutalized() (gas: 575091) -LibStringTest:testToStringZeroRightPadded(uint256) (runs: 257, μ: 703128, ~: 576034) +LibStringTest:testToStringZeroRightPadded(uint256) (runs: 258, μ: 702651, ~: 576071) LibStringTest:test__codesize() (gas: 42048) LibZipTest:testCdCompress() (gas: 126842) -LibZipTest:testCdCompressDecompress(bytes) (runs: 257, μ: 787962, ~: 653534) -LibZipTest:testCdCompressDecompress(uint256) (runs: 257, μ: 851294, ~: 675924) +LibZipTest:testCdCompressDecompress(bytes) (runs: 258, μ: 787452, ~: 653600) +LibZipTest:testCdCompressDecompress(uint256) (runs: 258, μ: 850661, ~: 676109) LibZipTest:testCdDecompressOnInvalidInput() (gas: 1397) LibZipTest:testCdFallback() (gas: 5636018) -LibZipTest:testCdFallback(bytes,uint256) (runs: 257, μ: 1178383, ~: 1060857) -LibZipTest:testCdFallbackDecompressor(bytes) (runs: 257, μ: 121118, ~: 117268) -LibZipTest:testCdFallbackDecompressor(uint256) (runs: 257, μ: 169302, ~: 161595) -LibZipTest:testCdFallbackMaskTrick(uint256,uint256) (runs: 257, μ: 594, ~: 585) -LibZipTest:testDecompressWontRevert(bytes) (runs: 257, μ: 690003, ~: 633056) +LibZipTest:testCdFallback(bytes,uint256) (runs: 258, μ: 1177929, ~: 1060893) +LibZipTest:testCdFallbackDecompressor(bytes) (runs: 258, μ: 121123, ~: 117344) +LibZipTest:testCdFallbackDecompressor(uint256) (runs: 258, μ: 169197, ~: 161476) +LibZipTest:testCdFallbackMaskTrick(uint256,uint256) (runs: 258, μ: 594, ~: 585) +LibZipTest:testDecompressWontRevert(bytes) (runs: 258, μ: 689794, ~: 633156) LibZipTest:testFlzCompressDecompress() (gas: 1250953) -LibZipTest:testFlzCompressDecompress(bytes) (runs: 257, μ: 738144, ~: 667063) +LibZipTest:testFlzCompressDecompress(bytes) (runs: 258, μ: 737833, ~: 667022) LibZipTest:testFlzCompressDecompress2() (gas: 760133) LibZipTest:test__codesize() (gas: 20369) -LifebuoyTest:testLifebuoyCreateDeployment(address,address,uint256) (runs: 257, μ: 3219628, ~: 3596001) -LifebuoyTest:testLifebuoyOwnedCloneRescuePermissions(bytes32) (runs: 257, μ: 941420, ~: 941336) -LifebuoyTest:testLifebuoyOwnedRescuePermissions(bytes32) (runs: 257, μ: 947550, ~: 938718) -LifebuoyTest:testLifebuoyRescuePermissions(bytes32) (runs: 257, μ: 927048, ~: 905396) +LifebuoyTest:testLifebuoyCreateDeployment(address,address,uint256) (runs: 258, μ: 3210758, ~: 3595915) +LifebuoyTest:testLifebuoyOwnedCloneRescuePermissions(bytes32) (runs: 258, μ: 941418, ~: 941335) +LifebuoyTest:testLifebuoyOwnedRescuePermissions(bytes32) (runs: 258, μ: 947516, ~: 938722) +LifebuoyTest:testLifebuoyRescuePermissions(bytes32) (runs: 258, μ: 927083, ~: 920506) LifebuoyTest:testLockEverything() (gas: 662008) LifebuoyTest:testLockRescue() (gas: 687529) LifebuoyTest:testLockRescueETH() (gas: 699031) -LifebuoyTest:testRescueERC20(uint256) (runs: 257, μ: 655360, ~: 657324) -LifebuoyTest:testRescueERC721(bytes32) (runs: 257, μ: 651542, ~: 651720) -LifebuoyTest:testRescueETH(uint256) (runs: 257, μ: 664096, ~: 664763) +LifebuoyTest:testRescueERC20(uint256) (runs: 258, μ: 655367, ~: 657320) +LifebuoyTest:testRescueERC721(bytes32) (runs: 258, μ: 651543, ~: 651723) +LifebuoyTest:testRescueETH(uint256) (runs: 258, μ: 664102, ~: 664767) LifebuoyTest:test__codesize() (gas: 31001) MerkleProofLibTest:testEmptyCalldataHelpers() (gas: 985) -MerkleProofLibTest:testVerifyMultiProof(bool,bool,bool,bool,bytes32) (runs: 257, μ: 759398, ~: 622863) -MerkleProofLibTest:testVerifyMultiProofForHeightOneTree(bool,bool,bool,bool,bool,bool[]) (runs: 257, μ: 37961, ~: 38822) -MerkleProofLibTest:testVerifyMultiProofForHeightTwoTree(bool,bool,bool,bool,bool,bytes32) (runs: 257, μ: 6505, ~: 6467) -MerkleProofLibTest:testVerifyMultiProofForSingleLeaf(bytes32[],uint256) (runs: 257, μ: 876791, ~: 796382) +MerkleProofLibTest:testVerifyMultiProof(bool,bool,bool,bool,bytes32) (runs: 258, μ: 758864, ~: 622861) +MerkleProofLibTest:testVerifyMultiProofForHeightOneTree(bool,bool,bool,bool,bool,bool[]) (runs: 258, μ: 37916, ~: 38470) +MerkleProofLibTest:testVerifyMultiProofForHeightTwoTree(bool,bool,bool,bool,bool,bytes32) (runs: 258, μ: 6503, ~: 6467) +MerkleProofLibTest:testVerifyMultiProofForSingleLeaf(bytes32[],uint256) (runs: 258, μ: 876321, ~: 796365) MerkleProofLibTest:testVerifyMultiProofIsInvalid() (gas: 621637) MerkleProofLibTest:testVerifyMultiProofIsValid() (gas: 623052) MerkleProofLibTest:testVerifyMultiProofMalicious() (gas: 7918) -MerkleProofLibTest:testVerifyProof(bytes32[],uint256) (runs: 257, μ: 859845, ~: 772616) -MerkleProofLibTest:testVerifyProofBasicCase(bool,bool,bool,bytes32) (runs: 257, μ: 4040, ~: 3906) +MerkleProofLibTest:testVerifyProof(bytes32[],uint256) (runs: 258, μ: 859369, ~: 772412) +MerkleProofLibTest:testVerifyProofBasicCase(bool,bool,bool,bytes32) (runs: 258, μ: 4040, ~: 3906) MerkleProofLibTest:testVerifyProofBasicCaseIsInvalid() (gas: 3626) MerkleProofLibTest:testVerifyProofBasicCaseIsValid() (gas: 3590) -MerkleProofLibTest:testVerifyProofForHeightOneTree(bool,bool,bool,bool) (runs: 257, μ: 2694, ~: 2968) +MerkleProofLibTest:testVerifyProofForHeightOneTree(bool,bool,bool,bool) (runs: 258, μ: 2695, ~: 2968) MerkleProofLibTest:test__codesize() (gas: 11089) -MetadataReaderLibTest:testBoundsCheckDifferential(uint256) (runs: 257, μ: 25593, ~: 25581) +MetadataReaderLibTest:testBoundsCheckDifferential(uint256) (runs: 258, μ: 25594, ~: 25582) MetadataReaderLibTest:testReadBytes32String() (gas: 661236) MetadataReaderLibTest:testReadBytes32StringTruncated() (gas: 777425) -MetadataReaderLibTest:testReadString(uint256) (runs: 257, μ: 831126, ~: 718732) +MetadataReaderLibTest:testReadString(uint256) (runs: 258, μ: 830682, ~: 718717) MetadataReaderLibTest:testReadStringChopped() (gas: 269520) -MetadataReaderLibTest:testReadStringTruncated(uint256) (runs: 257, μ: 850502, ~: 706181) +MetadataReaderLibTest:testReadStringTruncated(uint256) (runs: 258, μ: 849936, ~: 706170) MetadataReaderLibTest:testReadUint() (gas: 911216) -MetadataReaderLibTest:testReadUint(uint256) (runs: 257, μ: 46784, ~: 47091) +MetadataReaderLibTest:testReadUint(uint256) (runs: 258, μ: 46784, ~: 47090) MetadataReaderLibTest:test__codesize() (gas: 7891) -MinHeapLibTest:testHeapEnqueue(uint256) (runs: 257, μ: 174055, ~: 167157) -MinHeapLibTest:testHeapEnqueue2(uint256) (runs: 257, μ: 589134, ~: 354456) +MinHeapLibTest:testHeapEnqueue(uint256) (runs: 258, μ: 173803, ~: 166372) +MinHeapLibTest:testHeapEnqueue2(uint256) (runs: 258, μ: 592265, ~: 356149) MinHeapLibTest:testHeapEnqueueGas() (gas: 854823) -MinHeapLibTest:testHeapEnqueueZeroMaxLengthReverts(uint256) (runs: 257, μ: 48602, ~: 67805) -MinHeapLibTest:testHeapPSiftTrick(uint256,uint256,uint256) (runs: 257, μ: 734, ~: 899) -MinHeapLibTest:testHeapPushAndPop(uint256) (runs: 257, μ: 102139, ~: 99475) -MinHeapLibTest:testHeapPushPop(uint256) (runs: 257, μ: 247681, ~: 240389) -MinHeapLibTest:testHeapPushPopLength(uint256) (runs: 257, μ: 903957, ~: 795971) -MinHeapLibTest:testHeapReplace(uint256) (runs: 257, μ: 290627, ~: 280289) -MinHeapLibTest:testHeapReplaceOrPopEmptyHeapReverts(uint256) (runs: 257, μ: 42941, ~: 29120) -MinHeapLibTest:testHeapRoot(uint256) (runs: 257, μ: 47642, ~: 47811) -MinHeapLibTest:testHeapSmallest(uint256) (runs: 257, μ: 1482345, ~: 1209184) +MinHeapLibTest:testHeapEnqueueZeroMaxLengthReverts(uint256) (runs: 258, μ: 48676, ~: 67805) +MinHeapLibTest:testHeapPSiftTrick(uint256,uint256,uint256) (runs: 258, μ: 733, ~: 730) +MinHeapLibTest:testHeapPushAndPop(uint256) (runs: 258, μ: 102528, ~: 99475) +MinHeapLibTest:testHeapPushPop(uint256) (runs: 258, μ: 247430, ~: 239974) +MinHeapLibTest:testHeapPushPopLength(uint256) (runs: 258, μ: 904429, ~: 797091) +MinHeapLibTest:testHeapReplace(uint256) (runs: 258, μ: 290122, ~: 280259) +MinHeapLibTest:testHeapReplaceOrPopEmptyHeapReverts(uint256) (runs: 258, μ: 42887, ~: 29120) +MinHeapLibTest:testHeapRoot(uint256) (runs: 258, μ: 47566, ~: 47811) +MinHeapLibTest:testHeapSmallest(uint256) (runs: 258, μ: 1482182, ~: 1214211) MinHeapLibTest:testHeapSmallestGas() (gas: 50027291) -MinHeapLibTest:testMemHeapEnqueue(uint256) (runs: 257, μ: 884154, ~: 819207) -MinHeapLibTest:testMemHeapEnqueue2(uint256) (runs: 257, μ: 823900, ~: 722445) +MinHeapLibTest:testMemHeapEnqueue(uint256) (runs: 258, μ: 883468, ~: 819172) +MinHeapLibTest:testMemHeapEnqueue2(uint256) (runs: 258, μ: 823682, ~: 723897) MinHeapLibTest:testMemHeapEnqueueGas() (gas: 233998) -MinHeapLibTest:testMemHeapEnqueueZeroMaxLengthReverts(uint256) (runs: 257, μ: 25421, ~: 26459) -MinHeapLibTest:testMemHeapPushAndPop(uint256) (runs: 257, μ: 1094250, ~: 994119) +MinHeapLibTest:testMemHeapEnqueueZeroMaxLengthReverts(uint256) (runs: 258, μ: 25415, ~: 26459) +MinHeapLibTest:testMemHeapPushAndPop(uint256) (runs: 258, μ: 1092652, ~: 993643) MinHeapLibTest:testMemHeapPushGas() (gas: 32075) -MinHeapLibTest:testMemHeapPushPop(uint256) (runs: 257, μ: 1426853, ~: 1304395) -MinHeapLibTest:testMemHeapPushPopLength(uint256) (runs: 257, μ: 800571, ~: 677435) -MinHeapLibTest:testMemHeapReplace(uint256) (runs: 257, μ: 913887, ~: 756181) -MinHeapLibTest:testMemHeapReplaceOrPopEmptyHeapReverts(uint256) (runs: 257, μ: 26039, ~: 25716) -MinHeapLibTest:testMemHeapRoot(uint256) (runs: 257, μ: 737638, ~: 634600) -MinHeapLibTest:testMemHeapSmallest(uint256) (runs: 257, μ: 868276, ~: 732529) +MinHeapLibTest:testMemHeapPushPop(uint256) (runs: 258, μ: 1423859, ~: 1297884) +MinHeapLibTest:testMemHeapPushPopLength(uint256) (runs: 258, μ: 800044, ~: 677429) +MinHeapLibTest:testMemHeapReplace(uint256) (runs: 258, μ: 912857, ~: 754956) +MinHeapLibTest:testMemHeapReplaceOrPopEmptyHeapReverts(uint256) (runs: 258, μ: 26041, ~: 25717) +MinHeapLibTest:testMemHeapRoot(uint256) (runs: 258, μ: 737244, ~: 634600) +MinHeapLibTest:testMemHeapSmallest(uint256) (runs: 258, μ: 867810, ~: 732923) MinHeapLibTest:testMemHeapSmallestGas() (gas: 2874313) MinHeapLibTest:test__codesize() (gas: 13872) MulticallableTest:testMulticallableBenchmark() (gas: 29642) MulticallableTest:testMulticallableOriginalBenchmark() (gas: 38935) MulticallableTest:testMulticallablePreservesMsgSender() (gas: 11166) MulticallableTest:testMulticallableReturnDataIsProperlyEncoded() (gas: 11665) -MulticallableTest:testMulticallableReturnDataIsProperlyEncoded(string,string,uint256) (runs: 257, μ: 9436, ~: 7437) -MulticallableTest:testMulticallableReturnDataIsProperlyEncoded(uint256,uint256,uint256,uint256) (runs: 257, μ: 11811, ~: 11811) +MulticallableTest:testMulticallableReturnDataIsProperlyEncoded(string,string,uint256) (runs: 258, μ: 9444, ~: 7437) +MulticallableTest:testMulticallableReturnDataIsProperlyEncoded(uint256,uint256,uint256,uint256) (runs: 258, μ: 11811, ~: 11811) MulticallableTest:testMulticallableRevertWithCustomError() (gas: 11811) MulticallableTest:testMulticallableRevertWithMessage() (gas: 13483) -MulticallableTest:testMulticallableRevertWithMessage(string) (runs: 257, μ: 14096, ~: 13944) +MulticallableTest:testMulticallableRevertWithMessage(string) (runs: 258, μ: 14095, ~: 13944) MulticallableTest:testMulticallableRevertWithNothing() (gas: 11673) MulticallableTest:testMulticallableWithNoData() (gas: 6286) MulticallableTest:test__codesize() (gas: 8562) OwnableRolesTest:testBytecodeSize() (gas: 350635) -OwnableRolesTest:testGrantAndRemoveRolesDirect(address,uint256,uint256) (runs: 257, μ: 40253, ~: 40750) -OwnableRolesTest:testGrantAndRevokeOrRenounceRoles(address,bool,bool,bool,uint256,uint256) (runs: 257, μ: 27553, ~: 12212) +OwnableRolesTest:testGrantAndRemoveRolesDirect(address,uint256,uint256) (runs: 258, μ: 40255, ~: 40750) +OwnableRolesTest:testGrantAndRevokeOrRenounceRoles(address,bool,bool,bool,uint256,uint256) (runs: 258, μ: 27621, ~: 16405) OwnableRolesTest:testGrantRoles() (gas: 36136) OwnableRolesTest:testHandoverOwnership() (gas: 32394) -OwnableRolesTest:testHandoverOwnership(address) (runs: 257, μ: 32435, ~: 32420) +OwnableRolesTest:testHandoverOwnership(address) (runs: 258, μ: 32435, ~: 32420) OwnableRolesTest:testHandoverOwnershipAfterExpiration() (gas: 36947) OwnableRolesTest:testHandoverOwnershipBeforeExpiration() (gas: 28733) OwnableRolesTest:testHandoverOwnershipRevertsIfCompleteIsNotOwner() (gas: 35621) OwnableRolesTest:testHandoverOwnershipWithCancellation() (gas: 30772) -OwnableRolesTest:testHasAllRoles(address,uint256,uint256,uint256,bool) (runs: 257, μ: 33584, ~: 33588) -OwnableRolesTest:testHasAnyRole(address,uint256,uint256) (runs: 257, μ: 33220, ~: 33375) +OwnableRolesTest:testHasAllRoles(address,uint256,uint256,uint256,bool) (runs: 258, μ: 33584, ~: 33588) +OwnableRolesTest:testHasAnyRole(address,uint256,uint256) (runs: 258, μ: 33220, ~: 33375) OwnableRolesTest:testInitializeOwnerDirect() (gas: 16738) -OwnableRolesTest:testOnlyOwnerModifier(address,bool) (runs: 257, μ: 22580, ~: 32884) +OwnableRolesTest:testOnlyOwnerModifier(address,bool) (runs: 258, μ: 22620, ~: 32884) OwnableRolesTest:testOnlyOwnerOrRolesModifier() (gas: 36596) -OwnableRolesTest:testOnlyOwnerOrRolesModifier(address,bool,uint256,uint256) (runs: 257, μ: 57030, ~: 58531) -OwnableRolesTest:testOnlyRolesModifier(address,uint256,uint256) (runs: 257, μ: 56055, ~: 57903) -OwnableRolesTest:testOnlyRolesOrOwnerModifier(address,bool,uint256,uint256) (runs: 257, μ: 57949, ~: 58396) +OwnableRolesTest:testOnlyOwnerOrRolesModifier(address,bool,uint256,uint256) (runs: 258, μ: 57034, ~: 58249) +OwnableRolesTest:testOnlyRolesModifier(address,uint256,uint256) (runs: 258, μ: 56062, ~: 57903) +OwnableRolesTest:testOnlyRolesOrOwnerModifier(address,bool,uint256,uint256) (runs: 258, μ: 57957, ~: 58396) OwnableRolesTest:testOrdinalsFromRoles() (gas: 3631629) -OwnableRolesTest:testOrdinalsFromRoles(uint256) (runs: 257, μ: 61066, ~: 44490) +OwnableRolesTest:testOrdinalsFromRoles(uint256) (runs: 258, μ: 61247, ~: 45167) OwnableRolesTest:testOwnershipHandoverValidForDefaultValue() (gas: 5825) OwnableRolesTest:testRenounceOwnership() (gas: 12921) OwnableRolesTest:testRolesFromOrdinals() (gas: 648931) -OwnableRolesTest:testRolesFromOrdinals(uint8[]) (runs: 257, μ: 81163, ~: 85017) +OwnableRolesTest:testRolesFromOrdinals(uint8[]) (runs: 258, μ: 81099, ~: 84732) OwnableRolesTest:testSetOwnerDirect() (gas: 17790) -OwnableRolesTest:testSetOwnerDirect(address) (runs: 257, μ: 17915, ~: 17915) -OwnableRolesTest:testSetRolesDirect(uint256) (runs: 257, μ: 99951, ~: 100168) +OwnableRolesTest:testSetOwnerDirect(address) (runs: 258, μ: 17915, ~: 17915) +OwnableRolesTest:testSetRolesDirect(uint256) (runs: 258, μ: 99951, ~: 100168) OwnableRolesTest:testTransferOwnership() (gas: 19671) -OwnableRolesTest:testTransferOwnership(address,bool,bool) (runs: 257, μ: 14610, ~: 12735) +OwnableRolesTest:testTransferOwnership(address,bool,bool) (runs: 258, μ: 14603, ~: 12735) OwnableRolesTest:test__codesize() (gas: 21847) OwnableTest:testBytecodeSize() (gas: 235158) OwnableTest:testHandoverOwnership() (gas: 32127) -OwnableTest:testHandoverOwnership(address) (runs: 257, μ: 32151, ~: 32136) +OwnableTest:testHandoverOwnership(address) (runs: 258, μ: 32151, ~: 32136) OwnableTest:testHandoverOwnershipAfterExpiration() (gas: 36725) OwnableTest:testHandoverOwnershipBeforeExpiration() (gas: 28582) OwnableTest:testHandoverOwnershipRevertsIfCompleteIsNotOwner() (gas: 35355) OwnableTest:testHandoverOwnershipWithCancellation() (gas: 30416) OwnableTest:testInitializeOwnerDirect() (gas: 16613) -OwnableTest:testOnlyOwnerModifier(address,bool) (runs: 257, μ: 22494, ~: 32829) +OwnableTest:testOnlyOwnerModifier(address,bool) (runs: 258, μ: 22534, ~: 32829) OwnableTest:testOwnershipHandoverValidForDefaultValue() (gas: 5737) OwnableTest:testRenounceOwnership() (gas: 12755) OwnableTest:testSetOwnerDirect() (gas: 17700) -OwnableTest:testSetOwnerDirect(address) (runs: 257, μ: 17826, ~: 17826) +OwnableTest:testSetOwnerDirect(address) (runs: 258, μ: 17826, ~: 17826) OwnableTest:testTransferOwnership() (gas: 19481) -OwnableTest:testTransferOwnership(address,bool,bool) (runs: 257, μ: 14364, ~: 12508) +OwnableTest:testTransferOwnership(address,bool,bool) (runs: 258, μ: 14357, ~: 12508) OwnableTest:test__codesize() (gas: 11007) -P256Test:testP256Verify(uint256,bytes32) (runs: 257, μ: 493379, ~: 493425) +P256Test:testP256Verify(uint256,bytes32) (runs: 258, μ: 493373, ~: 493420) P256Test:testP256VerifyMalleableRIPPrecompile() (gas: 341155) P256Test:testP256VerifyMalleableVerifier() (gas: 341175) P256Test:testP256VerifyNonMalleableRIPPrecompile() (gas: 341117) P256Test:testP256VerifyNonMalleableVerifier() (gas: 341095) -P256Test:testP256VerifyNotDeployedReverts(bytes32,bytes32,bytes32,bytes32,bytes32,bool) (runs: 257, μ: 10815, ~: 10799) +P256Test:testP256VerifyNotDeployedReverts(bytes32,bytes32,bytes32,bytes32,bytes32,bool) (runs: 258, μ: 10815, ~: 10799) P256Test:testP256VerifyOutOfBounds() (gas: 201249) P256Test:testP256VerifyWycheproof() (gas: 3268) P256Test:test__codesize() (gas: 11313) @@ -1072,8 +1072,8 @@ ReceiverTest:testOnERC721Received() (gas: 64593) ReceiverTest:test__codesize() (gas: 3053) RedBlackTreeLibTest:testRedBlackTreeBenchUint160() (gas: 3428194) RedBlackTreeLibTest:testRedBlackTreeBenchUint256() (gas: 5841865) -RedBlackTreeLibTest:testRedBlackTreeInsertAndRemove(uint256) (runs: 257, μ: 659242, ~: 535412) -RedBlackTreeLibTest:testRedBlackTreeInsertAndRemove2(uint256) (runs: 257, μ: 398117, ~: 371693) +RedBlackTreeLibTest:testRedBlackTreeInsertAndRemove(uint256) (runs: 258, μ: 657827, ~: 534895) +RedBlackTreeLibTest:testRedBlackTreeInsertAndRemove2(uint256) (runs: 258, μ: 397474, ~: 370832) RedBlackTreeLibTest:testRedBlackTreeInsertAndRemove3() (gas: 21527899) RedBlackTreeLibTest:testRedBlackTreeInsertBenchStep() (gas: 3702908) RedBlackTreeLibTest:testRedBlackTreeInsertBenchUint160() (gas: 3468526) @@ -1082,16 +1082,16 @@ RedBlackTreeLibTest:testRedBlackTreeInsertOneGas() (gas: 45558) RedBlackTreeLibTest:testRedBlackTreeInsertTenGas() (gas: 282691) RedBlackTreeLibTest:testRedBlackTreeInsertThreeGas() (gas: 96175) RedBlackTreeLibTest:testRedBlackTreeInsertTwoGas() (gas: 69785) -RedBlackTreeLibTest:testRedBlackTreeNearest(uint256) (runs: 257, μ: 253017, ~: 255356) -RedBlackTreeLibTest:testRedBlackTreeNearestAfter(uint256) (runs: 257, μ: 260559, ~: 248696) -RedBlackTreeLibTest:testRedBlackTreeNearestBefore(uint256) (runs: 257, μ: 270047, ~: 253138) +RedBlackTreeLibTest:testRedBlackTreeNearest(uint256) (runs: 258, μ: 252338, ~: 252895) +RedBlackTreeLibTest:testRedBlackTreeNearestAfter(uint256) (runs: 258, μ: 261131, ~: 248696) +RedBlackTreeLibTest:testRedBlackTreeNearestBefore(uint256) (runs: 258, μ: 270563, ~: 253492) RedBlackTreeLibTest:testRedBlackTreePointers() (gas: 91643) RedBlackTreeLibTest:testRedBlackTreeRejectsEmptyValue() (gas: 3232) RedBlackTreeLibTest:testRedBlackTreeRemoveViaPointer() (gas: 58157) RedBlackTreeLibTest:testRedBlackTreeTreeFullReverts() (gas: 50317) RedBlackTreeLibTest:testRedBlackTreeTryInsertAndRemove() (gas: 56062) RedBlackTreeLibTest:testRedBlackTreeValues() (gas: 191605) -RedBlackTreeLibTest:testRedBlackTreeValues(uint256) (runs: 257, μ: 424361, ~: 272439) +RedBlackTreeLibTest:testRedBlackTreeValues(uint256) (runs: 258, μ: 423832, ~: 273212) RedBlackTreeLibTest:test__codesize() (gas: 13068) ReentrancyGuardTest:testRecursiveDirectUnguardedCall() (gas: 34276) ReentrancyGuardTest:testRecursiveIndirectUnguardedCall() (gas: 47727) @@ -1102,116 +1102,117 @@ ReentrancyGuardTest:testRevertRecursiveIndirectGuardedCall() (gas: 56529) ReentrancyGuardTest:testRevertRemoteCallback() (gas: 56230) ReentrancyGuardTest:test__codesize() (gas: 4403) SSTORE2Test:testReadInvalidPointerCustomBoundsReverts() (gas: 3197) -SSTORE2Test:testReadInvalidPointerCustomBoundsReverts(address,uint256,uint256) (runs: 257, μ: 801710, ~: 645972) +SSTORE2Test:testReadInvalidPointerCustomBoundsReverts(address,uint256,uint256) (runs: 258, μ: 800741, ~: 643088) SSTORE2Test:testReadInvalidPointerCustomStartBoundReverts() (gas: 3241) -SSTORE2Test:testReadInvalidPointerCustomStartBoundReverts(address,uint256) (runs: 257, μ: 747603, ~: 645671) -SSTORE2Test:testReadInvalidPointerRevert(address) (runs: 257, μ: 736111, ~: 645479) +SSTORE2Test:testReadInvalidPointerCustomStartBoundReverts(address,uint256) (runs: 258, μ: 705353, ~: 642558) +SSTORE2Test:testReadInvalidPointerRevert(address) (runs: 258, μ: 715431, ~: 642474) SSTORE2Test:testReadInvalidPointerReverts() (gas: 3215) -SSTORE2Test:testWriteRead() (gas: 52494) -SSTORE2Test:testWriteRead(bytes) (runs: 257, μ: 773203, ~: 680811) -SSTORE2Test:testWriteReadCustomBounds() (gas: 34094) -SSTORE2Test:testWriteReadCustomBounds(bytes,uint256,uint256) (runs: 257, μ: 752465, ~: 671126) -SSTORE2Test:testWriteReadCustomBoundsOutOfRangeReverts(bytes,uint256,uint256) (runs: 257, μ: 772995, ~: 683180) +SSTORE2Test:testWriteRead() (gas: 52481) +SSTORE2Test:testWriteRead(bytes) (runs: 258, μ: 782705, ~: 678347) +SSTORE2Test:testWriteReadCustomBounds() (gas: 34091) +SSTORE2Test:testWriteReadCustomBounds(bytes,uint256,uint256) (runs: 258, μ: 734931, ~: 671779) +SSTORE2Test:testWriteReadCustomBoundsOutOfRangeReverts(bytes,uint256,uint256) (runs: 258, μ: 738688, ~: 680622) SSTORE2Test:testWriteReadCustomStartBound() (gas: 34104) -SSTORE2Test:testWriteReadCustomStartBound(bytes,uint256) (runs: 257, μ: 777291, ~: 681602) -SSTORE2Test:testWriteReadCustomStartBoundOutOfRangeReverts(bytes,uint256) (runs: 257, μ: 813230, ~: 683814) -SSTORE2Test:testWriteReadEmptyBound() (gas: 33847) -SSTORE2Test:testWriteReadEmptyOutOfBoundsReverts() (gas: 36485) -SSTORE2Test:testWriteReadFullBoundedRead() (gas: 52534) +SSTORE2Test:testWriteReadCustomStartBound(bytes,uint256) (runs: 258, μ: 727294, ~: 679189) +SSTORE2Test:testWriteReadCustomStartBoundOutOfRangeReverts(bytes,uint256) (runs: 258, μ: 817078, ~: 680622) +SSTORE2Test:testWriteReadDeterministic(bytes,bytes32) (runs: 258, μ: 7170355, ~: 739849) +SSTORE2Test:testWriteReadEmptyBound() (gas: 33844) +SSTORE2Test:testWriteReadEmptyOutOfBoundsReverts() (gas: 36482) +SSTORE2Test:testWriteReadFullBoundedRead() (gas: 52553) SSTORE2Test:testWriteReadFullStartBound() (gas: 34068) -SSTORE2Test:testWriteReadOutOfBoundsReverts() (gas: 36485) +SSTORE2Test:testWriteReadOutOfBoundsReverts() (gas: 36460) SSTORE2Test:testWriteReadOutOfStartBoundReverts() (gas: 36489) -SSTORE2Test:testWriteWithTooBigDataReverts() (gas: 97302814) -SSTORE2Test:test__codesize() (gas: 7171) -SafeCastLibTest:testSafeCastInt256ToInt(int256,uint256) (runs: 257, μ: 19203, ~: 24935) +SSTORE2Test:testWriteWithTooBigDataReverts() (gas: 97301294) +SSTORE2Test:test__codesize() (gas: 8681) +SafeCastLibTest:testSafeCastInt256ToInt(int256,uint256) (runs: 258, μ: 19142, ~: 24883) SafeCastLibTest:testSafeCastInt256ToIntBench() (gas: 341694) -SafeCastLibTest:testSafeCastInt256ToIntTrickEquivalence(int256) (runs: 257, μ: 406, ~: 406) -SafeCastLibTest:testSafeCastToInt256(uint256) (runs: 257, μ: 504, ~: 405) -SafeCastLibTest:testSafeCastToUint256(int256) (runs: 257, μ: 1334, ~: 428) -SafeCastLibTest:testSafeCastUint256ToInt(uint256,uint256) (runs: 257, μ: 26960, ~: 26088) +SafeCastLibTest:testSafeCastInt256ToIntTrickEquivalence(int256) (runs: 258, μ: 406, ~: 406) +SafeCastLibTest:testSafeCastToInt256(uint256) (runs: 258, μ: 504, ~: 405) +SafeCastLibTest:testSafeCastToUint256(int256) (runs: 258, μ: 1331, ~: 428) +SafeCastLibTest:testSafeCastUint256ToInt(uint256,uint256) (runs: 258, μ: 26956, ~: 26086) SafeCastLibTest:testSafeCastUint256ToInt256Bench() (gas: 29380) SafeCastLibTest:testSafeCastUint256ToIntBench() (gas: 330222) SafeCastLibTest:testSafeCastUint256ToUintBench() (gas: 326262) -SafeCastLibTest:testSafeCastUintToUint(uint256,uint256) (runs: 257, μ: 19123, ~: 24927) +SafeCastLibTest:testSafeCastUintToUint(uint256,uint256) (runs: 258, μ: 19063, ~: 24926) SafeCastLibTest:test__codesize() (gas: 23270) -SafeTransferLibTest:testApproveWithGarbageReverts(address,uint256) (runs: 257, μ: 111195, ~: 123651) +SafeTransferLibTest:testApproveWithGarbageReverts(address,uint256) (runs: 258, μ: 111177, ~: 123651) SafeTransferLibTest:testApproveWithMissingReturn() (gas: 32065) -SafeTransferLibTest:testApproveWithMissingReturn(address,uint256) (runs: 257, μ: 32207, ~: 32285) +SafeTransferLibTest:testApproveWithMissingReturn(address,uint256) (runs: 258, μ: 32207, ~: 32285) SafeTransferLibTest:testApproveWithNonContract() (gas: 2967) -SafeTransferLibTest:testApproveWithNonContract(address,address,uint256) (runs: 257, μ: 3530, ~: 3613) -SafeTransferLibTest:testApproveWithNonGarbage(address,uint256) (runs: 257, μ: 79181, ~: 59342) +SafeTransferLibTest:testApproveWithNonContract(address,address,uint256) (runs: 258, μ: 3531, ~: 3613) +SafeTransferLibTest:testApproveWithNonGarbage(address,uint256) (runs: 258, μ: 79104, ~: 59342) SafeTransferLibTest:testApproveWithRetry() (gas: 839894) -SafeTransferLibTest:testApproveWithRetry(address,uint256,uint256) (runs: 257, μ: 839830, ~: 840010) +SafeTransferLibTest:testApproveWithRetry(address,uint256,uint256) (runs: 258, μ: 839831, ~: 840010) SafeTransferLibTest:testApproveWithRetryWithNonContract() (gas: 2990) -SafeTransferLibTest:testApproveWithRetryWithNonContract(address,address,uint256) (runs: 257, μ: 3549, ~: 3632) +SafeTransferLibTest:testApproveWithRetryWithNonContract(address,address,uint256) (runs: 258, μ: 3550, ~: 3632) SafeTransferLibTest:testApproveWithReturnsFalseReverts() (gas: 9713) -SafeTransferLibTest:testApproveWithReturnsFalseReverts(address,uint256) (runs: 257, μ: 9866, ~: 9866) +SafeTransferLibTest:testApproveWithReturnsFalseReverts(address,uint256) (runs: 258, μ: 9866, ~: 9866) SafeTransferLibTest:testApproveWithReturnsTooLittleReverts() (gas: 9617) -SafeTransferLibTest:testApproveWithReturnsTooLittleReverts(address,uint256) (runs: 257, μ: 9795, ~: 9795) +SafeTransferLibTest:testApproveWithReturnsTooLittleReverts(address,uint256) (runs: 258, μ: 9795, ~: 9795) SafeTransferLibTest:testApproveWithReturnsTooMuch() (gas: 32511) -SafeTransferLibTest:testApproveWithReturnsTooMuch(address,uint256) (runs: 257, μ: 32591, ~: 32669) -SafeTransferLibTest:testApproveWithReturnsTwoReverts(address,uint256) (runs: 257, μ: 9823, ~: 9823) +SafeTransferLibTest:testApproveWithReturnsTooMuch(address,uint256) (runs: 258, μ: 32591, ~: 32669) +SafeTransferLibTest:testApproveWithReturnsTwoReverts(address,uint256) (runs: 258, μ: 9823, ~: 9823) SafeTransferLibTest:testApproveWithRevertingReverts() (gas: 9574) -SafeTransferLibTest:testApproveWithRevertingReverts(address,uint256) (runs: 257, μ: 9784, ~: 9784) +SafeTransferLibTest:testApproveWithRevertingReverts(address,uint256) (runs: 258, μ: 9784, ~: 9784) SafeTransferLibTest:testApproveWithStandardERC20() (gas: 31951) -SafeTransferLibTest:testApproveWithStandardERC20(address,uint256) (runs: 257, μ: 32095, ~: 32173) +SafeTransferLibTest:testApproveWithStandardERC20(address,uint256) (runs: 258, μ: 32095, ~: 32173) SafeTransferLibTest:testBalanceOfStandardERC20() (gas: 7852) -SafeTransferLibTest:testBalanceOfStandardERC20(address,uint256) (runs: 257, μ: 40347, ~: 40719) +SafeTransferLibTest:testBalanceOfStandardERC20(address,uint256) (runs: 258, μ: 40348, ~: 40719) SafeTransferLibTest:testForceTransferETHToGriever() (gas: 1511587) -SafeTransferLibTest:testForceTransferETHToGriever(uint256,uint256) (runs: 257, μ: 534821, ~: 570885) +SafeTransferLibTest:testForceTransferETHToGriever(uint256,uint256) (runs: 258, μ: 534583, ~: 570885) SafeTransferLibTest:testPermit2() (gas: 89501) -SafeTransferLibTest:testPermit2InvalidAmount(uint256) (runs: 257, μ: 102436, ~: 102489) +SafeTransferLibTest:testPermit2InvalidAmount(uint256) (runs: 258, μ: 102436, ~: 102489) SafeTransferLibTest:testPermit2OnDAI() (gas: 89523) -SafeTransferLibTest:testPermit2TransferFromInvalidAmount(uint256) (runs: 257, μ: 136065, ~: 136443) +SafeTransferLibTest:testPermit2TransferFromInvalidAmount(uint256) (runs: 258, μ: 136066, ~: 136443) SafeTransferLibTest:testSimplePermit2AndPermit2TransferFrom() (gas: 1127105) SafeTransferLibTest:testSimplePermit2AndPermit2TransferFromGas() (gas: 139845) SafeTransferLibTest:testTransferAllETH() (gas: 34643) -SafeTransferLibTest:testTransferAllETH(bytes32) (runs: 257, μ: 57237, ~: 57158) +SafeTransferLibTest:testTransferAllETH(bytes32) (runs: 258, μ: 57237, ~: 57158) SafeTransferLibTest:testTransferAllETHToContractWithoutFallbackReverts() (gas: 10782) -SafeTransferLibTest:testTransferAllETHToContractWithoutFallbackReverts(uint256) (runs: 257, μ: 10869, ~: 10869) +SafeTransferLibTest:testTransferAllETHToContractWithoutFallbackReverts(uint256) (runs: 258, μ: 10869, ~: 10869) SafeTransferLibTest:testTransferAllFromWithStandardERC20() (gas: 33323) -SafeTransferLibTest:testTransferAllFromWithStandardERC20(address,address,uint256) (runs: 257, μ: 57346, ~: 57331) +SafeTransferLibTest:testTransferAllFromWithStandardERC20(address,address,uint256) (runs: 258, μ: 57346, ~: 57331) SafeTransferLibTest:testTransferAllWithStandardERC20() (gas: 30832) -SafeTransferLibTest:testTransferAllWithStandardERC20(address,uint256) (runs: 257, μ: 42560, ~: 42560) +SafeTransferLibTest:testTransferAllWithStandardERC20(address,uint256) (runs: 258, μ: 42560, ~: 42560) SafeTransferLibTest:testTransferETH() (gas: 34622) -SafeTransferLibTest:testTransferETH(bytes32,uint256) (runs: 257, μ: 57211, ~: 57598) +SafeTransferLibTest:testTransferETH(bytes32,uint256) (runs: 258, μ: 57213, ~: 57598) SafeTransferLibTest:testTransferETHToContractWithoutFallbackReverts() (gas: 10851) -SafeTransferLibTest:testTransferETHToContractWithoutFallbackReverts(uint256) (runs: 257, μ: 10766, ~: 10888) -SafeTransferLibTest:testTransferFromWithGarbageReverts(address,address,uint256) (runs: 257, μ: 800393, ~: 680832) +SafeTransferLibTest:testTransferETHToContractWithoutFallbackReverts(uint256) (runs: 258, μ: 10766, ~: 10888) +SafeTransferLibTest:testTransferFromWithGarbageReverts(address,address,uint256) (runs: 258, μ: 799928, ~: 680761) SafeTransferLibTest:testTransferFromWithMissingReturn() (gas: 568086) -SafeTransferLibTest:testTransferFromWithMissingReturn(address,address,uint256) (runs: 257, μ: 674585, ~: 567926) +SafeTransferLibTest:testTransferFromWithMissingReturn(address,address,uint256) (runs: 258, μ: 674171, ~: 567926) SafeTransferLibTest:testTransferFromWithNonContract() (gas: 3066) -SafeTransferLibTest:testTransferFromWithNonContract(address,address,address,uint256) (runs: 257, μ: 3798, ~: 3861) -SafeTransferLibTest:testTransferFromWithNonGarbage(address,address,uint256) (runs: 257, μ: 728021, ~: 617988) +SafeTransferLibTest:testTransferFromWithNonContract(address,address,address,uint256) (runs: 258, μ: 3799, ~: 3861) +SafeTransferLibTest:testTransferFromWithNonGarbage(address,address,uint256) (runs: 258, μ: 727432, ~: 617988) SafeTransferLibTest:testTransferFromWithReturnsFalseReverts() (gas: 533170) -SafeTransferLibTest:testTransferFromWithReturnsFalseReverts(address,address,uint256) (runs: 257, μ: 662812, ~: 533611) +SafeTransferLibTest:testTransferFromWithReturnsFalseReverts(address,address,uint256) (runs: 258, μ: 662311, ~: 533611) SafeTransferLibTest:testTransferFromWithReturnsTooLittleReverts() (gas: 533168) -SafeTransferLibTest:testTransferFromWithReturnsTooLittleReverts(address,address,uint256) (runs: 257, μ: 656966, ~: 533386) +SafeTransferLibTest:testTransferFromWithReturnsTooLittleReverts(address,address,uint256) (runs: 258, μ: 656488, ~: 533386) SafeTransferLibTest:testTransferFromWithReturnsTooMuch() (gas: 568000) -SafeTransferLibTest:testTransferFromWithReturnsTooMuch(address,address,uint256) (runs: 257, μ: 706584, ~: 568779) -SafeTransferLibTest:testTransferFromWithReturnsTwoReverts(address,address,uint256) (runs: 257, μ: 604881, ~: 533491) +SafeTransferLibTest:testTransferFromWithReturnsTooMuch(address,address,uint256) (runs: 258, μ: 706051, ~: 568784) +SafeTransferLibTest:testTransferFromWithReturnsTwoReverts(address,address,uint256) (runs: 258, μ: 604604, ~: 533501) SafeTransferLibTest:testTransferFromWithRevertingReverts() (gas: 526455) -SafeTransferLibTest:testTransferFromWithRevertingReverts(address,address,uint256) (runs: 257, μ: 604445, ~: 526592) +SafeTransferLibTest:testTransferFromWithRevertingReverts(address,address,uint256) (runs: 258, μ: 604142, ~: 526592) SafeTransferLibTest:testTransferFromWithStandardERC20() (gas: 565871) -SafeTransferLibTest:testTransferFromWithStandardERC20(address,address,uint256) (runs: 257, μ: 718059, ~: 565594) -SafeTransferLibTest:testTransferWithGarbageReverts(address,uint256) (runs: 257, μ: 730250, ~: 645345) +SafeTransferLibTest:testTransferFromWithStandardERC20(address,address,uint256) (runs: 258, μ: 717470, ~: 565594) +SafeTransferLibTest:testTransferWithGarbageReverts(address,uint256) (runs: 258, μ: 729747, ~: 645345) SafeTransferLibTest:testTransferWithMissingReturn() (gas: 553732) -SafeTransferLibTest:testTransferWithMissingReturn(address,uint256) (runs: 257, μ: 657446, ~: 554080) +SafeTransferLibTest:testTransferWithMissingReturn(address,uint256) (runs: 258, μ: 657045, ~: 554049) SafeTransferLibTest:testTransferWithNonContract() (gas: 3010) -SafeTransferLibTest:testTransferWithNonContract(bytes32,address,uint256) (runs: 257, μ: 26110, ~: 26180) -SafeTransferLibTest:testTransferWithNonGarbage(address,uint256) (runs: 257, μ: 694093, ~: 581316) +SafeTransferLibTest:testTransferWithNonContract(bytes32,address,uint256) (runs: 258, μ: 26110, ~: 26180) +SafeTransferLibTest:testTransferWithNonGarbage(address,uint256) (runs: 258, μ: 693655, ~: 581310) SafeTransferLibTest:testTransferWithReturnsFalseReverts() (gas: 530240) -SafeTransferLibTest:testTransferWithReturnsFalseReverts(address,uint256) (runs: 257, μ: 563288, ~: 530497) +SafeTransferLibTest:testTransferWithReturnsFalseReverts(address,uint256) (runs: 258, μ: 563161, ~: 530497) SafeTransferLibTest:testTransferWithReturnsTooLittleReverts() (gas: 530427) -SafeTransferLibTest:testTransferWithReturnsTooLittleReverts(address,uint256) (runs: 257, μ: 598083, ~: 530421) +SafeTransferLibTest:testTransferWithReturnsTooLittleReverts(address,uint256) (runs: 258, μ: 597821, ~: 530421) SafeTransferLibTest:testTransferWithReturnsTooMuch() (gas: 554173) -SafeTransferLibTest:testTransferWithReturnsTooMuch(address,uint256) (runs: 257, μ: 683951, ~: 554537) -SafeTransferLibTest:testTransferWithReturnsTwoReverts(address,uint256) (runs: 257, μ: 666557, ~: 530518) +SafeTransferLibTest:testTransferWithReturnsTooMuch(address,uint256) (runs: 258, μ: 683450, ~: 554537) +SafeTransferLibTest:testTransferWithReturnsTwoReverts(address,uint256) (runs: 258, μ: 677219, ~: 530518) SafeTransferLibTest:testTransferWithRevertingReverts() (gas: 530155) -SafeTransferLibTest:testTransferWithRevertingReverts(address,uint256) (runs: 257, μ: 647349, ~: 530433) +SafeTransferLibTest:testTransferWithRevertingReverts(address,uint256) (runs: 258, μ: 646896, ~: 530433) SafeTransferLibTest:testTransferWithStandardERC20() (gas: 554400) -SafeTransferLibTest:testTransferWithStandardERC20(address,uint256) (runs: 257, μ: 668369, ~: 554350) -SafeTransferLibTest:testTrySafeTransferFrom(address,address,uint256) (runs: 257, μ: 109213, ~: 111577) +SafeTransferLibTest:testTransferWithStandardERC20(address,uint256) (runs: 258, μ: 667927, ~: 554350) +SafeTransferLibTest:testTrySafeTransferFrom(address,address,uint256) (runs: 258, μ: 109222, ~: 111577) SafeTransferLibTest:testTryTransferAllETH() (gas: 148698) SafeTransferLibTest:testTryTransferETH() (gas: 148701) SafeTransferLibTest:testTryTransferETHWithNoGrief() (gas: 537025) @@ -1224,7 +1225,7 @@ SignatureCheckerLibTest:testERC6492PreDeploy() (gas: 1227387) SignatureCheckerLibTest:testERC6492WithoutRevertingVerifier() (gas: 61898) SignatureCheckerLibTest:testEmptyCalldataHelpers() (gas: 3987) SignatureCheckerLibTest:testEtchERC6492RevertingVerifier() (gas: 56459) -SignatureCheckerLibTest:testSignatureChecker(bytes32) (runs: 257, μ: 57795, ~: 47035) +SignatureCheckerLibTest:testSignatureChecker(bytes32) (runs: 258, μ: 57750, ~: 47033) SignatureCheckerLibTest:testSignatureCheckerOnEOAWithInvalidSignature() (gas: 21288) SignatureCheckerLibTest:testSignatureCheckerOnEOAWithInvalidSigner() (gas: 30788) SignatureCheckerLibTest:testSignatureCheckerOnEOAWithMatchingSignerAndSignature() (gas: 17685) @@ -1235,8 +1236,8 @@ SignatureCheckerLibTest:testSignatureCheckerOnWalletWithInvalidSigner() (gas: 25 SignatureCheckerLibTest:testSignatureCheckerOnWalletWithMatchingSignerAndSignature() (gas: 64494) SignatureCheckerLibTest:testSignatureCheckerOnWalletWithWrongSignedMessageHash() (gas: 64573) SignatureCheckerLibTest:testSignatureCheckerOnWalletWithZeroAddressSigner() (gas: 12340) -SignatureCheckerLibTest:testToEthSignedMessageHashDifferential(bytes) (runs: 257, μ: 1284, ~: 1284) -SignatureCheckerLibTest:testToEthSignedMessageHashDifferential(bytes32) (runs: 257, μ: 481, ~: 481) +SignatureCheckerLibTest:testToEthSignedMessageHashDifferential(bytes) (runs: 258, μ: 1284, ~: 1284) +SignatureCheckerLibTest:testToEthSignedMessageHashDifferential(bytes32) (runs: 258, μ: 481, ~: 481) SignatureCheckerLibTest:test__codesize() (gas: 15523) SoladyTest:test__codesize() (gas: 840) TestPlus:test__codesize() (gas: 406) @@ -1252,7 +1253,7 @@ UUPSUpgradeableTest:testUpgradeToRevertWithUpgradeFailed() (gas: 18583) UUPSUpgradeableTest:test__codesize() (gas: 6048) UpgradeableBeaconTest:testInitializeUpgradeableSolidityBeacon() (gas: 296434) UpgradeableBeaconTest:testInitializeUpgradeableYulBeacon() (gas: 335455) -UpgradeableBeaconTest:testUpgradeableBeacon(uint256) (runs: 257, μ: 245541, ~: 246616) +UpgradeableBeaconTest:testUpgradeableBeacon(uint256) (runs: 258, μ: 245355, ~: 246606) UpgradeableBeaconTest:testUpgradeableSolidityBeaconOnlyFnSelectorNotRecognised() (gas: 234560) UpgradeableBeaconTest:testUpgradeableSolidityBeaconOnlyOwnerFunctions() (gas: 260458) UpgradeableBeaconTest:testUpgradeableYulBeaconOnlyFnSelectorNotRecognised() (gas: 172796) @@ -1261,12 +1262,12 @@ UpgradeableBeaconTest:test__codesize() (gas: 8808) WETHInvariants:invariantTotalSupplyEqualsBalance() (runs: 10, calls: 150, reverts: 84) WETHInvariants:test__codesize() (gas: 5178) WETHTest:testDeposit() (gas: 62272) -WETHTest:testDeposit(uint256) (runs: 257, μ: 61911, ~: 62566) +WETHTest:testDeposit(uint256) (runs: 258, μ: 61914, ~: 62566) WETHTest:testFallbackDeposit() (gas: 61978) -WETHTest:testFallbackDeposit(uint256) (runs: 257, μ: 61572, ~: 62227) +WETHTest:testFallbackDeposit(uint256) (runs: 258, μ: 61575, ~: 62227) WETHTest:testMetadata() (gas: 9013) WETHTest:testPartialWithdraw() (gas: 70422) WETHTest:testWithdraw() (gas: 52047) -WETHTest:testWithdraw(uint256,uint256) (runs: 257, μ: 70510, ~: 71182) +WETHTest:testWithdraw(uint256,uint256) (runs: 258, μ: 70513, ~: 71182) WETHTest:testWithdrawToContractWithoutReceiveReverts() (gas: 90164) WETHTest:test__codesize() (gas: 9417) \ No newline at end of file diff --git a/README.md b/README.md index 43d3dac6e..f41bfd860 100644 --- a/README.md +++ b/README.md @@ -60,7 +60,7 @@ utils ├─ LibPRNG — "Library for generating pseudorandom numbers" ├─ Base64 — "Library for Base64 encoding and decoding" ├─ SSTORE2 — "Library for cheaper reads and writes to persistent storage" -├─ CREATE3 — "Deploy to deterministic addresses without an initcode factor" +├─ CREATE3 — "Deterministic deployments agnostic to the initialization code" ├─ LibRLP — "Library for RLP encoding and CREATE address computation" ├─ LibBit — "Library for bit twiddling and boolean operations" ├─ LibZip — "Library for compressing and decompressing bytes" diff --git a/src/utils/CREATE3.sol b/src/utils/CREATE3.sol index 5ea0337e6..57b5b0bb3 100644 --- a/src/utils/CREATE3.sol +++ b/src/utils/CREATE3.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.4; -/// @notice Deploy to deterministic addresses without an initcode factor. +/// @notice Deterministic deployments agnostic to the initialization code. /// @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/CREATE3.sol) /// @author Modified from Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/CREATE3.sol) /// @author Modified from 0xSequence (https://github.com/0xSequence/create3/blob/master/contracts/Create3.sol) @@ -13,9 +13,6 @@ library CREATE3 { /// @dev Unable to deploy the contract. error DeploymentFailed(); - /// @dev Unable to initialize the contract. - error InitializationFailed(); - /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ /* BYTECODE CONSTANTS */ /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/ @@ -44,12 +41,12 @@ library CREATE3 { * -------------------------------------------------------------------+ */ - /// @dev The proxy bytecode. - uint256 private constant _PROXY_BYTECODE = 0x67363d3d37363d34f03d5260086018f3; + /// @dev The proxy initialization code. + uint256 private constant _PROXY_INITCODE = 0x67363d3d37363d34f03d5260086018f3; - /// @dev Hash of the `_PROXY_BYTECODE`. + /// @dev Hash of the `_PROXY_INITCODE`. /// Equivalent to `keccak256(abi.encodePacked(hex"67363d3d37363d34f03d5260086018f3"))`. - bytes32 private constant _PROXY_BYTECODE_HASH = + bytes32 internal constant PROXY_INITCODE_HASH = 0x21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f; /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ @@ -76,52 +73,25 @@ library CREATE3 { { /// @solidity memory-safe-assembly assembly { - // Store the `_PROXY_BYTECODE` into scratch space. - mstore(0x00, _PROXY_BYTECODE) - // Deploy a new contract with our pre-made bytecode via CREATE2. + mstore(0x00, _PROXY_INITCODE) // Store the `_PROXY_INITCODE`. let proxy := create2(0, 0x10, 0x10, salt) - - // If the result of `create2` is the zero address, revert. if iszero(proxy) { - // Store the function selector of `DeploymentFailed()`. - mstore(0x00, 0x30116425) - // Revert with (offset, size). + mstore(0x00, 0x30116425) // `DeploymentFailed()`. revert(0x1c, 0x04) } - - // Store the proxy's address. - mstore(0x14, proxy) + mstore(0x14, proxy) // Store the proxy's address. // 0xd6 = 0xc0 (short RLP prefix) + 0x16 (length of: 0x94 ++ proxy ++ 0x01). // 0x94 = 0x80 + 0x14 (0x14 = the length of an address, 20 bytes, in hex). mstore(0x00, 0xd694) - // Nonce of the proxy contract (1). - mstore8(0x34, 0x01) - + mstore8(0x34, 0x01) // Nonce of the proxy contract (1). deployed := keccak256(0x1e, 0x17) - - // If the `call` fails, revert. if iszero( - call( - gas(), // Gas remaining. - proxy, // Proxy's address. - value, // Ether value. - add(initCode, 0x20), // Start of `initCode`. - mload(initCode), // Length of `initCode`. - 0x00, // Offset of output. - 0x00 // Length of output. + mul( // The arguments of `mul` are evaluated last to first. + extcodesize(deployed), + call(gas(), proxy, value, add(initCode, 0x20), mload(initCode), 0x00, 0x00) ) ) { - // Store the function selector of `InitializationFailed()`. - mstore(0x00, 0x19b991a8) - // Revert with (offset, size). - revert(0x1c, 0x04) - } - - // If the code size of `deployed` is zero, revert. - if iszero(extcodesize(deployed)) { - // Store the function selector of `InitializationFailed()`. - mstore(0x00, 0x19b991a8) - // Revert with (offset, size). + mstore(0x00, 0x30116425) // `DeploymentFailed()`. revert(0x1c, 0x04) } } @@ -140,27 +110,18 @@ library CREATE3 { { /// @solidity memory-safe-assembly assembly { - // Cache the free memory pointer. - let m := mload(0x40) - // Store `deployer`. - mstore(0x00, deployer) - // Store the prefix. - mstore8(0x0b, 0xff) - // Store the salt. - mstore(0x20, salt) - // Store the bytecode hash. - mstore(0x40, _PROXY_BYTECODE_HASH) - - // Store the proxy's address. - mstore(0x14, keccak256(0x0b, 0x55)) - // Restore the free memory pointer. - mstore(0x40, m) + let m := mload(0x40) // Cache the free memory pointer. + mstore(0x00, deployer) // Store `deployer`. + mstore8(0x0b, 0xff) // Store the prefix. + mstore(0x20, salt) // Store the salt. + mstore(0x40, PROXY_INITCODE_HASH) // Store the bytecode hash. + + mstore(0x14, keccak256(0x0b, 0x55)) // Store the proxy's address. + mstore(0x40, m) // Restore the free memory pointer. // 0xd6 = 0xc0 (short RLP prefix) + 0x16 (length of: 0x94 ++ proxy ++ 0x01). // 0x94 = 0x80 + 0x14 (0x14 = the length of an address, 20 bytes, in hex). mstore(0x00, 0xd694) - // Nonce of the proxy contract (1). - mstore8(0x34, 0x01) - + mstore8(0x34, 0x01) // Nonce of the proxy contract (1). deployed := keccak256(0x1e, 0x17) } } diff --git a/src/utils/ERC1967FactoryConstants.sol b/src/utils/ERC1967FactoryConstants.sol index 61ae337d0..a54be2222 100644 --- a/src/utils/ERC1967FactoryConstants.sol +++ b/src/utils/ERC1967FactoryConstants.sol @@ -34,7 +34,7 @@ library ERC1967FactoryConstants { bytes internal constant BYTECODE = hex"6080604052600436106100b15760003560e01c8063545e7c611161006957806399a88ec41161004e57806399a88ec41461019d578063a97b90d5146101b0578063db4c545e146101c357600080fd5b8063545e7c61146101775780639623609d1461018a57600080fd5b80633729f9221161009a5780633729f922146101315780634314f120146101445780635414dff01461015757600080fd5b80631acfd02a146100b65780632abbef15146100d8575b600080fd5b3480156100c257600080fd5b506100d66100d1366004610604565b6101e6565b005b3480156100e457600080fd5b506101076100f3366004610637565b30600c908152600091909152602090205490565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61010761013f366004610652565b610237565b6101076101523660046106d7565b61024e565b34801561016357600080fd5b50610107610172366004610738565b610267565b610107610185366004610604565b61029a565b6100d66101983660046106d7565b6102af565b6100d66101ab366004610604565b61035f565b6101076101be366004610751565b610370565b3480156101cf57600080fd5b506101d86103a9565b604051908152602001610128565b30600c52816000526020600c2033815414610209576382b429006000526004601cfd5b81905580827f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f600080a35050565b60006102468484843685610370565b949350505050565b600061025e8585838087876103c2565b95945050505050565b6000806102726103a9565b905060ff600053806035523060601b6001528260155260556000209150600060355250919050565b60006102a88383368461024e565b9392505050565b30600c5283600052336020600c2054146102d1576382b429006000526004601cfd5b6040518381527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc602082015281836040830137600080836040018334895af1610331573d610327576355299b496000526004601cfd5b3d6000803e3d6000fd5b5082847f5d611f318680d00598bb735d61bacf0c514c6b50e1e5ad30040a4df2b12791c7600080a350505050565b61036c82823660006102af565b5050565b60008360601c33148460601c151761039057632f6348366000526004601cfd5b61039f868686600187876103c2565b9695505050505050565b6000806103b461049c565b608960139091012092915050565b6000806103cd61049c565b90508480156103e757866089601384016000f592506103f3565b6089601383016000f092505b50816104075763301164256000526004601cfd5b8781527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc602082015282846040830137600080846040018334865af161045a573d6103275763301164256000526004601cfd5b30600c5281600052866020600c20558688837fc95935a66d15e0da5e412aca0ad27ae891d20b2fb91cf3994b6a3bf2b8178082600080a4509695505050505050565b6040513060701c801561054257666052573d6000fd607b8301527f3d356020355560408036111560525736038060403d373d3d355af43d6000803e60748301527f3735a920a3ca505d382bbc545af43d6000803e6052573d6000fd5b3d6000f35b60548301527f14605757363d3d37363d7f360894a13ba1a3210667c828492db98dca3e2076cc60348301523060148301526c607f3d8160093d39f33d3d337382525090565b66604c573d6000fd60758301527f3d3560203555604080361115604c5736038060403d373d3d355af43d6000803e606e8301527f3735a920a3ca505d382bbc545af43d6000803e604c573d6000fd5b3d6000f35b604e8301527f14605157363d3d37363d7f360894a13ba1a3210667c828492db98dca3e2076cc602e83015230600e8301526c60793d8160093d39f33d3d336d82525090565b803573ffffffffffffffffffffffffffffffffffffffff811681146105ff57600080fd5b919050565b6000806040838503121561061757600080fd5b610620836105db565b915061062e602084016105db565b90509250929050565b60006020828403121561064957600080fd5b6102a8826105db565b60008060006060848603121561066757600080fd5b610670846105db565b925061067e602085016105db565b9150604084013590509250925092565b60008083601f8401126106a057600080fd5b50813567ffffffffffffffff8111156106b857600080fd5b6020830191508360208285010111156106d057600080fd5b9250929050565b600080600080606085870312156106ed57600080fd5b6106f6856105db565b9350610704602086016105db565b9250604085013567ffffffffffffffff81111561072057600080fd5b61072c8782880161068e565b95989497509550505050565b60006020828403121561074a57600080fd5b5035919050565b60008060008060006080868803121561076957600080fd5b610772866105db565b9450610780602087016105db565b935060408601359250606086013567ffffffffffffffff8111156107a357600080fd5b6107af8882890161068e565b96999598509396509294939250505056fea26469706673582212200ac7c3ccbc2d311c48bf5465b021542e0e306fe3c462c060ba6a3d2f81ff6c5f64736f6c63430008130033"; - /// @dev The initcode used to deploy the canonical ERC1967Factory. + /// @dev The initialization code used to deploy the canonical ERC1967Factory. bytes internal constant INITCODE = abi.encodePacked( hex"608060405234801561001057600080fd5b506107f6806100206000396000f3fe", BYTECODE ); diff --git a/src/utils/SSTORE2.sol b/src/utils/SSTORE2.sol index a29d3a004..3dac9b33c 100644 --- a/src/utils/SSTORE2.sol +++ b/src/utils/SSTORE2.sol @@ -6,14 +6,19 @@ pragma solidity ^0.8.4; /// @author Saw-mon-and-Natalie (https://github.com/Saw-mon-and-Natalie) /// @author Modified from Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/SSTORE2.sol) /// @author Modified from 0xSequence (https://github.com/0xSequence/sstore2/blob/master/contracts/SSTORE2.sol) +/// @author Modified from SSTORE3 (https://github.com/Philogy/sstore3) library SSTORE2 { /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ /* CONSTANTS */ /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/ - /// @dev We skip the first byte as it's a STOP opcode, - /// which ensures the contract can't be called. - uint256 internal constant DATA_OFFSET = 1; + /// @dev The proxy initialization code. + uint256 private constant _CREATE3_PROXY_INITCODE = 0x67363d3d37363d34f03d5260086018f3; + + /// @dev Hash of the `_CREATE3_PROXY_INITCODE`. + /// Equivalent to `keccak256(abi.encodePacked(hex"67363d3d37363d34f03d5260086018f3"))`. + bytes32 internal constant CREATE3_PROXY_INITCODE_HASH = + 0x21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f; /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ /* CUSTOM ERRORS */ @@ -37,10 +42,7 @@ library SSTORE2 { /// @solidity memory-safe-assembly assembly { let originalDataLength := mload(data) - - // Add 1 to data size since we are prefixing it with a STOP opcode. - let dataSize := add(originalDataLength, DATA_OFFSET) - + let dataSize := add(originalDataLength, 1) // Add 1 to skp the STOP opcode. /** * ------------------------------------------------------------------------------+ * Opcode | Mnemonic | Stack | Memory | @@ -64,20 +66,87 @@ library SSTORE2 { // Left shift `dataSize` by 64 so that it lines up with the 0000 after PUSH2. or(0xfd61000080600a3d393df300, shl(0x40, dataSize)) ) - // Deploy a new contract with the generated creation code. pointer := create(0, add(data, 0x15), add(dataSize, 0xa)) - - // If `pointer` is zero, revert. if iszero(pointer) { - // Store the function selector of `DeploymentFailed()`. - mstore(0x00, 0x30116425) - // Revert with (offset, size). + mstore(0x00, 0x30116425) // `DeploymentFailed()`. + revert(0x1c, 0x04) + } + mstore(data, originalDataLength) // Restore the length of `data`. + } + } + + /// @dev Writes `data` into the bytecode of a storage contract and returns its address. + /// This uses the "CREATE3" workflow, which means that `pointer` is agnostic to `data, + /// and only depends on `salt`. + function writeDeterministic(bytes memory data, bytes32 salt) + internal + returns (address pointer) + { + /// @solidity memory-safe-assembly + assembly { + let originalDataLength := mload(data) + let dataSize := add(originalDataLength, 1) // Add 1 to skp the STOP opcode. + + mstore(0x00, _CREATE3_PROXY_INITCODE) // Store the `_PROXY_INITCODE`. + let proxy := create2(0, 0x10, 0x10, salt) + if iszero(proxy) { + mstore(0x00, 0x30116425) // `DeploymentFailed()`. + revert(0x1c, 0x04) + } + mstore(0x14, proxy) // Store the proxy's address. + // 0xd6 = 0xc0 (short RLP prefix) + 0x16 (length of: 0x94 ++ proxy ++ 0x01). + // 0x94 = 0x80 + 0x14 (0x14 = the length of an address, 20 bytes, in hex). + mstore(0x00, 0xd694) + mstore8(0x34, 0x01) // Nonce of the proxy contract (1). + pointer := keccak256(0x1e, 0x17) + + mstore( + // Do a out-of-gas revert if `dataSize` is more than 2 bytes. + // The actual EVM limit may be smaller and may change over time. + add(data, gt(dataSize, 0xffff)), + // Left shift `dataSize` by 64 so that it lines up with the 0000 after PUSH2. + or(0xfd61000080600a3d393df300, shl(0x40, dataSize)) + ) + if iszero( + mul( // The arguments of `mul` are evaluated last to first. + extcodesize(pointer), + call(gas(), proxy, 0, add(data, 0x15), add(dataSize, 0xa), codesize(), 0x00) + ) + ) { + mstore(0x00, 0x30116425) // `DeploymentFailed()`. revert(0x1c, 0x04) } + mstore(data, originalDataLength) // Restore the length of `data`. + } + } - // Restore original length of the variable size `data`. - mstore(data, originalDataLength) + /// @dev Returns the deterministic address for `salt`. + function predictDeterministicAddress(bytes32 salt) internal view returns (address pointer) { + pointer = predictDeterministicAddress(salt, address(this)); + } + + /// @dev Returns the deterministic address for `salt` with `deployer`. + function predictDeterministicAddress(bytes32 salt, address deployer) + internal + pure + returns (address pointer) + { + /// @solidity memory-safe-assembly + assembly { + let m := mload(0x40) // Cache the free memory pointer. + mstore(0x00, deployer) // Store `deployer`. + mstore8(0x0b, 0xff) // Store the prefix. + mstore(0x20, salt) // Store the salt. + mstore(0x40, CREATE3_PROXY_INITCODE_HASH) // Store the bytecode hash. + + mstore(0x14, keccak256(0x0b, 0x55)) // Store the proxy's address. + mstore(0x40, m) // Restore the free memory pointer. + // 0xd6 = 0xc0 (short RLP prefix) + 0x16 (length of: 0x94 ++ proxy ++ 0x01). + // 0x94 = 0x80 + 0x14 (0x14 = the length of an address, 20 bytes, in hex). + mstore(0x00, 0xd694) + mstore8(0x34, 0x01) // Nonce of the proxy contract (1). + pointer := keccak256(0x1e, 0x17) } } @@ -91,14 +160,10 @@ library SSTORE2 { assembly { let pointerCodesize := extcodesize(pointer) if iszero(pointerCodesize) { - // Store the function selector of `InvalidPointer()`. - mstore(0x00, 0x11052bb4) - // Revert with (offset, size). + mstore(0x00, 0x11052bb4) // `InvalidPointer()`. revert(0x1c, 0x04) } - // Offset all indices by 1 to skip the STOP opcode. - let size := sub(pointerCodesize, DATA_OFFSET) - + let size := sub(pointerCodesize, 1) // Sub 1 to skip the STOP opcode. // Get the pointer to the free memory and allocate // enough 32-byte words for the data and the length of the data, // then copy the code to the allocated memory. @@ -107,7 +172,7 @@ library SSTORE2 { mstore(0x40, add(data, and(add(size, 0x3f), 0xffe0))) mstore(data, size) mstore(add(add(data, 0x20), size), 0) // Zeroize the last slot. - extcodecopy(pointer, add(data, 0x20), DATA_OFFSET, size) + extcodecopy(pointer, add(data, 0x20), 1, size) } } @@ -118,22 +183,16 @@ library SSTORE2 { assembly { let pointerCodesize := extcodesize(pointer) if iszero(pointerCodesize) { - // Store the function selector of `InvalidPointer()`. - mstore(0x00, 0x11052bb4) - // Revert with (offset, size). + mstore(0x00, 0x11052bb4) // `InvalidPointer()`. revert(0x1c, 0x04) } - - // If `!(pointer.code.size > start)`, reverts. - // This also handles the case where `start + DATA_OFFSET` overflows. + // If `!(data.length + 1 > start)`, reverts. + // This also handles the case where `start + 1` overflows. if iszero(gt(pointerCodesize, start)) { - // Store the function selector of `ReadOutOfBounds()`. - mstore(0x00, 0x84eb0dd1) - // Revert with (offset, size). + mstore(0x00, 0x84eb0dd1) // `ReadOutOfBounds()`. revert(0x1c, 0x04) } - let size := sub(pointerCodesize, add(start, DATA_OFFSET)) - + let size := sub(pointerCodesize, add(start, 1)) // Get the pointer to the free memory and allocate // enough 32-byte words for the data and the length of the data, // then copy the code to the allocated memory. @@ -142,7 +201,7 @@ library SSTORE2 { mstore(0x40, add(data, and(add(size, 0x3f), 0xffe0))) mstore(data, size) mstore(add(add(data, 0x20), size), 0) // Zeroize the last slot. - extcodecopy(pointer, add(data, 0x20), add(start, DATA_OFFSET), size) + extcodecopy(pointer, add(data, 0x20), add(start, 1), size) } } @@ -157,28 +216,17 @@ library SSTORE2 { assembly { let pointerCodesize := extcodesize(pointer) if iszero(pointerCodesize) { - // Store the function selector of `InvalidPointer()`. - mstore(0x00, 0x11052bb4) - // Revert with (offset, size). + mstore(0x00, 0x11052bb4) // `InvalidPointer()`. revert(0x1c, 0x04) } - - // If `!(pointer.code.size > end) || (start > end)`, revert. + // If `!(data.length + 1 > end && start <= end)`, revert. // This also handles the cases where - // `end + DATA_OFFSET` or `start + DATA_OFFSET` overflows. - if iszero( - and( - gt(pointerCodesize, end), // Within bounds. - iszero(gt(start, end)) // Valid range. - ) - ) { - // Store the function selector of `ReadOutOfBounds()`. - mstore(0x00, 0x84eb0dd1) - // Revert with (offset, size). + // `end + 1` or `start + 1` overflows. + if iszero(gt(gt(pointerCodesize, end), gt(start, end))) { + mstore(0x00, 0x84eb0dd1) // `ReadOutOfBounds()`. revert(0x1c, 0x04) } let size := sub(end, start) - // Get the pointer to the free memory and allocate // enough 32-byte words for the data and the length of the data, // then copy the code to the allocated memory. @@ -187,7 +235,7 @@ library SSTORE2 { mstore(0x40, add(data, and(add(size, 0x3f), 0xffe0))) mstore(data, size) mstore(add(add(data, 0x20), size), 0) // Zeroize the last slot. - extcodecopy(pointer, add(data, 0x20), add(start, DATA_OFFSET), size) + extcodecopy(pointer, add(data, 0x20), add(start, 1), size) } } } diff --git a/test/SSTORE2.t.sol b/test/SSTORE2.t.sol index 3e71ea3a0..9a22063dd 100644 --- a/test/SSTORE2.t.sol +++ b/test/SSTORE2.t.sol @@ -6,11 +6,8 @@ import {SSTORE2} from "../src/utils/SSTORE2.sol"; contract SSTORE2Test is SoladyTest { function testWriteRead() public { - bytes memory testBytes = abi.encode("this is a test"); - - address pointer = SSTORE2.write(testBytes); - - assertEq(SSTORE2.read(pointer), testBytes); + bytes memory data = abi.encode("this is a test"); + assertEq(SSTORE2.read(SSTORE2.write(data)), data); } function testWriteReadFullStartBound() public { @@ -22,9 +19,8 @@ contract SSTORE2Test is SoladyTest { } function testWriteReadFullBoundedRead() public { - bytes memory testBytes = abi.encode("this is a test"); - - assertEq(SSTORE2.read(SSTORE2.write(testBytes), 0, testBytes.length), testBytes); + bytes memory data = abi.encode("this is a test"); + assertEq(SSTORE2.read(SSTORE2.write(data), 0, data.length), data); } function testWriteReadCustomBounds() public { @@ -68,43 +64,42 @@ contract SSTORE2Test is SoladyTest { SSTORE2.read(pointer, 41000, 42000); } - function testWriteRead(bytes calldata testBytes) public brutalizeMemory { + function testWriteRead(bytes calldata data) public brutalizeMemory { _misalignFreeMemoryPointer(); - bytes memory readResult = SSTORE2.read(SSTORE2.write(testBytes)); + bytes memory readResult = SSTORE2.read(SSTORE2.write(data)); _checkMemory(readResult); - assertEq(readResult, testBytes); + assertEq(readResult, data); } - function testWriteReadCustomStartBound(bytes calldata testBytes, uint256 startIndex) + function testWriteReadCustomStartBound(bytes calldata data, uint256 startIndex) public brutalizeMemory { - if (testBytes.length == 0) return; + if (data.length == 0) return; - startIndex = _bound(startIndex, 0, testBytes.length); + startIndex = _bound(startIndex, 0, data.length); _misalignFreeMemoryPointer(); - bytes memory readResult = SSTORE2.read(SSTORE2.write(testBytes), startIndex); + bytes memory readResult = SSTORE2.read(SSTORE2.write(data), startIndex); _checkMemory(readResult); - assertEq(readResult, bytes(testBytes[startIndex:])); + assertEq(readResult, bytes(data[startIndex:])); } - function testWriteReadCustomBounds( - bytes calldata testBytes, - uint256 startIndex, - uint256 endIndex - ) public brutalizeMemory { - if (testBytes.length == 0) return; + function testWriteReadCustomBounds(bytes calldata data, uint256 startIndex, uint256 endIndex) + public + brutalizeMemory + { + if (data.length == 0) return; - endIndex = _bound(endIndex, 0, testBytes.length); - startIndex = _bound(startIndex, 0, testBytes.length); + endIndex = _bound(endIndex, 0, data.length); + startIndex = _bound(startIndex, 0, data.length); if (startIndex > endIndex) return; _misalignFreeMemoryPointer(); - bytes memory readResult = SSTORE2.read(SSTORE2.write(testBytes), startIndex, endIndex); + bytes memory readResult = SSTORE2.read(SSTORE2.write(data), startIndex, endIndex); _checkMemory(readResult); - assertEq(readResult, bytes(testBytes[startIndex:endIndex])); + assertEq(readResult, bytes(data[startIndex:endIndex])); } function testReadInvalidPointerRevert(address pointer) public brutalizeMemory { @@ -132,23 +127,23 @@ contract SSTORE2Test is SoladyTest { SSTORE2.read(pointer, startIndex, endIndex); } - function testWriteReadCustomStartBoundOutOfRangeReverts( - bytes calldata testBytes, - uint256 startIndex - ) public brutalizeMemory { - startIndex = _bound(startIndex, testBytes.length + 1, type(uint256).max); - address pointer = SSTORE2.write(testBytes); + function testWriteReadCustomStartBoundOutOfRangeReverts(bytes calldata data, uint256 startIndex) + public + brutalizeMemory + { + startIndex = _bound(startIndex, data.length + 1, type(uint256).max); + address pointer = SSTORE2.write(data); vm.expectRevert(SSTORE2.ReadOutOfBounds.selector); SSTORE2.read(pointer, startIndex); } function testWriteReadCustomBoundsOutOfRangeReverts( - bytes calldata testBytes, + bytes calldata data, uint256 startIndex, uint256 endIndex ) public brutalizeMemory { - endIndex = _bound(endIndex, testBytes.length + 1, type(uint256).max); - address pointer = SSTORE2.write(testBytes); + endIndex = _bound(endIndex, data.length + 1, type(uint256).max); + address pointer = SSTORE2.write(data); vm.expectRevert(SSTORE2.ReadOutOfBounds.selector); SSTORE2.read(pointer, startIndex, endIndex); } @@ -165,6 +160,33 @@ contract SSTORE2Test is SoladyTest { return SSTORE2.write(data); } + function testWriteReadDeterministic(bytes memory data, bytes32 salt) public { + address predicted = SSTORE2.predictDeterministicAddress(salt); + assertEq(predicted.code.length, 0); + address pointer = this.writeDeterministic(data, salt); + assertEq(pointer, predicted); + assertEq(pointer.code, abi.encodePacked(hex"00", data)); + assertEq(SSTORE2.read(predicted), data); + if (_random() & 31 == 0) { + vm.expectRevert(); + this.writeDeterministic(data, salt); + } + } + + function writeDeterministic(bytes memory data, bytes32 salt) + public + brutalizeMemory + returns (address pointer) + { + _misalignFreeMemoryPointer(); + if (data.length == 0) { + bytes memory empty; + pointer = SSTORE2.writeDeterministic(empty, salt); + } else { + pointer = SSTORE2.writeDeterministic(data, salt); + } + } + function _dummyData(uint256 n) internal pure returns (bytes memory result) { /// @solidity memory-safe-assembly assembly {