From da284701d88018ed391155af428ac83b5198337e Mon Sep 17 00:00:00 2001 From: atarpara Date: Wed, 14 Aug 2024 15:17:33 +0530 Subject: [PATCH 01/11] =?UTF-8?q?=E2=9C=A8=20ECDSA=20canonicalHash?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gas-snapshot | 1196 ++++++++++++++++++++++--------------------- .gitignore | 3 + src/utils/ECDSA.sol | 73 +++ test/ECDSA.t.sol | 61 +++ 4 files changed, 737 insertions(+), 596 deletions(-) diff --git a/.gas-snapshot b/.gas-snapshot index 9a0b1273d..7b2340acf 100644 --- a/.gas-snapshot +++ b/.gas-snapshot @@ -1,9 +1,9 @@ Base64Test:testBase64DecodeSentenceGas() (gas: 3663) Base64Test:testBase64DecodeShortStringGas() (gas: 896) -Base64Test:testBase64EncodeDecode(bytes) (runs: 312, μ: 6066, ~: 4968) -Base64Test:testBase64EncodeDecodeAltModes(bytes) (runs: 312, μ: 881150, ~: 731603) +Base64Test:testBase64EncodeDecode(bytes) (runs: 256, μ: 5995, ~: 4968) +Base64Test:testBase64EncodeDecodeAltModes(bytes) (runs: 256, μ: 881784, ~: 732275) Base64Test:testBase64EncodeEmptyString() (gas: 902) -Base64Test:testBase64EncodeFileSafeAndNoPadding(bytes,bool,bool) (runs: 312, μ: 15786, ~: 14264) +Base64Test:testBase64EncodeFileSafeAndNoPadding(bytes,bool,bool) (runs: 256, μ: 15447, ~: 14264) Base64Test:testBase64EncodeSentence() (gas: 4333) Base64Test:testBase64EncodeShortStrings() (gas: 7610) Base64Test:testBase64EncodeToStringWithDoublePadding() (gas: 1553) @@ -12,120 +12,124 @@ Base64Test:testBase64EncodeToStringWithSinglePadding() (gas: 1487) Base64Test:testBase64WordBoundary() (gas: 11624) Base64Test:test__codesize() (gas: 6768) CREATE3Test:testDeployERC20() (gas: 833235) -CREATE3Test:testDeployERC20(bytes32,string,string,uint8) (runs: 312, μ: 879240, ~: 879319) +CREATE3Test:testDeployERC20(bytes32,string,string,uint8) (runs: 256, μ: 880265, ~: 879319) CREATE3Test:testDeployedUpperBitsSafeForPlainSolidity() (gas: 613) CREATE3Test:testDoubleDeployDifferentBytecodeReverts() (gas: 96898738) -CREATE3Test:testDoubleDeployDifferentBytecodeReverts(bytes32,bytes,bytes) (runs: 312, μ: 96880294, ~: 96880242) +CREATE3Test:testDoubleDeployDifferentBytecodeReverts(bytes32,bytes,bytes) (runs: 256, μ: 96880352, ~: 96880375) CREATE3Test:testDoubleDeploySameBytecodeReverts() (gas: 96889196) -CREATE3Test:testDoubleDeploySameBytecodeReverts(bytes32,bytes) (runs: 312, μ: 96881047, ~: 96880998) +CREATE3Test:testDoubleDeploySameBytecodeReverts(bytes32,bytes) (runs: 256, μ: 96881059, ~: 96880999) CREATE3Test:test__codesize() (gas: 14114) -DateTimeLibTest:testAddSubDiffDays(uint256,uint256) (runs: 312, μ: 4205, ~: 4209) -DateTimeLibTest:testAddSubDiffHours(uint256,uint256) (runs: 312, μ: 4147, ~: 4155) -DateTimeLibTest:testAddSubDiffMinutes(uint256,uint256) (runs: 312, μ: 4141, ~: 4129) -DateTimeLibTest:testAddSubDiffMonths(uint256,uint256) (runs: 312, μ: 7251, ~: 7257) -DateTimeLibTest:testAddSubDiffSeconds(uint256,uint256) (runs: 312, μ: 3757, ~: 3721) -DateTimeLibTest:testAddSubDiffYears(uint256,uint256) (runs: 312, μ: 6815, ~: 6822) +DateTimeLibTest:testAddSubDiffDays(uint256,uint256) (runs: 256, μ: 4200, ~: 4209) +DateTimeLibTest:testAddSubDiffHours(uint256,uint256) (runs: 256, μ: 4142, ~: 4155) +DateTimeLibTest:testAddSubDiffMinutes(uint256,uint256) (runs: 256, μ: 4138, ~: 4129) +DateTimeLibTest:testAddSubDiffMonths(uint256,uint256) (runs: 256, μ: 7245, ~: 7257) +DateTimeLibTest:testAddSubDiffSeconds(uint256,uint256) (runs: 256, μ: 3755, ~: 3721) +DateTimeLibTest:testAddSubDiffYears(uint256,uint256) (runs: 256, μ: 6808, ~: 6822) DateTimeLibTest:testDateTimeArithmeticReverts() (gas: 4495) DateTimeLibTest:testDateTimeMaxSupported() (gas: 2823) -DateTimeLibTest:testDateTimeToAndFroTimestamp((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 312, μ: 4135, ~: 4089) -DateTimeLibTest:testDateToAndFroEpochDay((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 312, μ: 2563, ~: 2588) +DateTimeLibTest:testDateTimeToAndFroTimestamp((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 256, μ: 4138, ~: 4089) +DateTimeLibTest:testDateToAndFroEpochDay((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 256, μ: 2561, ~: 2552) DateTimeLibTest:testDateToAndFroEpochDay() (gas: 877945) DateTimeLibTest:testDateToAndFroTimestamp() (gas: 926776) DateTimeLibTest:testDateToEpochDay() (gas: 1559) -DateTimeLibTest:testDateToEpochDayDifferential((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 312, μ: 2302, ~: 2322) -DateTimeLibTest:testDateToEpochDayDifferential2((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 312, μ: 2224, ~: 2249) +DateTimeLibTest:testDateToEpochDayDifferential((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 256, μ: 2300, ~: 2299) +DateTimeLibTest:testDateToEpochDayDifferential2((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 256, μ: 2222, ~: 2213) DateTimeLibTest:testDateToEpochDayGas() (gas: 764427) DateTimeLibTest:testDateToEpochDayGas2() (gas: 770404) DateTimeLibTest:testDayOfWeek() (gas: 175255) DateTimeLibTest:testDaysInMonth() (gas: 1226) -DateTimeLibTest:testDaysInMonth(uint256,uint256) (runs: 312, μ: 1072, ~: 1084) +DateTimeLibTest:testDaysInMonth(uint256,uint256) (runs: 256, μ: 1073, ~: 1085) DateTimeLibTest:testDaysToDate() (gas: 8377) -DateTimeLibTest:testEpochDayToDate(uint256) (runs: 312, μ: 1045, ~: 1045) -DateTimeLibTest:testEpochDayToDateDifferential(uint256) (runs: 312, μ: 1778, ~: 1721) -DateTimeLibTest:testEpochDayToDateDifferential2(uint256) (runs: 312, μ: 1786, ~: 1709) +DateTimeLibTest:testEpochDayToDate(uint256) (runs: 256, μ: 1045, ~: 1045) +DateTimeLibTest:testEpochDayToDateDifferential(uint256) (runs: 256, μ: 1776, ~: 1721) +DateTimeLibTest:testEpochDayToDateDifferential2(uint256) (runs: 256, μ: 1783, ~: 1709) DateTimeLibTest:testEpochDayToDateGas() (gas: 348457) DateTimeLibTest:testEpochDayToDateGas2() (gas: 360513) DateTimeLibTest:testIsLeapYear() (gas: 741) -DateTimeLibTest:testIsLeapYear(uint256) (runs: 312, μ: 541, ~: 517) +DateTimeLibTest:testIsLeapYear(uint256) (runs: 256, μ: 541, ~: 517) DateTimeLibTest:testIsSupportedDateFalse() (gas: 1180) -DateTimeLibTest:testIsSupportedDateTime((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 312, μ: 2950, ~: 2949) +DateTimeLibTest:testIsSupportedDateTime((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 256, μ: 2963, ~: 2949) DateTimeLibTest:testIsSupportedDateTrue() (gas: 626) DateTimeLibTest:testIsSupportedEpochDayFalse() (gas: 494) DateTimeLibTest:testIsSupportedEpochDayTrue() (gas: 305) DateTimeLibTest:testIsSupportedTimestampFalse() (gas: 541) DateTimeLibTest:testIsSupportedTimestampTrue() (gas: 326) -DateTimeLibTest:testIsWeekEnd(uint256) (runs: 312, μ: 693, ~: 617) +DateTimeLibTest:testIsWeekEnd(uint256) (runs: 256, μ: 690, ~: 617) DateTimeLibTest:testMondayTimestamp() (gas: 1106) -DateTimeLibTest:testMondayTimestamp(uint256) (runs: 312, μ: 769, ~: 836) +DateTimeLibTest:testMondayTimestamp(uint256) (runs: 256, μ: 768, ~: 836) DateTimeLibTest:testNthWeekdayInMonthOfYearTimestamp() (gas: 12053) -DateTimeLibTest:testNthWeekdayInMonthOfYearTimestamp(uint256,uint256,uint256,uint256) (runs: 312, μ: 3536, ~: 3576) +DateTimeLibTest:testNthWeekdayInMonthOfYearTimestamp(uint256,uint256,uint256,uint256) (runs: 256, μ: 3551, ~: 3584) DateTimeLibTest:testWeekday() (gas: 682) DateTimeLibTest:test__codesize() (gas: 19163) DelegateCheckerLibTest:testCheckDelegateForAll() (gas: 35639) -DelegateCheckerLibTest:testCheckDelegateForAll(address,address,bytes32) (runs: 312, μ: 228424, ~: 242449) +DelegateCheckerLibTest:testCheckDelegateForAll(address,address,bytes32) (runs: 256, μ: 226745, ~: 237921) DelegateCheckerLibTest:testCheckDelegateForContract() (gas: 54172) -DelegateCheckerLibTest:testCheckDelegateForContract(address,address,address,bytes32) (runs: 312, μ: 354882, ~: 305165) +DelegateCheckerLibTest:testCheckDelegateForContract(address,address,address,bytes32) (runs: 256, μ: 353367, ~: 302314) DelegateCheckerLibTest:testCheckDelegateForERC1155() (gas: 62242) -DelegateCheckerLibTest:testCheckDelegateForERC1155(address,address,address,uint256,bytes32) (runs: 312, μ: 296531, ~: 303784) +DelegateCheckerLibTest:testCheckDelegateForERC1155(address,address,address,uint256,bytes32) (runs: 256, μ: 279101, ~: 301018) DelegateCheckerLibTest:testCheckDelegateForERC20() (gas: 61708) -DelegateCheckerLibTest:testCheckDelegateForERC20(address,address,address,bytes32) (runs: 312, μ: 297559, ~: 279707) +DelegateCheckerLibTest:testCheckDelegateForERC20(address,address,address,bytes32) (runs: 256, μ: 292012, ~: 278793) DelegateCheckerLibTest:testCheckDelegateForERC721() (gas: 69938) -DelegateCheckerLibTest:testCheckDelegateForERC721(address,address,address,uint256,bytes32) (runs: 312, μ: 422037, ~: 379327) +DelegateCheckerLibTest:testCheckDelegateForERC721(address,address,address,uint256,bytes32) (runs: 256, μ: 426882, ~: 378362) DelegateCheckerLibTest:test__codesize() (gas: 33189) -DeploylessPredeployQueryerTest:testPredeployQueryer(bytes32) (runs: 312, μ: 264692, ~: 222329) +DeploylessPredeployQueryerTest:testPredeployQueryer(bytes32) (runs: 256, μ: 258237, ~: 222019) DeploylessPredeployQueryerTest:testTargetGenerate() (gas: 366064) DeploylessPredeployQueryerTest:test__codesize() (gas: 8284) -DynamicBufferLibTest:testClear(uint256) (runs: 312, μ: 34608, ~: 34661) -DynamicBufferLibTest:testDynamicBuffer(bytes[],uint256) (runs: 312, μ: 915761, ~: 786910) -DynamicBufferLibTest:testDynamicBuffer(uint256) (runs: 312, μ: 835948, ~: 670494) +DynamicBufferLibTest:testClear(uint256) (runs: 256, μ: 34589, ~: 34654) +DynamicBufferLibTest:testDynamicBuffer(bytes[],uint256) (runs: 256, μ: 924569, ~: 789061) +DynamicBufferLibTest:testDynamicBuffer(uint256) (runs: 256, μ: 856163, ~: 670224) DynamicBufferLibTest:testDynamicBufferChaining() (gas: 12661) -DynamicBufferLibTest:testDynamicBufferPushSingles(uint256,uint256,uint256) (runs: 312, μ: 242390, ~: 34449) +DynamicBufferLibTest:testDynamicBufferPushSingles(uint256,uint256,uint256) (runs: 256, μ: 253506, ~: 34391) DynamicBufferLibTest:testDynamicBufferPushSinglesReinterpretCast() (gas: 21959) DynamicBufferLibTest:testDynamicBufferReserveFromEmpty() (gas: 2754) DynamicBufferLibTest:testDynamicBufferReserveFromEmpty2() (gas: 2463) -DynamicBufferLibTest:testDynamicBufferReserveFromEmpty3(bytes,uint256) (runs: 312, μ: 2838, ~: 2069) +DynamicBufferLibTest:testDynamicBufferReserveFromEmpty3(bytes,uint256) (runs: 256, μ: 2820, ~: 2066) DynamicBufferLibTest:testJoinWithConcat() (gas: 31429) DynamicBufferLibTest:testJoinWithDynamicBuffer() (gas: 10830) DynamicBufferLibTest:test__codesize() (gas: 12662) -ECDSATest:testBytes32ToEthSignedMessageHash() (gas: 381) -ECDSATest:testBytesToEthSignedMessageHash() (gas: 11588163) +ECDSATest:testBytes32ToEthSignedMessageHash() (gas: 403) +ECDSATest:testBytesToEthSignedMessageHash() (gas: 11587201) ECDSATest:testBytesToEthSignedMessageHashEmpty() (gas: 578) -ECDSATest:testBytesToEthSignedMessageHashExceedsMaxLengthReverts() (gas: 615154) -ECDSATest:testBytesToEthSignedMessageHashLong() (gas: 681) -ECDSATest:testBytesToEthSignedMessageHashShort() (gas: 620) -ECDSATest:testEmptyCalldataHelpers() (gas: 3224) -ECDSATest:testRecoverAndTryRecover(bytes32) (runs: 312, μ: 2857910, ~: 2532719) -ECDSATest:testRecoverWithInvalidLongSignatureReverts() (gas: 7363) -ECDSATest:testRecoverWithInvalidShortSignatureReturnsZero() (gas: 7176) -ECDSATest:testRecoverWithInvalidSignatureReverts() (gas: 7963) -ECDSATest:testRecoverWithV0SignatureWithShortEIP2098Format() (gas: 4522) -ECDSATest:testRecoverWithV0SignatureWithShortEIP2098FormatAsCalldata() (gas: 8698) -ECDSATest:testRecoverWithV0SignatureWithVersion00Reverts() (gas: 7906) -ECDSATest:testRecoverWithV0SignatureWithVersion27() (gas: 8820) -ECDSATest:testRecoverWithV0SignatureWithWrongVersionReverts() (gas: 7862) -ECDSATest:testRecoverWithV1SignatureWithShortEIP2098Format() (gas: 4500) -ECDSATest:testRecoverWithV1SignatureWithShortEIP2098FormatAsCalldata() (gas: 8652) -ECDSATest:testRecoverWithV1SignatureWithVersion01Reverts() (gas: 7896) -ECDSATest:testRecoverWithV1SignatureWithVersion28() (gas: 8799) -ECDSATest:testRecoverWithV1SignatureWithWrongVersionReverts() (gas: 7863) -ECDSATest:testRecoverWithValidSignature() (gas: 8858) -ECDSATest:testRecoverWithWrongSigner() (gas: 8837) -ECDSATest:testTryRecoverWithInvalidLongSignatureReturnsZero() (gas: 5231) -ECDSATest:testTryRecoverWithInvalidShortSignatureReturnsZero() (gas: 5057) -ECDSATest:testTryRecoverWithInvalidSignature() (gas: 8932) -ECDSATest:testTryRecoverWithV0SignatureWithShortEIP2098Format() (gas: 4556) -ECDSATest:testTryRecoverWithV0SignatureWithShortEIP2098FormatAsCalldata() (gas: 8721) -ECDSATest:testTryRecoverWithV0SignatureWithVersion00ReturnsZero() (gas: 8839) -ECDSATest:testTryRecoverWithV0SignatureWithVersion27() (gas: 8840) -ECDSATest:testTryRecoverWithV0SignatureWithWrongVersionReturnsZero() (gas: 8840) -ECDSATest:testTryRecoverWithV1SignatureWithShortEIP2098Format() (gas: 4545) -ECDSATest:testTryRecoverWithV1SignatureWithShortEIP2098FormatAsCalldata() (gas: 8743) -ECDSATest:testTryRecoverWithV1SignatureWithVersion01ReturnsZero() (gas: 8861) -ECDSATest:testTryRecoverWithV1SignatureWithVersion28() (gas: 8840) -ECDSATest:testTryRecoverWithV1SignatureWithWrongVersionReturnsZero() (gas: 8861) -ECDSATest:testTryRecoverWithValidSignature() (gas: 8909) -ECDSATest:testTryRecoverWithWrongSigner() (gas: 8835) -ECDSATest:test__codesize() (gas: 13921) +ECDSATest:testBytesToEthSignedMessageHashExceedsMaxLengthReverts() (gas: 621735) +ECDSATest:testBytesToEthSignedMessageHashLong() (gas: 703) +ECDSATest:testBytesToEthSignedMessageHashShort() (gas: 642) +ECDSATest:testCanonicalHashCalldataWith64bytesSignature() (gas: 1246452) +ECDSATest:testCanonicalHashCalldataWithRegularSignature() (gas: 1244964) +ECDSATest:testCanonicalHashWith64bytesSignature() (gas: 620786) +ECDSATest:testCanonicalHashWithRegularSignature() (gas: 620405) +ECDSATest:testEmptyCalldataHelpers() (gas: 3246) +ECDSATest:testRecoverAndTryRecover(bytes32) (runs: 256, μ: 2777513, ~: 2558964) +ECDSATest:testRecoverWithInvalidLongSignatureReverts() (gas: 7373) +ECDSATest:testRecoverWithInvalidShortSignatureReturnsZero() (gas: 7209) +ECDSATest:testRecoverWithInvalidSignatureReverts() (gas: 7996) +ECDSATest:testRecoverWithV0SignatureWithShortEIP2098Format() (gas: 4611) +ECDSATest:testRecoverWithV0SignatureWithShortEIP2098FormatAsCalldata() (gas: 8687) +ECDSATest:testRecoverWithV0SignatureWithVersion00Reverts() (gas: 7961) +ECDSATest:testRecoverWithV0SignatureWithVersion27() (gas: 8875) +ECDSATest:testRecoverWithV0SignatureWithWrongVersionReverts() (gas: 7939) +ECDSATest:testRecoverWithV1SignatureWithShortEIP2098Format() (gas: 4567) +ECDSATest:testRecoverWithV1SignatureWithShortEIP2098FormatAsCalldata() (gas: 8685) +ECDSATest:testRecoverWithV1SignatureWithVersion01Reverts() (gas: 7973) +ECDSATest:testRecoverWithV1SignatureWithVersion28() (gas: 8876) +ECDSATest:testRecoverWithV1SignatureWithWrongVersionReverts() (gas: 7940) +ECDSATest:testRecoverWithValidSignature() (gas: 8913) +ECDSATest:testRecoverWithWrongSigner() (gas: 8892) +ECDSATest:testTryRecoverWithInvalidLongSignatureReturnsZero() (gas: 5286) +ECDSATest:testTryRecoverWithInvalidShortSignatureReturnsZero() (gas: 5090) +ECDSATest:testTryRecoverWithInvalidSignature() (gas: 8965) +ECDSATest:testTryRecoverWithV0SignatureWithShortEIP2098Format() (gas: 4533) +ECDSATest:testTryRecoverWithV0SignatureWithShortEIP2098FormatAsCalldata() (gas: 8754) +ECDSATest:testTryRecoverWithV0SignatureWithVersion00ReturnsZero() (gas: 8872) +ECDSATest:testTryRecoverWithV0SignatureWithVersion27() (gas: 8895) +ECDSATest:testTryRecoverWithV0SignatureWithWrongVersionReturnsZero() (gas: 8895) +ECDSATest:testTryRecoverWithV1SignatureWithShortEIP2098Format() (gas: 4565) +ECDSATest:testTryRecoverWithV1SignatureWithShortEIP2098FormatAsCalldata() (gas: 8776) +ECDSATest:testTryRecoverWithV1SignatureWithVersion01ReturnsZero() (gas: 8830) +ECDSATest:testTryRecoverWithV1SignatureWithVersion28() (gas: 8895) +ECDSATest:testTryRecoverWithV1SignatureWithWrongVersionReturnsZero() (gas: 8894) +ECDSATest:testTryRecoverWithValidSignature() (gas: 8964) +ECDSATest:testTryRecoverWithWrongSigner() (gas: 8890) +ECDSATest:test__codesize() (gas: 15684) EIP712Test:testDomainSeparator() (gas: 6048) EIP712Test:testDomainSeparatorOnClone() (gas: 8842) EIP712Test:testDomainSeparatorOnCloneDynamicWithChainIdChange() (gas: 69580) @@ -144,60 +148,60 @@ EIP712Test:testHashTypedDataWithChaindIdChange() (gas: 45206) EIP712Test:test__codesize() (gas: 11400) ERC1155HooksTest:testERC1155Hooks() (gas: 4512310) ERC1155HooksTest:test__codesize() (gas: 12474) -ERC1155Test:testApproveAll(address,bool) (runs: 312, μ: 49172, ~: 58445) -ERC1155Test:testAuthorizedEquivalence(address,address,bool) (runs: 312, μ: 715, ~: 715) -ERC1155Test:testBalanceOfBatchWithArrayMismatchReverts(uint256) (runs: 312, μ: 32081, ~: 34870) -ERC1155Test:testBatchBalanceOf(uint256) (runs: 312, μ: 154012, ~: 150768) -ERC1155Test:testBatchBurn(uint256) (runs: 312, μ: 193299, ~: 173471) -ERC1155Test:testBatchBurnInsufficientBalanceReverts(uint256) (runs: 312, μ: 200239, ~: 189402) -ERC1155Test:testBatchBurnWithArrayLengthMismatchReverts(uint256) (runs: 312, μ: 54705, ~: 54392) -ERC1155Test:testBatchMintToEOA(uint256) (runs: 312, μ: 149812, ~: 151142) -ERC1155Test:testBatchMintToERC1155Recipient(uint256) (runs: 312, μ: 1486761, ~: 770583) -ERC1155Test:testBatchMintToNonERC1155RecipientReverts(uint256) (runs: 312, μ: 194232, ~: 186184) -ERC1155Test:testBatchMintToRevertingERC1155RecipientReverts(uint256) (runs: 312, μ: 372951, ~: 366861) -ERC1155Test:testBatchMintToWrongReturnDataERC1155RecipientReverts(uint256) (runs: 312, μ: 321834, ~: 289146) -ERC1155Test:testBatchMintToZeroReverts(uint256) (runs: 312, μ: 97551, ~: 90599) -ERC1155Test:testBatchMintWithArrayMismatchReverts(uint256) (runs: 312, μ: 42686, ~: 35656) -ERC1155Test:testBurn(uint256) (runs: 312, μ: 115432, ~: 103901) -ERC1155Test:testBurnInsufficientBalanceReverts(uint256) (runs: 312, μ: 117392, ~: 105919) -ERC1155Test:testDirectSetApprovalForAll(address,address,bool) (runs: 312, μ: 25194, ~: 15691) -ERC1155Test:testMintToEOA(uint256) (runs: 312, μ: 90379, ~: 82236) -ERC1155Test:testMintToERC1155Recipient(uint256) (runs: 312, μ: 1177323, ~: 663225) -ERC1155Test:testMintToNonERC155RecipientReverts(uint256) (runs: 312, μ: 120352, ~: 103536) -ERC1155Test:testMintToRevertingERC155RecipientReverts(uint256) (runs: 312, μ: 298241, ~: 283996) -ERC1155Test:testMintToWrongReturnDataERC155RecipientReverts(uint256) (runs: 312, μ: 260921, ~: 238671) -ERC1155Test:testMintToZeroReverts(uint256) (runs: 312, μ: 55524, ~: 33409) +ERC1155Test:testApproveAll(address,bool) (runs: 256, μ: 49058, ~: 58445) +ERC1155Test:testAuthorizedEquivalence(address,address,bool) (runs: 256, μ: 715, ~: 715) +ERC1155Test:testBalanceOfBatchWithArrayMismatchReverts(uint256) (runs: 256, μ: 32189, ~: 34870) +ERC1155Test:testBatchBalanceOf(uint256) (runs: 256, μ: 150939, ~: 150612) +ERC1155Test:testBatchBurn(uint256) (runs: 256, μ: 199487, ~: 177453) +ERC1155Test:testBatchBurnInsufficientBalanceReverts(uint256) (runs: 256, μ: 200413, ~: 189482) +ERC1155Test:testBatchBurnWithArrayLengthMismatchReverts(uint256) (runs: 256, μ: 54396, ~: 51666) +ERC1155Test:testBatchMintToEOA(uint256) (runs: 256, μ: 148533, ~: 151115) +ERC1155Test:testBatchMintToERC1155Recipient(uint256) (runs: 256, μ: 1457030, ~: 759354) +ERC1155Test:testBatchMintToNonERC1155RecipientReverts(uint256) (runs: 256, μ: 196473, ~: 186184) +ERC1155Test:testBatchMintToRevertingERC1155RecipientReverts(uint256) (runs: 256, μ: 368673, ~: 366700) +ERC1155Test:testBatchMintToWrongReturnDataERC1155RecipientReverts(uint256) (runs: 256, μ: 320931, ~: 287909) +ERC1155Test:testBatchMintToZeroReverts(uint256) (runs: 256, μ: 94441, ~: 90583) +ERC1155Test:testBatchMintWithArrayMismatchReverts(uint256) (runs: 256, μ: 40836, ~: 35646) +ERC1155Test:testBurn(uint256) (runs: 256, μ: 118780, ~: 105654) +ERC1155Test:testBurnInsufficientBalanceReverts(uint256) (runs: 256, μ: 119511, ~: 105919) +ERC1155Test:testDirectSetApprovalForAll(address,address,bool) (runs: 256, μ: 25330, ~: 15691) +ERC1155Test:testMintToEOA(uint256) (runs: 256, μ: 90320, ~: 81702) +ERC1155Test:testMintToERC1155Recipient(uint256) (runs: 256, μ: 1194272, ~: 663050) +ERC1155Test:testMintToNonERC155RecipientReverts(uint256) (runs: 256, μ: 121703, ~: 103499) +ERC1155Test:testMintToRevertingERC155RecipientReverts(uint256) (runs: 256, μ: 300848, ~: 284019) +ERC1155Test:testMintToWrongReturnDataERC155RecipientReverts(uint256) (runs: 256, μ: 258718, ~: 238663) +ERC1155Test:testMintToZeroReverts(uint256) (runs: 256, μ: 54802, ~: 33409) ERC1155Test:testSafeBatchTransfer() (gas: 8288837) -ERC1155Test:testSafeBatchTransferFromToEOA(uint256) (runs: 312, μ: 255834, ~: 261975) -ERC1155Test:testSafeBatchTransferFromToERC1155Recipient(uint256) (runs: 312, μ: 2699914, ~: 981124) -ERC1155Test:testSafeBatchTransferFromToNonERC1155RecipientReverts(uint256) (runs: 312, μ: 264611, ~: 268276) -ERC1155Test:testSafeBatchTransferFromToRevertingERC1155RecipientReverts(uint256) (runs: 312, μ: 457705, ~: 449706) -ERC1155Test:testSafeBatchTransferFromToWrongReturnDataERC1155RecipientReverts(uint256) (runs: 312, μ: 413590, ~: 405742) -ERC1155Test:testSafeBatchTransferFromToZeroReverts(uint256) (runs: 312, μ: 179528, ~: 173471) -ERC1155Test:testSafeBatchTransferFromWithArrayLengthMismatchReverts(uint256) (runs: 312, μ: 68271, ~: 67084) -ERC1155Test:testSafeBatchTransferInsufficientBalanceReverts(uint256) (runs: 312, μ: 211165, ~: 193483) -ERC1155Test:testSafeTransferFromInsufficientBalanceReverts(uint256) (runs: 312, μ: 128428, ~: 108513) -ERC1155Test:testSafeTransferFromSelf(uint256) (runs: 312, μ: 142691, ~: 117652) -ERC1155Test:testSafeTransferFromSelfInsufficientBalanceReverts(uint256) (runs: 312, μ: 115281, ~: 81367) -ERC1155Test:testSafeTransferFromToEOA(uint256) (runs: 312, μ: 149528, ~: 130099) -ERC1155Test:testSafeTransferFromToERC1155Recipient(uint256) (runs: 312, μ: 1676978, ~: 741101) -ERC1155Test:testSafeTransferFromToNonERC155RecipientReverts(uint256) (runs: 312, μ: 175640, ~: 151127) -ERC1155Test:testSafeTransferFromToRevertingERC1155RecipientReverts(uint256) (runs: 312, μ: 357881, ~: 331989) -ERC1155Test:testSafeTransferFromToWrongReturnDataERC1155RecipientReverts(uint256) (runs: 312, μ: 320941, ~: 287375) -ERC1155Test:testSafeTransferFromToZeroReverts(uint256) (runs: 312, μ: 106160, ~: 80942) +ERC1155Test:testSafeBatchTransferFromToEOA(uint256) (runs: 256, μ: 248780, ~: 260148) +ERC1155Test:testSafeBatchTransferFromToERC1155Recipient(uint256) (runs: 256, μ: 2791227, ~: 977938) +ERC1155Test:testSafeBatchTransferFromToNonERC1155RecipientReverts(uint256) (runs: 256, μ: 264163, ~: 268481) +ERC1155Test:testSafeBatchTransferFromToRevertingERC1155RecipientReverts(uint256) (runs: 256, μ: 454886, ~: 449192) +ERC1155Test:testSafeBatchTransferFromToWrongReturnDataERC1155RecipientReverts(uint256) (runs: 256, μ: 414437, ~: 405430) +ERC1155Test:testSafeBatchTransferFromToZeroReverts(uint256) (runs: 256, μ: 178618, ~: 173401) +ERC1155Test:testSafeBatchTransferFromWithArrayLengthMismatchReverts(uint256) (runs: 256, μ: 67102, ~: 67119) +ERC1155Test:testSafeBatchTransferInsufficientBalanceReverts(uint256) (runs: 256, μ: 214149, ~: 193483) +ERC1155Test:testSafeTransferFromInsufficientBalanceReverts(uint256) (runs: 256, μ: 129591, ~: 108633) +ERC1155Test:testSafeTransferFromSelf(uint256) (runs: 256, μ: 142082, ~: 117857) +ERC1155Test:testSafeTransferFromSelfInsufficientBalanceReverts(uint256) (runs: 256, μ: 116352, ~: 81635) +ERC1155Test:testSafeTransferFromToEOA(uint256) (runs: 256, μ: 152043, ~: 130561) +ERC1155Test:testSafeTransferFromToERC1155Recipient(uint256) (runs: 256, μ: 1478875, ~: 740830) +ERC1155Test:testSafeTransferFromToNonERC155RecipientReverts(uint256) (runs: 256, μ: 179060, ~: 151301) +ERC1155Test:testSafeTransferFromToRevertingERC1155RecipientReverts(uint256) (runs: 256, μ: 356387, ~: 332045) +ERC1155Test:testSafeTransferFromToWrongReturnDataERC1155RecipientReverts(uint256) (runs: 256, μ: 323432, ~: 287122) +ERC1155Test:testSafeTransferFromToZeroReverts(uint256) (runs: 256, μ: 107677, ~: 80686) ERC1155Test:test__codesize() (gas: 42627) ERC1271Test:testBasefeeBytecodeContract() (gas: 45430) ERC1271Test:testIsValidSignature() (gas: 2374582) -ERC1271Test:testIsValidSignature(uint256) (runs: 312, μ: 238178, ~: 209750) +ERC1271Test:testIsValidSignature(uint256) (runs: 256, μ: 237601, ~: 209816) ERC1271Test:testSupportsNestedTypedDataSign() (gas: 165049) ERC1271Test:test__codesize() (gas: 30965) ERC1967FactoryTest:testChangeAdmin() (gas: 265913) ERC1967FactoryTest:testChangeAdminUnauthorized() (gas: 256913) ERC1967FactoryTest:testDeploy() (gas: 256955) -ERC1967FactoryTest:testDeployAndCall(uint256) (runs: 312, μ: 340039, ~: 340693) +ERC1967FactoryTest:testDeployAndCall(uint256) (runs: 256, μ: 340063, ~: 340701) ERC1967FactoryTest:testDeployAndCallWithRevert() (gas: 211455) -ERC1967FactoryTest:testDeployBrutalized(uint256) (runs: 312, μ: 99369, ~: 43570) -ERC1967FactoryTest:testDeployDeterministicAndCall(uint256) (runs: 312, μ: 318205, ~: 349635) +ERC1967FactoryTest:testDeployBrutalized(uint256) (runs: 256, μ: 96193, ~: 43570) +ERC1967FactoryTest:testDeployDeterministicAndCall(uint256) (runs: 256, μ: 318376, ~: 349635) ERC1967FactoryTest:testFactoryDeployment() (gas: 494423) ERC1967FactoryTest:testProxyFails() (gas: 258252) ERC1967FactoryTest:testProxySucceeds() (gas: 255277) @@ -210,45 +214,45 @@ ERC1967FactoryTest:test__codesize() (gas: 32279) ERC20Invariants:invariantBalanceSum() (runs: 10, calls: 150, reverts: 84) ERC20Invariants:test__codesize() (gas: 7532) ERC20Test:testApprove() (gas: 35730) -ERC20Test:testApprove(address,uint256) (runs: 312, μ: 31053, ~: 31181) +ERC20Test:testApprove(address,uint256) (runs: 256, μ: 31103, ~: 31181) ERC20Test:testBurn() (gas: 62048) -ERC20Test:testBurn(address,uint256,uint256) (runs: 312, μ: 62034, ~: 62663) -ERC20Test:testBurnInsufficientBalanceReverts(address,uint256,uint256) (runs: 312, μ: 56212, ~: 56578) -ERC20Test:testDirectSpendAllowance(uint256) (runs: 312, μ: 61339, ~: 61140) -ERC20Test:testDirectTransfer(uint256) (runs: 312, μ: 99235, ~: 111899) +ERC20Test:testBurn(address,uint256,uint256) (runs: 256, μ: 62235, ~: 62663) +ERC20Test:testBurnInsufficientBalanceReverts(address,uint256,uint256) (runs: 256, μ: 56281, ~: 56578) +ERC20Test:testDirectSpendAllowance(uint256) (runs: 256, μ: 61356, ~: 61624) +ERC20Test:testDirectTransfer(uint256) (runs: 256, μ: 99086, ~: 111899) ERC20Test:testInfiniteApproveTransferFrom() (gas: 90288) ERC20Test:testMetadata() (gas: 16516) ERC20Test:testMint() (gas: 58700) -ERC20Test:testMint(address,uint256) (runs: 312, μ: 58687, ~: 58943) +ERC20Test:testMint(address,uint256) (runs: 256, μ: 58787, ~: 58943) ERC20Test:testMintOverMaxUintReverts() (gas: 55969) ERC20Test:testPermit() (gas: 89282) -ERC20Test:testPermit(uint256) (runs: 312, μ: 89254, ~: 89373) -ERC20Test:testPermitBadDeadlineReverts(uint256) (runs: 312, μ: 41139, ~: 41139) -ERC20Test:testPermitBadNonceReverts(uint256) (runs: 312, μ: 41557, ~: 41535) -ERC20Test:testPermitPastDeadlineReverts(uint256) (runs: 312, μ: 35665, ~: 35665) -ERC20Test:testPermitReplayReverts(uint256) (runs: 312, μ: 92082, ~: 92084) +ERC20Test:testPermit(uint256) (runs: 256, μ: 89224, ~: 89373) +ERC20Test:testPermitBadDeadlineReverts(uint256) (runs: 256, μ: 41140, ~: 41140) +ERC20Test:testPermitBadNonceReverts(uint256) (runs: 256, μ: 41557, ~: 41535) +ERC20Test:testPermitPastDeadlineReverts(uint256) (runs: 256, μ: 35669, ~: 35669) +ERC20Test:testPermitReplayReverts(uint256) (runs: 256, μ: 92084, ~: 92082) ERC20Test:testTransfer() (gas: 65514) -ERC20Test:testTransfer(address,uint256) (runs: 312, μ: 65474, ~: 65730) +ERC20Test:testTransfer(address,uint256) (runs: 256, μ: 65574, ~: 65730) ERC20Test:testTransferFrom() (gas: 85869) -ERC20Test:testTransferFrom(address,address,address,uint256,uint256) (runs: 312, μ: 92644, ~: 95053) +ERC20Test:testTransferFrom(address,address,address,uint256,uint256) (runs: 256, μ: 92827, ~: 95053) ERC20Test:testTransferFromInsufficientAllowanceReverts() (gas: 81760) -ERC20Test:testTransferFromInsufficientAllowanceReverts(address,uint256,uint256) (runs: 312, μ: 82100, ~: 82275) +ERC20Test:testTransferFromInsufficientAllowanceReverts(address,uint256,uint256) (runs: 256, μ: 82134, ~: 82275) ERC20Test:testTransferFromInsufficientBalanceReverts() (gas: 62108) -ERC20Test:testTransferFromInsufficientBalanceReverts(address,uint256,uint256) (runs: 312, μ: 62728, ~: 62710) +ERC20Test:testTransferFromInsufficientBalanceReverts(address,uint256,uint256) (runs: 256, μ: 62776, ~: 62710) ERC20Test:testTransferInsufficientBalanceReverts() (gas: 56113) -ERC20Test:testTransferInsufficientBalanceReverts(address,uint256,uint256) (runs: 312, μ: 56271, ~: 56637) +ERC20Test:testTransferInsufficientBalanceReverts(address,uint256,uint256) (runs: 256, μ: 56340, ~: 56637) ERC20Test:test__codesize() (gas: 22868) -ERC2981Test:testRoyaltyOverflowCheckDifferential(uint256,uint256) (runs: 312, μ: 479, ~: 480) -ERC2981Test:testSetAndGetRoyaltyInfo(uint256) (runs: 312, μ: 106956, ~: 104400) +ERC2981Test:testRoyaltyOverflowCheckDifferential(uint256,uint256) (runs: 256, μ: 480, ~: 480) +ERC2981Test:testSetAndGetRoyaltyInfo(uint256) (runs: 256, μ: 106736, ~: 104400) ERC2981Test:test__codesize() (gas: 7247) ERC4337FactoryTest:testCreateAccountRepeatedDeployment() (gas: 149753) -ERC4337FactoryTest:testCreateAccountRepeatedDeployment(uint256) (runs: 312, μ: 171337, ~: 171295) -ERC4337FactoryTest:testDeployDeterministic(uint256) (runs: 312, μ: 130633, ~: 139611) +ERC4337FactoryTest:testCreateAccountRepeatedDeployment(uint256) (runs: 256, μ: 171337, ~: 171295) +ERC4337FactoryTest:testDeployDeterministic(uint256) (runs: 256, μ: 130620, ~: 139611) ERC4337FactoryTest:test__codesize() (gas: 13049) ERC4337Test:testCdFallback() (gas: 438041) ERC4337Test:testCdFallback2() (gas: 1135303) ERC4337Test:testDelegateExecute() (gas: 366407) -ERC4337Test:testDelegateExecute(uint256) (runs: 312, μ: 356290, ~: 345250) +ERC4337Test:testDelegateExecute(uint256) (runs: 256, μ: 356593, ~: 345250) ERC4337Test:testDelegateExecuteRevertsIfOwnerSlotValueChanged() (gas: 320067) ERC4337Test:testDepositFunctions() (gas: 497021) ERC4337Test:testDirectStorage() (gas: 70503) @@ -256,10 +260,10 @@ ERC4337Test:testDisableInitializerForImplementation() (gas: 1335854) ERC4337Test:testETHReceived() (gas: 16584) ERC4337Test:testExecute() (gas: 383460) ERC4337Test:testExecuteBatch() (gas: 694187) -ERC4337Test:testExecuteBatch(uint256) (runs: 312, μ: 554345, ~: 670564) +ERC4337Test:testExecuteBatch(uint256) (runs: 256, μ: 542278, ~: 574709) ERC4337Test:testInitializer() (gas: 285469) ERC4337Test:testIsValidSignature() (gas: 120389) -ERC4337Test:testIsValidSignaturePersonalSign(bytes32) (runs: 312, μ: 103666, ~: 103792) +ERC4337Test:testIsValidSignaturePersonalSign(bytes32) (runs: 256, μ: 103658, ~: 103792) ERC4337Test:testIsValidSignatureViaRPC() (gas: 96881547) ERC4337Test:testIsValidSignatureWrapped() (gas: 446290) ERC4337Test:testOnERC1155BatchReceived() (gas: 1567013) @@ -270,15 +274,15 @@ ERC4337Test:testValidateUserOp() (gas: 484606) ERC4337Test:test__codesize() (gas: 57576) ERC4626Test:testDepositWithNoApprovalReverts() (gas: 16569) ERC4626Test:testDepositWithNotEnoughApprovalReverts() (gas: 90179) -ERC4626Test:testDifferentialFullMulDiv(uint256,uint256,uint256) (runs: 312, μ: 3319, ~: 3107) +ERC4626Test:testDifferentialFullMulDiv(uint256,uint256,uint256) (runs: 256, μ: 3311, ~: 3107) 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: 312, μ: 201955, ~: 201960) -ERC4626Test:testSingleMintRedeem(uint128) (runs: 312, μ: 200921, ~: 200926) +ERC4626Test:testSingleDepositWithdraw(uint128) (runs: 256, μ: 201956, ~: 201960) +ERC4626Test:testSingleMintRedeem(uint128) (runs: 256, μ: 200921, ~: 200926) ERC4626Test:testTryGetAssetDecimals() (gas: 31508026) ERC4626Test:testUseVirtualShares() (gas: 2428448) ERC4626Test:testVaultInteractionsForSomeoneElse() (gas: 296637) @@ -289,292 +293,292 @@ ERC4626Test:testWithdrawZero() (gas: 51874) ERC4626Test:test__codesize() (gas: 37159) ERC6551Test:testBaseFeeMini() (gas: 39514) ERC6551Test:testCdFallback() (gas: 895410) -ERC6551Test:testDeployERC6551(uint256) (runs: 312, μ: 169798, ~: 168368) +ERC6551Test:testDeployERC6551(uint256) (runs: 256, μ: 169946, ~: 168368) ERC6551Test:testDeployERC6551Proxy() (gas: 80395) ERC6551Test:testExecute() (gas: 507128) ERC6551Test:testExecuteBatch() (gas: 817215) -ERC6551Test:testExecuteBatch(uint256) (runs: 312, μ: 659476, ~: 768687) +ERC6551Test:testExecuteBatch(uint256) (runs: 256, μ: 655820, ~: 768676) ERC6551Test:testInitializeERC6551ProxyImplementation() (gas: 189772) -ERC6551Test:testIsValidSigner(address) (runs: 312, μ: 167134, ~: 167120) +ERC6551Test:testIsValidSigner(address) (runs: 256, μ: 167135, ~: 167122) ERC6551Test:testOnERC1155BatchReceived() (gas: 1702178) ERC6551Test:testOnERC1155Received() (gas: 1699450) ERC6551Test:testOnERC721Received() (gas: 1738043) ERC6551Test:testOnERC721ReceivedCycles() (gas: 2910842) -ERC6551Test:testOnERC721ReceivedCyclesWithDifferentChainIds(uint256) (runs: 312, μ: 449730, ~: 454716) -ERC6551Test:testOwnerWorksWithChainIdChange(uint256,uint256) (runs: 312, μ: 1386479, ~: 1386487) +ERC6551Test:testOnERC721ReceivedCyclesWithDifferentChainIds(uint256) (runs: 256, μ: 449188, ~: 454608) +ERC6551Test:testOwnerWorksWithChainIdChange(uint256,uint256) (runs: 256, μ: 1386474, ~: 1386487) ERC6551Test:testSupportsInterface() (gas: 168794) -ERC6551Test:testUpdateState(uint256) (runs: 312, μ: 234528, ~: 234457) +ERC6551Test:testUpdateState(uint256) (runs: 256, μ: 234548, ~: 234461) ERC6551Test:testUpgrade() (gas: 248210) ERC6551Test:test__codesize() (gas: 52683) ERC6909Test:testApprove() (gas: 36872) -ERC6909Test:testApprove(address,uint256,uint256) (runs: 312, μ: 37386, ~: 37514) +ERC6909Test:testApprove(address,uint256,uint256) (runs: 256, μ: 37436, ~: 37514) ERC6909Test:testBurn() (gas: 40870) -ERC6909Test:testBurn(address,uint256,uint256,uint256) (runs: 312, μ: 40693, ~: 41381) -ERC6909Test:testBurnInsufficientBalanceReverts(address,uint256,uint256,uint256) (runs: 312, μ: 35046, ~: 35166) +ERC6909Test:testBurn(address,uint256,uint256,uint256) (runs: 256, μ: 40651, ~: 41381) +ERC6909Test:testBurnInsufficientBalanceReverts(address,uint256,uint256,uint256) (runs: 256, μ: 35080, ~: 35166) ERC6909Test:testDecimals() (gas: 5676) ERC6909Test:testDirectApprove() (gas: 36737) -ERC6909Test:testDirectFunctions(uint256) (runs: 312, μ: 199924, ~: 200649) +ERC6909Test:testDirectFunctions(uint256) (runs: 256, μ: 199458, ~: 200633) ERC6909Test:testDirectSetOperator() (gas: 35937) ERC6909Test:testDirectTransfer() (gas: 66221) ERC6909Test:testInfiniteApproveTransferFrom() (gas: 78590) -ERC6909Test:testMetadata(uint256) (runs: 312, μ: 8257, ~: 8257) +ERC6909Test:testMetadata(uint256) (runs: 256, μ: 8257, ~: 8257) ERC6909Test:testMint() (gas: 37035) -ERC6909Test:testMint(address,uint256,uint256) (runs: 312, μ: 37143, ~: 37271) +ERC6909Test:testMint(address,uint256,uint256) (runs: 256, μ: 37193, ~: 37271) ERC6909Test:testMintOverMaxUintReverts() (gas: 34604) -ERC6909Test:testMintOverMaxUintReverts(address,uint256,uint256,uint256) (runs: 312, μ: 35514, ~: 35528) +ERC6909Test:testMintOverMaxUintReverts(address,uint256,uint256,uint256) (runs: 256, μ: 35513, ~: 35528) ERC6909Test:testOperatorTransferFrom() (gas: 74112) ERC6909Test:testSetOperator() (gas: 37139) -ERC6909Test:testSetOperator(address,address,bool) (runs: 312, μ: 26270, ~: 16767) +ERC6909Test:testSetOperator(address,address,bool) (runs: 256, μ: 26406, ~: 16767) ERC6909Test:testTokenURI() (gas: 32671) ERC6909Test:testTransfer() (gas: 48262) -ERC6909Test:testTransfer(address,uint256,uint256) (runs: 312, μ: 47258, ~: 47390) +ERC6909Test:testTransfer(address,uint256,uint256) (runs: 256, μ: 47318, ~: 47396) ERC6909Test:testTransferFrom() (gas: 74676) -ERC6909Test:testTransferFrom(address,address,address,uint256,uint256,uint256) (runs: 312, μ: 79961, ~: 81173) -ERC6909Test:testTransferFromCallerIsNotOperator(address,uint256,uint256) (runs: 312, μ: 39606, ~: 39606) -ERC6909Test:testTransferFromInsufficientAllowanceReverts(address,uint256,uint256,uint256) (runs: 312, μ: 67204, ~: 67771) +ERC6909Test:testTransferFrom(address,address,address,uint256,uint256,uint256) (runs: 256, μ: 80006, ~: 81173) +ERC6909Test:testTransferFromCallerIsNotOperator(address,uint256,uint256) (runs: 256, μ: 39606, ~: 39606) +ERC6909Test:testTransferFromInsufficientAllowanceReverts(address,uint256,uint256,uint256) (runs: 256, μ: 67220, ~: 67771) ERC6909Test:testTransferFromInsufficientBalanceReverts() (gas: 49861) -ERC6909Test:testTransferFromInsufficientBalanceReverts(address,uint256,uint256,uint256) (runs: 312, μ: 50477, ~: 50092) +ERC6909Test:testTransferFromInsufficientBalanceReverts(address,uint256,uint256,uint256) (runs: 256, μ: 50557, ~: 50090) ERC6909Test:testTransferFromInsufficientPermission() (gas: 67246) ERC6909Test:testTransferFromOverMaxUintReverts() (gas: 90493) -ERC6909Test:testTransferFromOverMaxUintReverts(address,uint256,uint256,uint256) (runs: 312, μ: 113398, ~: 113592) +ERC6909Test:testTransferFromOverMaxUintReverts(address,uint256,uint256,uint256) (runs: 256, μ: 113354, ~: 113593) ERC6909Test:testTransferInsufficientBalanceReverts() (gas: 34728) -ERC6909Test:testTransferInsufficientBalanceReverts(address,uint256,uint256,uint256) (runs: 312, μ: 34894, ~: 35270) +ERC6909Test:testTransferInsufficientBalanceReverts(address,uint256,uint256,uint256) (runs: 256, μ: 34875, ~: 35270) ERC6909Test:testTransferOverMaxUintReverts() (gas: 63748) -ERC6909Test:testTransferOverMaxUintReverts(address,uint256,uint256,uint256) (runs: 312, μ: 64303, ~: 64292) +ERC6909Test:testTransferOverMaxUintReverts(address,uint256,uint256,uint256) (runs: 256, μ: 64305, ~: 64293) ERC6909Test:test__codesize() (gas: 25915) ERC721HooksTest:testERC721Hooks() (gas: 3183310) ERC721HooksTest:test__codesize() (gas: 11072) -ERC721Test:testApprove(uint256) (runs: 312, μ: 107756, ~: 107561) -ERC721Test:testApproveAll(uint256) (runs: 312, μ: 50139, ~: 59583) -ERC721Test:testApproveBurn(uint256) (runs: 312, μ: 86292, ~: 86143) -ERC721Test:testApproveNonExistentReverts(uint256,address) (runs: 312, μ: 33463, ~: 33471) -ERC721Test:testApproveUnauthorizedReverts(uint256) (runs: 312, μ: 83071, ~: 84124) -ERC721Test:testAuthorizedEquivalence(address,bool,bool) (runs: 312, μ: 684, ~: 678) -ERC721Test:testAux(uint256) (runs: 312, μ: 192589, ~: 191199) -ERC721Test:testBurn(uint256) (runs: 312, μ: 81588, ~: 68910) -ERC721Test:testBurnNonExistentReverts(uint256) (runs: 312, μ: 10805, ~: 10805) +ERC721Test:testApprove(uint256) (runs: 256, μ: 107751, ~: 107561) +ERC721Test:testApproveAll(uint256) (runs: 256, μ: 50378, ~: 59583) +ERC721Test:testApproveBurn(uint256) (runs: 256, μ: 86298, ~: 86288) +ERC721Test:testApproveNonExistentReverts(uint256,address) (runs: 256, μ: 33463, ~: 33471) +ERC721Test:testApproveUnauthorizedReverts(uint256) (runs: 256, μ: 83037, ~: 82418) +ERC721Test:testAuthorizedEquivalence(address,bool,bool) (runs: 256, μ: 684, ~: 678) +ERC721Test:testAux(uint256) (runs: 256, μ: 192635, ~: 191445) +ERC721Test:testBurn(uint256) (runs: 256, μ: 82422, ~: 93566) +ERC721Test:testBurnNonExistentReverts(uint256) (runs: 256, μ: 10805, ~: 10805) ERC721Test:testCannotExceedMaxBalance() (gas: 169848) -ERC721Test:testDoubleBurnReverts(uint256) (runs: 312, μ: 63402, ~: 63412) -ERC721Test:testDoubleMintReverts(uint256) (runs: 312, μ: 79001, ~: 79014) -ERC721Test:testEverything(uint256) (runs: 312, μ: 289664, ~: 300942) -ERC721Test:testExtraData(uint256) (runs: 312, μ: 98799, ~: 98711) -ERC721Test:testExtraData2(uint256,uint256) (runs: 312, μ: 53889, ~: 53889) -ERC721Test:testIsApprovedOrOwner(uint256) (runs: 312, μ: 135436, ~: 135425) -ERC721Test:testMint(uint256) (runs: 312, μ: 82599, ~: 82558) -ERC721Test:testMintAndSetExtraDataUnchecked(uint256) (runs: 312, μ: 84231, ~: 84319) -ERC721Test:testMintAndSetExtraDataUncheckedWithOverwrite(uint256,uint96) (runs: 312, μ: 83683, ~: 83678) -ERC721Test:testMintToZeroReverts(uint256) (runs: 312, μ: 39510, ~: 39510) -ERC721Test:testOwnerOfNonExistent(uint256) (runs: 312, μ: 33175, ~: 33185) -ERC721Test:testSafeMintToEOA(uint256) (runs: 312, μ: 83032, ~: 83117) -ERC721Test:testSafeMintToERC721Recipient(uint256) (runs: 312, μ: 409373, ~: 409728) -ERC721Test:testSafeMintToERC721RecipientWithData(uint256,bytes) (runs: 312, μ: 459434, ~: 453669) -ERC721Test:testSafeMintToERC721RecipientWithWrongReturnData(uint256) (runs: 312, μ: 170407, ~: 170407) -ERC721Test:testSafeMintToERC721RecipientWithWrongReturnDataWithData(uint256,bytes) (runs: 312, μ: 171612, ~: 171569) -ERC721Test:testSafeMintToNonERC721RecipientReverts(uint256) (runs: 312, μ: 100507, ~: 100507) -ERC721Test:testSafeMintToNonERC721RecipientWithDataReverts(uint256,bytes) (runs: 312, μ: 101744, ~: 101701) -ERC721Test:testSafeMintToRevertingERC721RecipientReverts(uint256) (runs: 312, μ: 203343, ~: 203343) -ERC721Test:testSafeMintToRevertingERC721RecipientWithDataReverts(uint256,bytes) (runs: 312, μ: 204569, ~: 204526) -ERC721Test:testSafeTransferFromToEOA(uint256) (runs: 312, μ: 121529, ~: 121523) -ERC721Test:testSafeTransferFromToERC721Recipient(uint256) (runs: 312, μ: 470748, ~: 471194) -ERC721Test:testSafeTransferFromToERC721RecipientWithData(uint256,bytes) (runs: 312, μ: 520832, ~: 515009) -ERC721Test:testSafeTransferFromToERC721RecipientWithWrongReturnDataReverts(uint256) (runs: 312, μ: 201386, ~: 201420) -ERC721Test:testSafeTransferFromToERC721RecipientWithWrongReturnDataWithDataReverts(uint256,bytes) (runs: 312, μ: 202697, ~: 202710) -ERC721Test:testSafeTransferFromToNonERC721RecipientReverts(uint256) (runs: 312, μ: 131493, ~: 131523) -ERC721Test:testSafeTransferFromToNonERC721RecipientWithDataReverts(uint256,bytes) (runs: 312, μ: 132789, ~: 132802) -ERC721Test:testSafeTransferFromToRevertingERC721RecipientReverts(uint256) (runs: 312, μ: 234343, ~: 234311) -ERC721Test:testSafeTransferFromToRevertingERC721RecipientWithDataReverts(uint256,bytes) (runs: 312, μ: 235581, ~: 235600) -ERC721Test:testSafetyOfCustomStorage(uint256,uint256) (runs: 312, μ: 713, ~: 713) +ERC721Test:testDoubleBurnReverts(uint256) (runs: 256, μ: 63403, ~: 63412) +ERC721Test:testDoubleMintReverts(uint256) (runs: 256, μ: 79002, ~: 79014) +ERC721Test:testEverything(uint256) (runs: 256, μ: 286725, ~: 300882) +ERC721Test:testExtraData(uint256) (runs: 256, μ: 98826, ~: 98763) +ERC721Test:testExtraData2(uint256,uint256) (runs: 256, μ: 53889, ~: 53889) +ERC721Test:testIsApprovedOrOwner(uint256) (runs: 256, μ: 135458, ~: 135484) +ERC721Test:testMint(uint256) (runs: 256, μ: 82597, ~: 82558) +ERC721Test:testMintAndSetExtraDataUnchecked(uint256) (runs: 256, μ: 84232, ~: 84319) +ERC721Test:testMintAndSetExtraDataUncheckedWithOverwrite(uint256,uint96) (runs: 256, μ: 83683, ~: 83678) +ERC721Test:testMintToZeroReverts(uint256) (runs: 256, μ: 39510, ~: 39510) +ERC721Test:testOwnerOfNonExistent(uint256) (runs: 256, μ: 33174, ~: 33185) +ERC721Test:testSafeMintToEOA(uint256) (runs: 256, μ: 83031, ~: 82947) +ERC721Test:testSafeMintToERC721Recipient(uint256) (runs: 256, μ: 409509, ~: 409728) +ERC721Test:testSafeMintToERC721RecipientWithData(uint256,bytes) (runs: 256, μ: 460124, ~: 453669) +ERC721Test:testSafeMintToERC721RecipientWithWrongReturnData(uint256) (runs: 256, μ: 170407, ~: 170407) +ERC721Test:testSafeMintToERC721RecipientWithWrongReturnDataWithData(uint256,bytes) (runs: 256, μ: 171612, ~: 171569) +ERC721Test:testSafeMintToNonERC721RecipientReverts(uint256) (runs: 256, μ: 100507, ~: 100507) +ERC721Test:testSafeMintToNonERC721RecipientWithDataReverts(uint256,bytes) (runs: 256, μ: 101744, ~: 101701) +ERC721Test:testSafeMintToRevertingERC721RecipientReverts(uint256) (runs: 256, μ: 203343, ~: 203343) +ERC721Test:testSafeMintToRevertingERC721RecipientWithDataReverts(uint256,bytes) (runs: 256, μ: 204569, ~: 204526) +ERC721Test:testSafeTransferFromToEOA(uint256) (runs: 256, μ: 121529, ~: 121523) +ERC721Test:testSafeTransferFromToERC721Recipient(uint256) (runs: 256, μ: 470889, ~: 471203) +ERC721Test:testSafeTransferFromToERC721RecipientWithData(uint256,bytes) (runs: 256, μ: 521522, ~: 515028) +ERC721Test:testSafeTransferFromToERC721RecipientWithWrongReturnDataReverts(uint256) (runs: 256, μ: 201388, ~: 201420) +ERC721Test:testSafeTransferFromToERC721RecipientWithWrongReturnDataWithDataReverts(uint256,bytes) (runs: 256, μ: 202696, ~: 202710) +ERC721Test:testSafeTransferFromToNonERC721RecipientReverts(uint256) (runs: 256, μ: 131491, ~: 131523) +ERC721Test:testSafeTransferFromToNonERC721RecipientWithDataReverts(uint256,bytes) (runs: 256, μ: 132790, ~: 132802) +ERC721Test:testSafeTransferFromToRevertingERC721RecipientReverts(uint256) (runs: 256, μ: 234344, ~: 234311) +ERC721Test:testSafeTransferFromToRevertingERC721RecipientWithDataReverts(uint256,bytes) (runs: 256, μ: 235581, ~: 235600) +ERC721Test:testSafetyOfCustomStorage(uint256,uint256) (runs: 256, μ: 713, ~: 713) ERC721Test:testTransferFrom() (gas: 85739) -ERC721Test:testTransferFrom(uint256) (runs: 312, μ: 113382, ~: 112187) -ERC721Test:testTransferFromApproveAll(uint256) (runs: 312, μ: 118760, ~: 118733) -ERC721Test:testTransferFromNotExistentReverts(address,address,uint256) (runs: 312, μ: 34038, ~: 33940) -ERC721Test:testTransferFromNotOwner(uint256) (runs: 312, μ: 84547, ~: 84636) -ERC721Test:testTransferFromSelf(uint256) (runs: 312, μ: 92235, ~: 92237) -ERC721Test:testTransferFromToZeroReverts(uint256) (runs: 312, μ: 62888, ~: 62831) -ERC721Test:testTransferFromWrongFromReverts(address,uint256) (runs: 312, μ: 80277, ~: 80355) +ERC721Test:testTransferFrom(uint256) (runs: 256, μ: 113491, ~: 112180) +ERC721Test:testTransferFromApproveAll(uint256) (runs: 256, μ: 118756, ~: 118747) +ERC721Test:testTransferFromNotExistentReverts(address,address,uint256) (runs: 256, μ: 34040, ~: 33940) +ERC721Test:testTransferFromNotOwner(uint256) (runs: 256, μ: 84550, ~: 84636) +ERC721Test:testTransferFromSelf(uint256) (runs: 256, μ: 92237, ~: 92265) +ERC721Test:testTransferFromToZeroReverts(uint256) (runs: 256, μ: 62885, ~: 62828) +ERC721Test:testTransferFromWrongFromReverts(address,uint256) (runs: 256, μ: 80279, ~: 80355) ERC721Test:test__codesize() (gas: 43206) EfficientHashLibTest:testEfficientHash() (gas: 7544) -EfficientHashLibTest:testEfficientHash(uint256) (runs: 312, μ: 7615, ~: 7615) +EfficientHashLibTest:testEfficientHash(uint256) (runs: 256, μ: 7615, ~: 7615) EfficientHashLibTest:testEfficientHashFree() (gas: 372) -EfficientHashLibTest:testEfficientHashFree(uint8,bool,uint8) (runs: 312, μ: 972, ~: 908) +EfficientHashLibTest:testEfficientHashFree(uint8,bool,uint8) (runs: 256, μ: 961, ~: 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: 312, μ: 47893, ~: 40272) +EnumerableSetLibTest:testEnumerableAddressSetRevertsOnSentinel(uint256) (runs: 256, μ: 47174, ~: 38848) EnumerableSetLibTest:testEnumerableBytes32SetBasic() (gas: 271282) EnumerableSetLibTest:testEnumerableBytes32SetBasic2() (gas: 178471) EnumerableSetLibTest:testEnumerableBytes32SetNoStorageCollision() (gas: 103477) -EnumerableSetLibTest:testEnumerableBytes32SetRevertsOnSentinel(uint256) (runs: 312, μ: 51789, ~: 49215) -EnumerableSetLibTest:testEnumerableSetFuzz(uint256) (runs: 312, μ: 593920, ~: 511282) +EnumerableSetLibTest:testEnumerableBytes32SetRevertsOnSentinel(uint256) (runs: 256, μ: 52232, ~: 49215) +EnumerableSetLibTest:testEnumerableSetFuzz(uint256) (runs: 256, μ: 602908, ~: 508798) EnumerableSetLibTest:test__codesize() (gas: 14243) FixedPointMathLibTest:testAbs() (gas: 702) -FixedPointMathLibTest:testAbs(int256) (runs: 312, μ: 489, ~: 457) +FixedPointMathLibTest:testAbs(int256) (runs: 256, μ: 489, ~: 457) FixedPointMathLibTest:testAbsEdgeCases() (gas: 469) FixedPointMathLibTest:testAvg() (gas: 443) FixedPointMathLibTest:testAvgEdgeCase() (gas: 470) FixedPointMathLibTest:testAvgSigned() (gas: 900) FixedPointMathLibTest:testCbrt() (gas: 10283) -FixedPointMathLibTest:testCbrt(uint256) (runs: 312, μ: 1522, ~: 1535) -FixedPointMathLibTest:testCbrtBack(uint256) (runs: 312, μ: 34682, ~: 43208) +FixedPointMathLibTest:testCbrt(uint256) (runs: 256, μ: 1521, ~: 1535) +FixedPointMathLibTest:testCbrtBack(uint256) (runs: 256, μ: 34153, ~: 42245) FixedPointMathLibTest:testCbrtWad() (gas: 12051) -FixedPointMathLibTest:testCbrtWad(uint256) (runs: 312, μ: 2149, ~: 1973) +FixedPointMathLibTest:testCbrtWad(uint256) (runs: 256, μ: 2149, ~: 1973) FixedPointMathLibTest:testCbrtWadConverged() (gas: 2664) -FixedPointMathLibTest:testCbrtWadConverged(uint256) (runs: 312, μ: 2184, ~: 2236) +FixedPointMathLibTest:testCbrtWadConverged(uint256) (runs: 256, μ: 2185, ~: 2236) FixedPointMathLibTest:testCbrtWadDebug() (gas: 7338) FixedPointMathLibTest:testCbrtWadMonotonicallyIncreasing() (gas: 4140) -FixedPointMathLibTest:testCbrtWadMonotonicallyIncreasing(uint256,uint256) (runs: 312, μ: 3084, ~: 2933) -FixedPointMathLibTest:testClamp(uint256,uint256,uint256) (runs: 312, μ: 569, ~: 568) -FixedPointMathLibTest:testClampSigned(int256,int256,int256) (runs: 312, μ: 548, ~: 547) +FixedPointMathLibTest:testCbrtWadMonotonicallyIncreasing(uint256,uint256) (runs: 256, μ: 3028, ~: 2933) +FixedPointMathLibTest:testClamp(uint256,uint256,uint256) (runs: 256, μ: 569, ~: 568) +FixedPointMathLibTest:testClampSigned(int256,int256,int256) (runs: 256, μ: 547, ~: 547) FixedPointMathLibTest:testDist() (gas: 678) -FixedPointMathLibTest:testDist(int256,int256) (runs: 312, μ: 541, ~: 537) +FixedPointMathLibTest:testDist(int256,int256) (runs: 256, μ: 542, ~: 547) FixedPointMathLibTest:testDistEdgeCases() (gas: 570) FixedPointMathLibTest:testDivWad() (gas: 747) -FixedPointMathLibTest:testDivWad(uint256,uint256) (runs: 312, μ: 7018, ~: 891) +FixedPointMathLibTest:testDivWad(uint256,uint256) (runs: 256, μ: 7528, ~: 891) FixedPointMathLibTest:testDivWadEdgeCases() (gas: 414) -FixedPointMathLibTest:testDivWadOverflowReverts(uint256,uint256) (runs: 312, μ: 22390, ~: 26501) +FixedPointMathLibTest:testDivWadOverflowReverts(uint256,uint256) (runs: 256, μ: 21995, ~: 26501) FixedPointMathLibTest:testDivWadUp() (gas: 3129) -FixedPointMathLibTest:testDivWadUp(uint256,uint256) (runs: 312, μ: 7230, ~: 1009) +FixedPointMathLibTest:testDivWadUp(uint256,uint256) (runs: 256, μ: 7672, ~: 1009) FixedPointMathLibTest:testDivWadUpEdgeCases() (gas: 439) -FixedPointMathLibTest:testDivWadUpOverflowReverts(uint256,uint256) (runs: 312, μ: 22392, ~: 26500) +FixedPointMathLibTest:testDivWadUpOverflowReverts(uint256,uint256) (runs: 256, μ: 22015, ~: 26500) FixedPointMathLibTest:testDivWadUpZeroDenominatorReverts() (gas: 3261) -FixedPointMathLibTest:testDivWadUpZeroDenominatorReverts(uint256) (runs: 312, μ: 3295, ~: 3295) +FixedPointMathLibTest:testDivWadUpZeroDenominatorReverts(uint256) (runs: 256, μ: 3295, ~: 3295) FixedPointMathLibTest:testDivWadZeroDenominatorReverts() (gas: 3218) -FixedPointMathLibTest:testDivWadZeroDenominatorReverts(uint256) (runs: 312, μ: 3337, ~: 3337) +FixedPointMathLibTest:testDivWadZeroDenominatorReverts(uint256) (runs: 256, μ: 3337, ~: 3337) FixedPointMathLibTest:testExpWad() (gas: 8047) FixedPointMathLibTest:testFactorial() (gas: 98491) FixedPointMathLibTest:testFactorialOriginal() (gas: 94187) FixedPointMathLibTest:testFullMulDiv() (gas: 1128) -FixedPointMathLibTest:testFullMulDiv(uint256,uint256,uint256) (runs: 312, μ: 1397, ~: 983) -FixedPointMathLibTest:testFullMulDivAlwaysRevertsIfDivisorIsZero(uint256,uint256) (runs: 312, μ: 3478, ~: 3478) +FixedPointMathLibTest:testFullMulDiv(uint256,uint256,uint256) (runs: 256, μ: 1360, ~: 983) +FixedPointMathLibTest:testFullMulDivAlwaysRevertsIfDivisorIsZero(uint256,uint256) (runs: 256, μ: 3478, ~: 3478) FixedPointMathLibTest:testFullMulDivUnchecked() (gas: 1635) -FixedPointMathLibTest:testFullMulDivUnchecked(uint256,uint256,uint256) (runs: 312, μ: 1668, ~: 1565) -FixedPointMathLibTest:testFullMulDivUp(uint256,uint256,uint256) (runs: 312, μ: 1750, ~: 1427) +FixedPointMathLibTest:testFullMulDivUnchecked(uint256,uint256,uint256) (runs: 256, μ: 1664, ~: 1565) +FixedPointMathLibTest:testFullMulDivUp(uint256,uint256,uint256) (runs: 256, μ: 1723, ~: 1427) FixedPointMathLibTest:testFullMulDivUpRevertsIfRoundedUpResultOverflowsCase1() (gas: 3694) FixedPointMathLibTest:testFullMulDivUpRevertsIfRoundedUpResultOverflowsCase2() (gas: 3727) FixedPointMathLibTest:testGcd() (gas: 4206) -FixedPointMathLibTest:testGcd(uint256,uint256) (runs: 312, μ: 6646, ~: 2822) -FixedPointMathLibTest:testIsEven(uint256) (runs: 312, μ: 519, ~: 519) +FixedPointMathLibTest:testGcd(uint256,uint256) (runs: 256, μ: 6589, ~: 2822) +FixedPointMathLibTest:testIsEven(uint256) (runs: 256, μ: 519, ~: 519) FixedPointMathLibTest:testLambertW0WadAccuracy() (gas: 7160) -FixedPointMathLibTest:testLambertW0WadAccuracy(uint184) (runs: 312, μ: 2442, ~: 431) +FixedPointMathLibTest:testLambertW0WadAccuracy(uint184) (runs: 256, μ: 2406, ~: 431) FixedPointMathLibTest:testLambertW0WadKnownValues() (gas: 1685570) FixedPointMathLibTest:testLambertW0WadMonoDebug() (gas: 770645) FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasing() (gas: 18416531) -FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasing(int256,int256) (runs: 312, μ: 7239, ~: 6978) +FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasing(int256,int256) (runs: 256, μ: 7166, ~: 6978) FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasing2() (gas: 4035368) -FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasingAround(int256) (runs: 312, μ: 29465, ~: 35428) -FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasingAround2(uint96) (runs: 312, μ: 50888, ~: 17640) +FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasingAround(int256) (runs: 256, μ: 29401, ~: 35428) +FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasingAround2(uint96) (runs: 256, μ: 41241, ~: 17640) FixedPointMathLibTest:testLambertW0WadRevertsForOutOfDomain() (gas: 16608) FixedPointMathLibTest:testLambertW0WadWithinBounds() (gas: 122061) -FixedPointMathLibTest:testLambertW0WadWithinBounds(int256) (runs: 312, μ: 3766, ~: 4984) +FixedPointMathLibTest:testLambertW0WadWithinBounds(int256) (runs: 256, μ: 3741, ~: 4984) FixedPointMathLibTest:testLerpInt() (gas: 6461) -FixedPointMathLibTest:testLerpInt(int256,int256,int256,int256,int256) (runs: 312, μ: 1655, ~: 1198) +FixedPointMathLibTest:testLerpInt(int256,int256,int256,int256,int256) (runs: 256, μ: 1657, ~: 1198) FixedPointMathLibTest:testLerpUint() (gas: 6442) -FixedPointMathLibTest:testLerpUint(uint256,uint256,uint256,uint256,uint256) (runs: 312, μ: 1095, ~: 797) +FixedPointMathLibTest:testLerpUint(uint256,uint256,uint256,uint256,uint256) (runs: 256, μ: 1067, ~: 797) FixedPointMathLibTest:testLnWad() (gas: 2054) FixedPointMathLibTest:testLnWadBig() (gas: 2087) FixedPointMathLibTest:testLnWadNegativeReverts() (gas: 3318) FixedPointMathLibTest:testLnWadOverflowReverts() (gas: 3316) FixedPointMathLibTest:testLnWadSmall() (gas: 2644) FixedPointMathLibTest:testLog10() (gas: 76168) -FixedPointMathLibTest:testLog10(uint256,uint256) (runs: 312, μ: 2161, ~: 2195) +FixedPointMathLibTest:testLog10(uint256,uint256) (runs: 256, μ: 2166, ~: 2195) FixedPointMathLibTest:testLog10Up() (gas: 4369) FixedPointMathLibTest:testLog2() (gas: 243209) FixedPointMathLibTest:testLog256() (gas: 22831) -FixedPointMathLibTest:testLog256(uint256,uint256) (runs: 312, μ: 2086, ~: 2152) +FixedPointMathLibTest:testLog256(uint256,uint256) (runs: 256, μ: 2092, ~: 2152) FixedPointMathLibTest:testLog256Up() (gas: 1293) -FixedPointMathLibTest:testLog2Differential(uint256) (runs: 312, μ: 889, ~: 886) +FixedPointMathLibTest:testLog2Differential(uint256) (runs: 256, μ: 890, ~: 886) FixedPointMathLibTest:testLog2Up() (gas: 297368) -FixedPointMathLibTest:testMax(uint256,uint256) (runs: 312, μ: 476, ~: 472) -FixedPointMathLibTest:testMaxCasted(uint32,uint32,uint256) (runs: 312, μ: 891, ~: 896) -FixedPointMathLibTest:testMaxSigned(int256,int256) (runs: 312, μ: 520, ~: 525) -FixedPointMathLibTest:testMin(uint256,uint256) (runs: 312, μ: 477, ~: 482) -FixedPointMathLibTest:testMinBrutalized(uint256,uint256) (runs: 312, μ: 872, ~: 863) -FixedPointMathLibTest:testMinSigned(int256,int256) (runs: 312, μ: 497, ~: 493) +FixedPointMathLibTest:testMax(uint256,uint256) (runs: 256, μ: 476, ~: 472) +FixedPointMathLibTest:testMaxCasted(uint32,uint32,uint256) (runs: 256, μ: 891, ~: 896) +FixedPointMathLibTest:testMaxSigned(int256,int256) (runs: 256, μ: 519, ~: 515) +FixedPointMathLibTest:testMin(uint256,uint256) (runs: 256, μ: 477, ~: 482) +FixedPointMathLibTest:testMinBrutalized(uint256,uint256) (runs: 256, μ: 873, ~: 883) +FixedPointMathLibTest:testMinSigned(int256,int256) (runs: 256, μ: 498, ~: 503) FixedPointMathLibTest:testMulDiv() (gas: 1890) -FixedPointMathLibTest:testMulDiv(uint256,uint256,uint256) (runs: 312, μ: 1666, ~: 858) +FixedPointMathLibTest:testMulDiv(uint256,uint256,uint256) (runs: 256, μ: 1625, ~: 858) FixedPointMathLibTest:testMulDivEdgeCases() (gas: 784) -FixedPointMathLibTest:testMulDivOverflowReverts(uint256,uint256,uint256) (runs: 312, μ: 20152, ~: 27078) +FixedPointMathLibTest:testMulDivOverflowReverts(uint256,uint256,uint256) (runs: 256, μ: 20555, ~: 27078) FixedPointMathLibTest:testMulDivUp() (gas: 2148) -FixedPointMathLibTest:testMulDivUp(uint256,uint256,uint256) (runs: 312, μ: 1834, ~: 1121) +FixedPointMathLibTest:testMulDivUp(uint256,uint256,uint256) (runs: 256, μ: 1802, ~: 1121) FixedPointMathLibTest:testMulDivUpEdgeCases() (gas: 817) -FixedPointMathLibTest:testMulDivUpOverflowReverts(uint256,uint256,uint256) (runs: 312, μ: 20143, ~: 27044) +FixedPointMathLibTest:testMulDivUpOverflowReverts(uint256,uint256,uint256) (runs: 256, μ: 20543, ~: 27050) FixedPointMathLibTest:testMulDivUpZeroDenominator() (gas: 3234) -FixedPointMathLibTest:testMulDivUpZeroDenominatorReverts(uint256,uint256) (runs: 312, μ: 3357, ~: 3357) +FixedPointMathLibTest:testMulDivUpZeroDenominatorReverts(uint256,uint256) (runs: 256, μ: 3357, ~: 3357) FixedPointMathLibTest:testMulDivZeroDenominatorReverts() (gas: 3256) -FixedPointMathLibTest:testMulDivZeroDenominatorReverts(uint256,uint256) (runs: 312, μ: 3380, ~: 3380) +FixedPointMathLibTest:testMulDivZeroDenominatorReverts(uint256,uint256) (runs: 256, μ: 3380, ~: 3380) FixedPointMathLibTest:testMulWad() (gas: 736) -FixedPointMathLibTest:testMulWad(uint256,uint256) (runs: 312, μ: 717, ~: 855) +FixedPointMathLibTest:testMulWad(uint256,uint256) (runs: 256, μ: 721, ~: 855) FixedPointMathLibTest:testMulWadEdgeCases() (gas: 714) -FixedPointMathLibTest:testMulWadOverflowReverts(uint256,uint256) (runs: 312, μ: 18691, ~: 26336) +FixedPointMathLibTest:testMulWadOverflowReverts(uint256,uint256) (runs: 256, μ: 18865, ~: 26336) FixedPointMathLibTest:testMulWadUp() (gas: 837) -FixedPointMathLibTest:testMulWadUp(uint256,uint256) (runs: 312, μ: 21354, ~: 1065) +FixedPointMathLibTest:testMulWadUp(uint256,uint256) (runs: 256, μ: 21198, ~: 1065) FixedPointMathLibTest:testMulWadUpEdgeCases() (gas: 815) -FixedPointMathLibTest:testMulWadUpOverflowReverts(uint256,uint256) (runs: 312, μ: 18719, ~: 26379) +FixedPointMathLibTest:testMulWadUpOverflowReverts(uint256,uint256) (runs: 256, μ: 18891, ~: 26379) FixedPointMathLibTest:testPackUnpackSci() (gas: 129327) -FixedPointMathLibTest:testPackUnpackSci(uint256) (runs: 312, μ: 30411, ~: 30420) +FixedPointMathLibTest:testPackUnpackSci(uint256) (runs: 256, μ: 30410, ~: 30414) FixedPointMathLibTest:testRPow() (gas: 3320) FixedPointMathLibTest:testRPowOverflowReverts() (gas: 4974) -FixedPointMathLibTest:testRawAdd(int256,int256) (runs: 312, μ: 462, ~: 462) -FixedPointMathLibTest:testRawAdd(uint256,uint256) (runs: 312, μ: 463, ~: 463) -FixedPointMathLibTest:testRawAddMod(uint256,uint256,uint256) (runs: 312, μ: 512, ~: 512) -FixedPointMathLibTest:testRawDiv(uint256,uint256) (runs: 312, μ: 443, ~: 443) -FixedPointMathLibTest:testRawMod(uint256,uint256) (runs: 312, μ: 464, ~: 464) -FixedPointMathLibTest:testRawMul(int256,int256) (runs: 312, μ: 412, ~: 412) -FixedPointMathLibTest:testRawMul(uint256,uint256) (runs: 312, μ: 485, ~: 485) -FixedPointMathLibTest:testRawMulMod(uint256,uint256,uint256) (runs: 312, μ: 579, ~: 579) -FixedPointMathLibTest:testRawSDiv(int256,int256) (runs: 312, μ: 465, ~: 465) -FixedPointMathLibTest:testRawSMod(int256,int256) (runs: 312, μ: 466, ~: 466) -FixedPointMathLibTest:testRawSub(int256,int256) (runs: 312, μ: 441, ~: 441) -FixedPointMathLibTest:testRawSub(uint256,uint256) (runs: 312, μ: 440, ~: 440) +FixedPointMathLibTest:testRawAdd(int256,int256) (runs: 256, μ: 462, ~: 462) +FixedPointMathLibTest:testRawAdd(uint256,uint256) (runs: 256, μ: 463, ~: 463) +FixedPointMathLibTest:testRawAddMod(uint256,uint256,uint256) (runs: 256, μ: 512, ~: 512) +FixedPointMathLibTest:testRawDiv(uint256,uint256) (runs: 256, μ: 443, ~: 443) +FixedPointMathLibTest:testRawMod(uint256,uint256) (runs: 256, μ: 464, ~: 464) +FixedPointMathLibTest:testRawMul(int256,int256) (runs: 256, μ: 412, ~: 412) +FixedPointMathLibTest:testRawMul(uint256,uint256) (runs: 256, μ: 485, ~: 485) +FixedPointMathLibTest:testRawMulMod(uint256,uint256,uint256) (runs: 256, μ: 579, ~: 579) +FixedPointMathLibTest:testRawSDiv(int256,int256) (runs: 256, μ: 465, ~: 465) +FixedPointMathLibTest:testRawSMod(int256,int256) (runs: 256, μ: 466, ~: 466) +FixedPointMathLibTest:testRawSub(int256,int256) (runs: 256, μ: 441, ~: 441) +FixedPointMathLibTest:testRawSub(uint256,uint256) (runs: 256, μ: 440, ~: 440) FixedPointMathLibTest:testSDivWad() (gas: 916) -FixedPointMathLibTest:testSDivWad(int256,int256) (runs: 312, μ: 6194, ~: 971) +FixedPointMathLibTest:testSDivWad(int256,int256) (runs: 256, μ: 6422, ~: 971) FixedPointMathLibTest:testSDivWadEdgeCases() (gas: 422) -FixedPointMathLibTest:testSDivWadOverflowReverts(int256,int256) (runs: 312, μ: 22657, ~: 26511) -FixedPointMathLibTest:testSDivWadZeroDenominatorReverts(int256) (runs: 312, μ: 3330, ~: 3330) +FixedPointMathLibTest:testSDivWadOverflowReverts(int256,int256) (runs: 256, μ: 22559, ~: 26511) +FixedPointMathLibTest:testSDivWadZeroDenominatorReverts(int256) (runs: 256, μ: 3330, ~: 3330) FixedPointMathLibTest:testSMulWad() (gas: 1032) -FixedPointMathLibTest:testSMulWad(int256,int256) (runs: 312, μ: 883, ~: 1047) +FixedPointMathLibTest:testSMulWad(int256,int256) (runs: 256, μ: 892, ~: 1047) FixedPointMathLibTest:testSMulWadEdgeCases() (gas: 1309) -FixedPointMathLibTest:testSMulWadOverflowRevertsOnCondition1(int256,int256) (runs: 312, μ: 19923, ~: 26556) -FixedPointMathLibTest:testSMulWadOverflowRevertsOnCondition2(int256) (runs: 312, μ: 19382, ~: 25957) -FixedPointMathLibTest:testSMulWadOverflowTrickDifferential(int256,int256) (runs: 312, μ: 621, ~: 632) +FixedPointMathLibTest:testSMulWadOverflowRevertsOnCondition1(int256,int256) (runs: 256, μ: 20274, ~: 26556) +FixedPointMathLibTest:testSMulWadOverflowRevertsOnCondition2(int256) (runs: 256, μ: 19259, ~: 25788) +FixedPointMathLibTest:testSMulWadOverflowTrickDifferential(int256,int256) (runs: 256, μ: 622, ~: 632) FixedPointMathLibTest:testSci() (gas: 1838614) -FixedPointMathLibTest:testSci(uint256) (runs: 312, μ: 33321, ~: 35112) -FixedPointMathLibTest:testSci2(uint256) (runs: 312, μ: 956, ~: 955) +FixedPointMathLibTest:testSci(uint256) (runs: 256, μ: 33395, ~: 36169) +FixedPointMathLibTest:testSci2(uint256) (runs: 256, μ: 957, ~: 955) FixedPointMathLibTest:testSqrt() (gas: 43798) -FixedPointMathLibTest:testSqrt(uint256) (runs: 312, μ: 1047, ~: 1054) -FixedPointMathLibTest:testSqrtBack(uint256) (runs: 312, μ: 10010, ~: 386) -FixedPointMathLibTest:testSqrtHashed(uint256) (runs: 312, μ: 54682, ~: 54659) +FixedPointMathLibTest:testSqrt(uint256) (runs: 256, μ: 1046, ~: 1054) +FixedPointMathLibTest:testSqrtBack(uint256) (runs: 256, μ: 10357, ~: 386) +FixedPointMathLibTest:testSqrtHashed(uint256) (runs: 256, μ: 54698, ~: 54872) FixedPointMathLibTest:testSqrtHashedSingle() (gas: 54587) FixedPointMathLibTest:testSqrtWad() (gas: 7937) -FixedPointMathLibTest:testSqrtWad(uint256) (runs: 312, μ: 1655, ~: 1580) -FixedPointMathLibTest:testSqrtWadConverged(uint256) (runs: 312, μ: 1962, ~: 1992) -FixedPointMathLibTest:testSqrtWadMonotonicallyIncreasing(uint256,uint256) (runs: 312, μ: 2240, ~: 1825) -FixedPointMathLibTest:testTernary(bool,uint256,uint256) (runs: 312, μ: 518, ~: 514) -FixedPointMathLibTest:testZeroFloorSub(uint256,uint256) (runs: 312, μ: 571, ~: 601) -FixedPointMathLibTest:testZeroFloorSubCasted(uint32,uint32,uint256) (runs: 312, μ: 880, ~: 846) +FixedPointMathLibTest:testSqrtWad(uint256) (runs: 256, μ: 1659, ~: 1580) +FixedPointMathLibTest:testSqrtWadConverged(uint256) (runs: 256, μ: 1962, ~: 1992) +FixedPointMathLibTest:testSqrtWadMonotonicallyIncreasing(uint256,uint256) (runs: 256, μ: 2192, ~: 1825) +FixedPointMathLibTest:testTernary(bool,uint256,uint256) (runs: 256, μ: 518, ~: 514) +FixedPointMathLibTest:testZeroFloorSub(uint256,uint256) (runs: 256, μ: 572, ~: 601) +FixedPointMathLibTest:testZeroFloorSubCasted(uint32,uint32,uint256) (runs: 256, μ: 881, ~: 846) FixedPointMathLibTest:test__codesize() (gas: 45155) GasBurnerLibTest:testBurn() (gas: 105035) -GasBurnerLibTest:testBurn(uint256) (runs: 312, μ: 43676, ~: 33930) +GasBurnerLibTest:testBurn(uint256) (runs: 256, μ: 43142, ~: 32706) GasBurnerLibTest:testBurnPure() (gas: 1700850) -GasBurnerLibTest:testBurnPure(uint256) (runs: 312, μ: 25016, ~: 24585) +GasBurnerLibTest:testBurnPure(uint256) (runs: 256, μ: 25005, ~: 24449) GasBurnerLibTest:testBurnPureTiming() (gas: 300223) GasBurnerLibTest:testBurnTiming() (gas: 293139) GasBurnerLibTest:testBurnView() (gas: 66700) -GasBurnerLibTest:testBurnView(uint256) (runs: 312, μ: 27185, ~: 26318) +GasBurnerLibTest:testBurnView(uint256) (runs: 256, μ: 27225, ~: 26318) GasBurnerLibTest:testBurnViewTiming() (gas: 294223) GasBurnerLibTest:test__codesize() (gas: 2389) InitializableTest:testDisableInitializers() (gas: 42010) InitializableTest:testInitializableConstructor() (gas: 691882) InitializableTest:testInitialize() (gas: 54688) -InitializableTest:testInitializeInititalizerTrick(bool,uint64,uint16) (runs: 312, μ: 790, ~: 791) -InitializableTest:testInitializeReinititalize(uint256) (runs: 312, μ: 95945, ~: 94564) -InitializableTest:testInitializeReinititalizerTrick(bool,uint64,uint64) (runs: 312, μ: 674, ~: 687) +InitializableTest:testInitializeInititalizerTrick(bool,uint64,uint16) (runs: 256, μ: 790, ~: 791) +InitializableTest:testInitializeReinititalize(uint256) (runs: 256, μ: 96174, ~: 94588) +InitializableTest:testInitializeReinititalizerTrick(bool,uint64,uint64) (runs: 256, μ: 675, ~: 687) InitializableTest:testOnlyInitializing() (gas: 10420) InitializableTest:test__codesize() (gas: 10480) -JSONParserLibTest:testDecodeEncodedStringDoesNotRevert(string) (runs: 312, μ: 57455, ~: 56403) +JSONParserLibTest:testDecodeEncodedStringDoesNotRevert(string) (runs: 256, μ: 57221, ~: 56403) JSONParserLibTest:testDecodeInvalidStringReverts() (gas: 172924) JSONParserLibTest:testDecodeString() (gas: 193269) JSONParserLibTest:testEmptyItem() (gas: 2913) @@ -582,9 +586,9 @@ JSONParserLibTest:testParseEmptyArrays() (gas: 499245) JSONParserLibTest:testParseEmptyObjects() (gas: 500206) JSONParserLibTest:testParseGas() (gas: 151909) JSONParserLibTest:testParseInt() (gas: 204229) -JSONParserLibTest:testParseInt(int256) (runs: 312, μ: 18734, ~: 17408) -JSONParserLibTest:testParseIntReverts(uint256) (runs: 312, μ: 55938, ~: 55929) -JSONParserLibTest:testParseIntTrick(uint256,bool) (runs: 312, μ: 528, ~: 532) +JSONParserLibTest:testParseInt(int256) (runs: 256, μ: 18767, ~: 17468) +JSONParserLibTest:testParseIntReverts(uint256) (runs: 256, μ: 55941, ~: 55929) +JSONParserLibTest:testParseIntTrick(uint256,bool) (runs: 256, μ: 528, ~: 532) JSONParserLibTest:testParseInvalidIntReverts() (gas: 210681) JSONParserLibTest:testParseInvalidNumberReverts() (gas: 4068682) JSONParserLibTest:testParseInvalidReverts() (gas: 8589165) @@ -600,156 +604,156 @@ JSONParserLibTest:testParseSimpleUintArray() (gas: 1175003) JSONParserLibTest:testParseSpecials() (gas: 260199) JSONParserLibTest:testParseString() (gas: 1237483) JSONParserLibTest:testParseUint() (gas: 95659) -JSONParserLibTest:testParseUint(uint256) (runs: 312, μ: 35350, ~: 31924) +JSONParserLibTest:testParseUint(uint256) (runs: 256, μ: 35463, ~: 31644) JSONParserLibTest:testParseUintFromHex() (gas: 1382724) -JSONParserLibTest:testParseValidObjectDoesNotRevert(string,string) (runs: 312, μ: 50101, ~: 48844) +JSONParserLibTest:testParseValidObjectDoesNotRevert(string,string) (runs: 256, μ: 50040, ~: 48781) JSONParserLibTest:test__codesize() (gas: 38087) LibBitTest:testAnd() (gas: 192789) -LibBitTest:testAnd(bool,bool) (runs: 312, μ: 632, ~: 634) -LibBitTest:testAutoClean(uint256,uint256) (runs: 312, μ: 468, ~: 468) -LibBitTest:testBoolToUint(bool) (runs: 312, μ: 485, ~: 485) +LibBitTest:testAnd(bool,bool) (runs: 256, μ: 632, ~: 634) +LibBitTest:testAutoClean(uint256,uint256) (runs: 256, μ: 468, ~: 468) +LibBitTest:testBoolToUint(bool) (runs: 256, μ: 485, ~: 485) LibBitTest:testCLZ() (gas: 297260) LibBitTest:testFFS() (gas: 152877) LibBitTest:testFLS() (gas: 245237) LibBitTest:testIsPo2() (gas: 57663) -LibBitTest:testIsPo2(uint256) (runs: 312, μ: 3531, ~: 2130) -LibBitTest:testIsPo2(uint8,uint8) (runs: 312, μ: 623, ~: 624) +LibBitTest:testIsPo2(uint256) (runs: 256, μ: 3562, ~: 1810) +LibBitTest:testIsPo2(uint8,uint8) (runs: 256, μ: 623, ~: 624) LibBitTest:testOr() (gas: 194336) -LibBitTest:testOr(bool,bool) (runs: 312, μ: 649, ~: 648) +LibBitTest:testOr(bool,bool) (runs: 256, μ: 649, ~: 648) LibBitTest:testPassInBool() (gas: 830) LibBitTest:testPopCount() (gas: 63738) -LibBitTest:testPopCount(uint256) (runs: 312, μ: 3673, ~: 2272) +LibBitTest:testPopCount(uint256) (runs: 256, μ: 3704, ~: 1952) LibBitTest:testReturnsBool() (gas: 779) LibBitTest:testReverseBits() (gas: 131521) -LibBitTest:testReverseBitsDifferential(uint256) (runs: 312, μ: 18724, ~: 18724) +LibBitTest:testReverseBitsDifferential(uint256) (runs: 256, μ: 18724, ~: 18724) LibBitTest:testReverseBytes() (gas: 12492) -LibBitTest:testReverseBytesDifferential(uint256) (runs: 312, μ: 2675, ~: 2675) +LibBitTest:testReverseBytesDifferential(uint256) (runs: 256, μ: 2675, ~: 2675) LibBitTest:test__codesize() (gas: 5842) LibBitmapTest:testBitmapClaimWithGetSet() (gas: 27156) LibBitmapTest:testBitmapClaimWithToggle() (gas: 17480) LibBitmapTest:testBitmapFindFirstUnset() (gas: 54669) -LibBitmapTest:testBitmapFindFirstUnset(uint256,uint256,bytes32) (runs: 312, μ: 140999, ~: 140204) +LibBitmapTest:testBitmapFindFirstUnset(uint256,uint256,bytes32) (runs: 256, μ: 140882, ~: 140160) LibBitmapTest:testBitmapFindLastSet() (gas: 1300541) -LibBitmapTest:testBitmapFindLastSet(uint256,bytes32) (runs: 312, μ: 75872, ~: 76217) +LibBitmapTest:testBitmapFindLastSet(uint256,bytes32) (runs: 256, μ: 75823, ~: 76235) LibBitmapTest:testBitmapFindLastSet2() (gas: 23882) LibBitmapTest:testBitmapGet() (gas: 2549) -LibBitmapTest:testBitmapGet(uint256) (runs: 312, μ: 2599, ~: 2599) +LibBitmapTest:testBitmapGet(uint256) (runs: 256, μ: 2599, ~: 2599) LibBitmapTest:testBitmapPopCount() (gas: 751877) -LibBitmapTest:testBitmapPopCount(uint256,uint256,uint256) (runs: 312, μ: 210417, ~: 173650) +LibBitmapTest:testBitmapPopCount(uint256,uint256,uint256) (runs: 256, μ: 208813, ~: 174238) LibBitmapTest:testBitmapPopCountAcrossMultipleBuckets() (gas: 73634) LibBitmapTest:testBitmapPopCountWithinSingleBucket() (gas: 34032) LibBitmapTest:testBitmapSet() (gas: 22771) -LibBitmapTest:testBitmapSet(uint256) (runs: 312, μ: 22843, ~: 22843) -LibBitmapTest:testBitmapSetAndGet(uint256) (runs: 312, μ: 22864, ~: 22864) +LibBitmapTest:testBitmapSet(uint256) (runs: 256, μ: 22843, ~: 22843) +LibBitmapTest:testBitmapSetAndGet(uint256) (runs: 256, μ: 22864, ~: 22864) LibBitmapTest:testBitmapSetBatch() (gas: 2918603) LibBitmapTest:testBitmapSetBatchAcrossMultipleBuckets() (gas: 438393) LibBitmapTest:testBitmapSetBatchWithinSingleBucket() (gas: 389011) LibBitmapTest:testBitmapSetTo() (gas: 14652) -LibBitmapTest:testBitmapSetTo(uint256,bool,uint256) (runs: 312, μ: 12878, ~: 3113) -LibBitmapTest:testBitmapSetTo(uint256,uint256) (runs: 312, μ: 46810, ~: 51383) +LibBitmapTest:testBitmapSetTo(uint256,bool,uint256) (runs: 256, μ: 12914, ~: 3113) +LibBitmapTest:testBitmapSetTo(uint256,uint256) (runs: 256, μ: 47066, ~: 51391) LibBitmapTest:testBitmapToggle() (gas: 31525) -LibBitmapTest:testBitmapToggle(uint256,bool) (runs: 312, μ: 19298, ~: 23572) +LibBitmapTest:testBitmapToggle(uint256,bool) (runs: 256, μ: 19314, ~: 23572) LibBitmapTest:testBitmapUnset() (gas: 22794) -LibBitmapTest:testBitmapUnset(uint256) (runs: 312, μ: 14510, ~: 14525) +LibBitmapTest:testBitmapUnset(uint256) (runs: 256, μ: 14511, ~: 14528) LibBitmapTest:testBitmapUnsetBatch() (gas: 2981123) LibBitmapTest:testBitmapUnsetBatchAcrossMultipleBuckets() (gas: 438470) LibBitmapTest:testBitmapUnsetBatchWithinSingleBucket() (gas: 445869) LibBitmapTest:test__codesize() (gas: 8720) LibCWIATest:testCloneDeteministicWithImmutableArgs() (gas: 191687) -LibCWIATest:testCloneDeteministicWithImmutableArgs(address,uint256,uint256[],bytes,uint64,uint8,uint256) (runs: 312, μ: 1094816, ~: 1045340) +LibCWIATest:testCloneDeteministicWithImmutableArgs(address,uint256,uint256[],bytes,uint64,uint8,uint256) (runs: 256, μ: 1107429, ~: 1060073) LibCWIATest:testCloneWithImmutableArgs() (gas: 120548) -LibCWIATest:testCloneWithImmutableArgs(uint256,address,uint256,uint256[],uint64,uint8) (runs: 312, μ: 995964, ~: 978832) +LibCWIATest:testCloneWithImmutableArgs(uint256,address,uint256,uint256[],uint64,uint8) (runs: 256, μ: 986273, ~: 971819) LibCWIATest:testCloneWithImmutableArgsRevertsIfDataTooBig() (gas: 97305787) LibCWIATest:test__codesize() (gas: 12272) LibCloneTest:testClone() (gas: 97436) -LibCloneTest:testClone(uint256) (runs: 312, μ: 97463, ~: 97463) +LibCloneTest:testClone(uint256) (runs: 256, μ: 97463, ~: 97463) LibCloneTest:testCloneDeterministic() (gas: 98317) -LibCloneTest:testCloneDeterministic(bytes32) (runs: 312, μ: 3829176, ~: 98591) +LibCloneTest:testCloneDeterministic(bytes32) (runs: 256, μ: 4268258, ~: 98594) LibCloneTest:testCloneDeterministicWithImmutableArgs() (gas: 125123) -LibCloneTest:testCloneDeterministicWithImmutableArgs(bytes32) (runs: 312, μ: 6395632, ~: 117728) +LibCloneTest:testCloneDeterministicWithImmutableArgs(bytes32) (runs: 256, μ: 6535830, ~: 117551) LibCloneTest:testCloneWithImmutableArgs() (gas: 125589) -LibCloneTest:testCloneWithImmutableArgs(uint256) (runs: 312, μ: 2643102, ~: 117132) +LibCloneTest:testCloneWithImmutableArgs(uint256) (runs: 256, μ: 2724710, ~: 116732) LibCloneTest:testCloneWithImmutableArgsSlicing() (gas: 57947) -LibCloneTest:testCreateDeterministicERC1967(bytes32) (runs: 312, μ: 177949, ~: 128025) -LibCloneTest:testCreateDeterministicERC1967BeaconProxy(bytes32) (runs: 312, μ: 372953, ~: 360493) -LibCloneTest:testCreateDeterministicERC1967I(bytes32) (runs: 312, μ: 178479, ~: 132431) -LibCloneTest:testCreateDeterministicERC1967WithImmutableArgs(bytes32) (runs: 312, μ: 379218, ~: 137487) +LibCloneTest:testCreateDeterministicERC1967(bytes32) (runs: 256, μ: 179048, ~: 128025) +LibCloneTest:testCreateDeterministicERC1967BeaconProxy(bytes32) (runs: 256, μ: 372958, ~: 360493) +LibCloneTest:testCreateDeterministicERC1967I(bytes32) (runs: 256, μ: 178774, ~: 132426) +LibCloneTest:testCreateDeterministicERC1967WithImmutableArgs(bytes32) (runs: 256, μ: 423337, ~: 137296) LibCloneTest:testDeployDeterministicERC1967() (gas: 133441) -LibCloneTest:testDeployDeterministicERC1967(bytes32) (runs: 312, μ: 3379376, ~: 133342) -LibCloneTest:testDeployDeterministicERC1967BeaconProxy(bytes32) (runs: 312, μ: 4627262, ~: 357493) +LibCloneTest:testDeployDeterministicERC1967(bytes32) (runs: 256, μ: 3309304, ~: 133344) +LibCloneTest:testDeployDeterministicERC1967BeaconProxy(bytes32) (runs: 256, μ: 4449645, ~: 357493) LibCloneTest:testDeployDeterministicERC1967I() (gas: 129465) -LibCloneTest:testDeployDeterministicERC1967I(bytes32) (runs: 312, μ: 2019141, ~: 129383) +LibCloneTest:testDeployDeterministicERC1967I(bytes32) (runs: 256, μ: 2412595, ~: 129383) LibCloneTest:testDeployDeterministicERC1967WithImmutableArgs() (gas: 166875) -LibCloneTest:testDeployDeterministicERC1967WithImmutableArgs(bytes32) (runs: 312, μ: 5238464, ~: 144621) +LibCloneTest:testDeployDeterministicERC1967WithImmutableArgs(bytes32) (runs: 256, μ: 5162324, ~: 145457) LibCloneTest:testDeployERC1967() (gas: 130814) -LibCloneTest:testDeployERC1967(bytes32) (runs: 312, μ: 237161, ~: 130882) -LibCloneTest:testDeployERC1967BeaconProxy(bytes32) (runs: 312, μ: 351424, ~: 294788) +LibCloneTest:testDeployERC1967(bytes32) (runs: 256, μ: 245817, ~: 130917) +LibCloneTest:testDeployERC1967BeaconProxy(bytes32) (runs: 256, μ: 345640, ~: 294788) LibCloneTest:testDeployERC1967BeaconProxyWithImmutableArgs() (gas: 293333) -LibCloneTest:testDeployERC1967BeaconProxyWithImmutableArgs(address,bytes32) (runs: 312, μ: 28736809, ~: 277471) +LibCloneTest:testDeployERC1967BeaconProxyWithImmutableArgs(address,bytes32) (runs: 256, μ: 28506681, ~: 277471) LibCloneTest:testDeployERC1967I() (gas: 128886) -LibCloneTest:testDeployERC1967I(bytes32) (runs: 312, μ: 129002, ~: 129002) +LibCloneTest:testDeployERC1967I(bytes32) (runs: 256, μ: 129002, ~: 129002) LibCloneTest:testDeployERC1967WithImmutableArgs() (gas: 141650) -LibCloneTest:testDeployERC1967WithImmutableArgs(bytes32) (runs: 312, μ: 6046365, ~: 142521) -LibCloneTest:testERC1967BeaconProxyGasBehavior(uint256,uint256) (runs: 312, μ: 372561, ~: 346623) -LibCloneTest:testERC1967ConstantBootstrap(address,bytes32) (runs: 312, μ: 195786, ~: 169477) -LibCloneTest:testInitCode(address) (runs: 312, μ: 237016, ~: 35312) +LibCloneTest:testDeployERC1967WithImmutableArgs(bytes32) (runs: 256, μ: 5710799, ~: 142319) +LibCloneTest:testERC1967BeaconProxyGasBehavior(uint256,uint256) (runs: 256, μ: 376167, ~: 347220) +LibCloneTest:testERC1967ConstantBootstrap(address,bytes32) (runs: 256, μ: 199467, ~: 169474) +LibCloneTest:testInitCode(address) (runs: 256, μ: 217404, ~: 35288) LibCloneTest:testInitialDeposit() (gas: 585537) -LibCloneTest:testSlicingRevertsOnZeroCodeAddress(address) (runs: 312, μ: 105502, ~: 30422) -LibCloneTest:testStartsWith(uint256) (runs: 312, μ: 29398, ~: 29468) +LibCloneTest:testSlicingRevertsOnZeroCodeAddress(address) (runs: 256, μ: 91886, ~: 30411) +LibCloneTest:testStartsWith(uint256) (runs: 256, μ: 29404, ~: 29468) LibCloneTest:test__codesize() (gas: 31023) -LibERC6551Test:testComputeAccountAddress(address,bytes32,uint256,address,uint256) (runs: 312, μ: 296920, ~: 28642) -LibERC6551Test:testContext(address,bytes32,uint256,address,uint256) (runs: 312, μ: 101745, ~: 101643) -LibERC6551Test:testInitCodeHash(address,bytes32,uint256,address,uint256) (runs: 312, μ: 237982, ~: 23818) -LibERC6551Test:testIsERC6551Account(address,bytes32,uint256,address,uint256) (runs: 312, μ: 111164, ~: 111183) +LibERC6551Test:testComputeAccountAddress(address,bytes32,uint256,address,uint256) (runs: 256, μ: 291234, ~: 28642) +LibERC6551Test:testContext(address,bytes32,uint256,address,uint256) (runs: 256, μ: 101743, ~: 101643) +LibERC6551Test:testInitCodeHash(address,bytes32,uint256,address,uint256) (runs: 256, μ: 199627, ~: 23818) +LibERC6551Test:testIsERC6551Account(address,bytes32,uint256,address,uint256) (runs: 256, μ: 111163, ~: 111183) LibERC6551Test:test__codesize() (gas: 6081) -LibMapTest:testFoundStatementDifferential(uint256,uint256,uint256) (runs: 312, μ: 499, ~: 499) +LibMapTest:testFoundStatementDifferential(uint256,uint256,uint256) (runs: 256, μ: 499, ~: 499) LibMapTest:testGeneralMapFunctionsGas() (gas: 3304775) -LibMapTest:testGeneralMapFunctionsWithSmallBitWidths(uint256) (runs: 312, μ: 84821, ~: 85698) +LibMapTest:testGeneralMapFunctionsWithSmallBitWidths(uint256) (runs: 256, μ: 84351, ~: 85701) LibMapTest:testGeneralMapFunctionsWithZeroBitWidth() (gas: 12260) -LibMapTest:testGeneralMapSearchSorted(uint256) (runs: 312, μ: 208689, ~: 152132) +LibMapTest:testGeneralMapSearchSorted(uint256) (runs: 256, μ: 208964, ~: 152132) LibMapTest:testMapGetFromBigArray() (gas: 3330) LibMapTest:testMapGetUint8() (gas: 3313) LibMapTest:testMapSetUint8() (gas: 23276) LibMapTest:testMapSetUint8FromBigArray() (gas: 23263) -LibMapTest:testUint128MapSearchSorted(uint256) (runs: 312, μ: 196108, ~: 130815) +LibMapTest:testUint128MapSearchSorted(uint256) (runs: 256, μ: 190324, ~: 131522) LibMapTest:testUint128MapSetAndGet() (gas: 1607264) -LibMapTest:testUint128MapSetAndGet(uint256) (runs: 312, μ: 180217, ~: 170756) -LibMapTest:testUint128MapSetAndGet2(uint256) (runs: 312, μ: 68973, ~: 69405) -LibMapTest:testUint16MapSearchSorted(uint256) (runs: 312, μ: 96227, ~: 86334) +LibMapTest:testUint128MapSetAndGet(uint256) (runs: 256, μ: 180543, ~: 171280) +LibMapTest:testUint128MapSetAndGet2(uint256) (runs: 256, μ: 69113, ~: 69481) +LibMapTest:testUint16MapSearchSorted(uint256) (runs: 256, μ: 97167, ~: 86486) LibMapTest:testUint16MapSetAndGet() (gas: 958101) -LibMapTest:testUint16MapSetAndGet(uint256) (runs: 312, μ: 81509, ~: 81709) -LibMapTest:testUint16MapSetAndGet2(uint256) (runs: 312, μ: 68481, ~: 69242) -LibMapTest:testUint32MapSearchSorted(uint256) (runs: 312, μ: 106919, ~: 87361) +LibMapTest:testUint16MapSetAndGet(uint256) (runs: 256, μ: 81492, ~: 81717) +LibMapTest:testUint16MapSetAndGet2(uint256) (runs: 256, μ: 68462, ~: 69243) +LibMapTest:testUint32MapSearchSorted(uint256) (runs: 256, μ: 106382, ~: 86976) LibMapTest:testUint32MapSetAndGet() (gas: 1067796) -LibMapTest:testUint32MapSetAndGet(uint256) (runs: 312, μ: 114280, ~: 124784) -LibMapTest:testUint32MapSetAndGet2(uint256) (runs: 312, μ: 68691, ~: 69197) -LibMapTest:testUint32Maps(uint256) (runs: 312, μ: 68455, ~: 72250) -LibMapTest:testUint40MapSearchSorted(uint256) (runs: 312, μ: 125441, ~: 108161) +LibMapTest:testUint32MapSetAndGet(uint256) (runs: 256, μ: 114300, ~: 124693) +LibMapTest:testUint32MapSetAndGet2(uint256) (runs: 256, μ: 68564, ~: 69197) +LibMapTest:testUint32Maps(uint256) (runs: 256, μ: 68797, ~: 72253) +LibMapTest:testUint40MapSearchSorted(uint256) (runs: 256, μ: 123266, ~: 108340) LibMapTest:testUint40MapSetAndGet() (gas: 1127509) -LibMapTest:testUint40MapSetAndGet(uint256) (runs: 312, μ: 136763, ~: 146770) -LibMapTest:testUint40MapSetAndGet2(uint256) (runs: 312, μ: 68523, ~: 69272) -LibMapTest:testUint64MapSearchSorted(uint256) (runs: 312, μ: 134299, ~: 108774) +LibMapTest:testUint40MapSetAndGet(uint256) (runs: 256, μ: 136959, ~: 146770) +LibMapTest:testUint40MapSetAndGet2(uint256) (runs: 256, μ: 68419, ~: 69272) +LibMapTest:testUint64MapSearchSorted(uint256) (runs: 256, μ: 131401, ~: 108492) LibMapTest:testUint64MapSetAndGet() (gas: 1220444) -LibMapTest:testUint64MapSetAndGet(uint256) (runs: 312, μ: 149213, ~: 147401) -LibMapTest:testUint64MapSetAndGet2(uint256) (runs: 312, μ: 68446, ~: 69261) -LibMapTest:testUint8MapSearchSorted(uint256) (runs: 312, μ: 99676, ~: 86239) +LibMapTest:testUint64MapSetAndGet(uint256) (runs: 256, μ: 148586, ~: 147374) +LibMapTest:testUint64MapSetAndGet2(uint256) (runs: 256, μ: 68487, ~: 69408) +LibMapTest:testUint8MapSearchSorted(uint256) (runs: 256, μ: 98678, ~: 86167) LibMapTest:testUint8MapSetAndGet() (gas: 884299) -LibMapTest:testUint8MapSetAndGet(uint256) (runs: 312, μ: 59500, ~: 59566) -LibMapTest:testUint8MapSetAndGet2(uint256) (runs: 312, μ: 68226, ~: 69180) +LibMapTest:testUint8MapSetAndGet(uint256) (runs: 256, μ: 59489, ~: 59566) +LibMapTest:testUint8MapSetAndGet2(uint256) (runs: 256, μ: 68316, ~: 69180) LibMapTest:test__codesize() (gas: 12065) LibPRNGTest:testExponentialWad() (gas: 4394348) LibPRNGTest:testLCGGas() (gas: 20803) LibPRNGTest:testLazyShufflerGet() (gas: 298845) -LibPRNGTest:testLazyShufflerGetOutOfBoundsReverts(uint256,uint256) (runs: 312, μ: 26626, ~: 26667) +LibPRNGTest:testLazyShufflerGetOutOfBoundsReverts(uint256,uint256) (runs: 256, μ: 26616, ~: 26667) LibPRNGTest:testLazyShufflerNoStorageCollisions() (gas: 266054) -LibPRNGTest:testLazyShufflerProducesShuffledRange(uint256) (runs: 312, μ: 178074, ~: 91111) +LibPRNGTest:testLazyShufflerProducesShuffledRange(uint256) (runs: 256, μ: 178370, ~: 91178) LibPRNGTest:testLazyShufflerProducesShuffledRange2() (gas: 9059432) -LibPRNGTest:testLazyShufflerProducesShuffledRangeWithGrow(uint256,uint256) (runs: 312, μ: 188065, ~: 176203) +LibPRNGTest:testLazyShufflerProducesShuffledRangeWithGrow(uint256,uint256) (runs: 256, μ: 190063, ~: 177374) LibPRNGTest:testLazyShufflerRestart() (gas: 276254) LibPRNGTest:testLazyShufflerRevertsOnDoubleInit() (gas: 26824) -LibPRNGTest:testLazyShufflerRevertsOnFinshedNext(uint256) (runs: 312, μ: 64898, ~: 74386) -LibPRNGTest:testLazyShufflerRevertsOnGrowWithInvalidLength(uint256,uint256) (runs: 312, μ: 24690, ~: 24708) -LibPRNGTest:testLazyShufflerRevertsOnInitWithInvalidLength(uint256) (runs: 312, μ: 22905, ~: 23673) +LibPRNGTest:testLazyShufflerRevertsOnFinshedNext(uint256) (runs: 256, μ: 65460, ~: 74386) +LibPRNGTest:testLazyShufflerRevertsOnGrowWithInvalidLength(uint256,uint256) (runs: 256, μ: 24684, ~: 24600) +LibPRNGTest:testLazyShufflerRevertsOnInitWithInvalidLength(uint256) (runs: 256, μ: 23054, ~: 23497) LibPRNGTest:testLazyShufflerRevertsOnZeroLengthNext() (gas: 27623) LibPRNGTest:testPRNGGas() (gas: 25667) LibPRNGTest:testPRNGNext() (gas: 16162) @@ -763,260 +767,260 @@ LibPRNGTest:testPRNGShuffleGas() (gas: 1610927) LibPRNGTest:testPRNGUniform() (gas: 559430) LibPRNGTest:testStandardNormalWad() (gas: 4425913) LibPRNGTest:test__codesize() (gas: 14376) -LibRLPTest:testComputeAddressDifferential(address,uint256) (runs: 312, μ: 4263, ~: 4099) +LibRLPTest:testComputeAddressDifferential(address,uint256) (runs: 256, μ: 4225, ~: 4015) LibRLPTest:testComputeAddressForLargeNonces() (gas: 1760) LibRLPTest:testComputeAddressForSmallNonces() (gas: 1007) LibRLPTest:testComputeAddressOriginalForLargeNonces() (gas: 3766) LibRLPTest:testComputeAddressOriginalForSmallNonces() (gas: 2185) -LibRLPTest:testRLPEncodeAddressDifferential(address) (runs: 312, μ: 241142, ~: 26102) -LibRLPTest:testRLPEncodeAddressViaList(address,address) (runs: 312, μ: 165198, ~: 27693) -LibRLPTest:testRLPEncodeBool(bool) (runs: 312, μ: 27562, ~: 27700) +LibRLPTest:testRLPEncodeAddressDifferential(address) (runs: 256, μ: 224835, ~: 26102) +LibRLPTest:testRLPEncodeAddressViaList(address,address) (runs: 256, μ: 150955, ~: 27703) +LibRLPTest:testRLPEncodeBool(bool) (runs: 256, μ: 27566, ~: 27700) LibRLPTest:testRLPEncodeBytes() (gas: 382181) LibRLPTest:testRLPEncodeBytes2() (gas: 156293) -LibRLPTest:testRLPEncodeBytesDifferential(bytes32) (runs: 312, μ: 280814, ~: 29085) +LibRLPTest:testRLPEncodeBytesDifferential(bytes32) (runs: 256, μ: 274139, ~: 29085) LibRLPTest:testRLPEncodeList() (gas: 723349) LibRLPTest:testRLPEncodeList2() (gas: 798535) -LibRLPTest:testRLPEncodeListDifferential(bytes,uint256) (runs: 312, μ: 391923, ~: 39179) +LibRLPTest:testRLPEncodeListDifferential(bytes,uint256) (runs: 256, μ: 392419, ~: 641754) LibRLPTest:testRLPEncodeUint() (gas: 1179038) -LibRLPTest:testRLPEncodeUint(uint256) (runs: 312, μ: 90311, ~: 24909) -LibRLPTest:testRLPEncodeUintDifferential(uint256) (runs: 312, μ: 223418, ~: 27078) -LibRLPTest:testRLPMemory(bytes32) (runs: 312, μ: 325708, ~: 33605) +LibRLPTest:testRLPEncodeUint(uint256) (runs: 256, μ: 81824, ~: 24873) +LibRLPTest:testRLPEncodeUintDifferential(uint256) (runs: 256, μ: 233091, ~: 27105) +LibRLPTest:testRLPMemory(bytes32) (runs: 256, μ: 345795, ~: 33550) LibRLPTest:testRLPPUint256() (gas: 364901) -LibRLPTest:testSmallLog256Equivalence(uint256) (runs: 312, μ: 23675, ~: 23700) +LibRLPTest:testSmallLog256Equivalence(uint256) (runs: 256, μ: 23668, ~: 23698) LibRLPTest:test__codesize() (gas: 15464) -LibSortTest:testCopy(uint256) (runs: 312, μ: 55779, ~: 25744) -LibSortTest:testInsertionSortAddressesDifferential(uint256) (runs: 312, μ: 45239, ~: 24945) +LibSortTest:testCopy(uint256) (runs: 256, μ: 59942, ~: 25737) +LibSortTest:testInsertionSortAddressesDifferential(uint256) (runs: 256, μ: 32114, ~: 24856) LibSortTest:testInsertionSortInts() (gas: 80727) LibSortTest:testInsertionSortPsuedorandom() (gas: 63725) -LibSortTest:testInsertionSortPsuedorandom(uint256) (runs: 312, μ: 62418, ~: 62480) -LibSortTest:testIsSortedAddressesDifferential(uint256) (runs: 312, μ: 37750, ~: 28942) -LibSortTest:testIsSortedAndUniquifiedAddressesDifferential(uint256) (runs: 312, μ: 36269, ~: 28889) -LibSortTest:testIsSortedAndUniquifiedDifferential(uint256) (runs: 312, μ: 32606, ~: 28383) -LibSortTest:testIsSortedAndUniquifiedIntsDifferential(uint256) (runs: 312, μ: 42018, ~: 29916) -LibSortTest:testIsSortedDifferential(uint256) (runs: 312, μ: 43295, ~: 28424) -LibSortTest:testIsSortedIntsDifferential(uint256) (runs: 312, μ: 47898, ~: 29820) +LibSortTest:testInsertionSortPsuedorandom(uint256) (runs: 256, μ: 62423, ~: 62430) +LibSortTest:testIsSortedAddressesDifferential(uint256) (runs: 256, μ: 38441, ~: 28881) +LibSortTest:testIsSortedAndUniquifiedAddressesDifferential(uint256) (runs: 256, μ: 36210, ~: 28948) +LibSortTest:testIsSortedAndUniquifiedDifferential(uint256) (runs: 256, μ: 31415, ~: 28442) +LibSortTest:testIsSortedAndUniquifiedIntsDifferential(uint256) (runs: 256, μ: 42629, ~: 29923) +LibSortTest:testIsSortedDifferential(uint256) (runs: 256, μ: 43737, ~: 28411) +LibSortTest:testIsSortedIntsDifferential(uint256) (runs: 256, μ: 47646, ~: 30015) LibSortTest:testReverse() (gas: 117297) LibSortTest:testSearchSorted() (gas: 118972) LibSortTest:testSearchSortedAddresses() (gas: 251950) LibSortTest:testSearchSortedBasicCases() (gas: 2244) -LibSortTest:testSearchSortedDifferential(uint256) (runs: 312, μ: 45183, ~: 30874) +LibSortTest:testSearchSortedDifferential(uint256) (runs: 256, μ: 45515, ~: 30188) LibSortTest:testSearchSortedEdgeCases() (gas: 1617) -LibSortTest:testSearchSortedElementInArray(uint256) (runs: 312, μ: 55781, ~: 31438) +LibSortTest:testSearchSortedElementInArray(uint256) (runs: 256, μ: 58676, ~: 31716) LibSortTest:testSearchSortedElementNotInArray() (gas: 6135) -LibSortTest:testSearchSortedElementNotInArray(uint256) (runs: 312, μ: 47851, ~: 33822) +LibSortTest:testSearchSortedElementNotInArray(uint256) (runs: 256, μ: 48559, ~: 33320) LibSortTest:testSearchSortedInts() (gas: 120794) -LibSortTest:testSearchSortedInts(int256[],int256) (runs: 312, μ: 12155, ~: 11736) +LibSortTest:testSearchSortedInts(int256[],int256) (runs: 256, μ: 12038, ~: 11669) LibSortTest:testSearchSortedWithEmptyArray() (gas: 709) -LibSortTest:testSort(uint256) (runs: 312, μ: 38718, ~: 28289) -LibSortTest:testSortAddressesDifferential(uint256) (runs: 312, μ: 65472, ~: 29011) +LibSortTest:testSort(uint256) (runs: 256, μ: 39518, ~: 28173) +LibSortTest:testSortAddressesDifferential(uint256) (runs: 256, μ: 60978, ~: 28994) LibSortTest:testSortAddressesPsuedorandom() (gas: 148711) -LibSortTest:testSortAddressesPsuedorandom(uint256) (runs: 312, μ: 148856, ~: 148790) +LibSortTest:testSortAddressesPsuedorandom(uint256) (runs: 256, μ: 148810, ~: 148688) LibSortTest:testSortAddressesPsuedorandomBrutalizeUpperBits() (gas: 200629) LibSortTest:testSortAddressesReversed() (gas: 45400) LibSortTest:testSortAddressesSorted() (gas: 42376) LibSortTest:testSortBasicCase() (gas: 1210) -LibSortTest:testSortChecksumed(uint256) (runs: 312, μ: 47461, ~: 31480) -LibSortTest:testSortDifferential(uint256) (runs: 312, μ: 60780, ~: 28313) +LibSortTest:testSortChecksumed(uint256) (runs: 256, μ: 46675, ~: 31630) +LibSortTest:testSortDifferential(uint256) (runs: 256, μ: 61419, ~: 28589) LibSortTest:testSortInts() (gas: 895631) LibSortTest:testSortMostlySame() (gas: 67374) LibSortTest:testSortOriginalMostlySame() (gas: 207985) LibSortTest:testSortOriginalPsuedorandom() (gas: 283954) -LibSortTest:testSortOriginalPsuedorandom(uint256) (runs: 312, μ: 287985, ~: 287589) +LibSortTest:testSortOriginalPsuedorandom(uint256) (runs: 256, μ: 287899, ~: 287589) LibSortTest:testSortOriginalReversed() (gas: 156282) LibSortTest:testSortOriginalSorted() (gas: 142263) LibSortTest:testSortPsuedorandom() (gas: 141932) -LibSortTest:testSortPsuedorandom(uint256) (runs: 312, μ: 142176, ~: 142172) +LibSortTest:testSortPsuedorandom(uint256) (runs: 256, μ: 142154, ~: 142128) LibSortTest:testSortPsuedorandomNonuniform() (gas: 147496) -LibSortTest:testSortPsuedorandomNonuniform(uint256) (runs: 312, μ: 147837, ~: 147672) +LibSortTest:testSortPsuedorandomNonuniform(uint256) (runs: 256, μ: 147795, ~: 147654) LibSortTest:testSortReversed() (gas: 38827) LibSortTest:testSortSorted() (gas: 35785) LibSortTest:testSortTestOverhead() (gas: 103630) LibSortTest:testSortedDifferenceDifferential() (gas: 183604) -LibSortTest:testSortedDifferenceDifferential(uint256) (runs: 312, μ: 35309, ~: 35182) -LibSortTest:testSortedDifferenceDifferentialInt(uint256) (runs: 312, μ: 36978, ~: 35856) -LibSortTest:testSortedDifferenceUnionIntersection(uint256) (runs: 312, μ: 57978, ~: 52865) +LibSortTest:testSortedDifferenceDifferential(uint256) (runs: 256, μ: 34907, ~: 34822) +LibSortTest:testSortedDifferenceDifferentialInt(uint256) (runs: 256, μ: 36839, ~: 35548) +LibSortTest:testSortedDifferenceUnionIntersection(uint256) (runs: 256, μ: 58734, ~: 52924) LibSortTest:testSortedIntersectionDifferential() (gas: 209797) -LibSortTest:testSortedIntersectionDifferential(uint256) (runs: 312, μ: 32964, ~: 32422) -LibSortTest:testSortedIntersectionDifferentialInt(uint256) (runs: 312, μ: 35084, ~: 34881) +LibSortTest:testSortedIntersectionDifferential(uint256) (runs: 256, μ: 32862, ~: 32327) +LibSortTest:testSortedIntersectionDifferentialInt(uint256) (runs: 256, μ: 34896, ~: 34542) LibSortTest:testSortedUnionDifferential() (gas: 217387) -LibSortTest:testSortedUnionDifferential(uint256) (runs: 312, μ: 35804, ~: 35197) -LibSortTest:testSortedUnionDifferentialInt(uint256) (runs: 312, μ: 38573, ~: 38005) -LibSortTest:testTwoComplementConversionSort(int256,int256) (runs: 312, μ: 515, ~: 514) +LibSortTest:testSortedUnionDifferential(uint256) (runs: 256, μ: 35731, ~: 35106) +LibSortTest:testSortedUnionDifferentialInt(uint256) (runs: 256, μ: 38349, ~: 37809) +LibSortTest:testTwoComplementConversionSort(int256,int256) (runs: 256, μ: 515, ~: 514) LibSortTest:testUniquifySorted() (gas: 1710) -LibSortTest:testUniquifySorted(uint256) (runs: 312, μ: 48048, ~: 27641) +LibSortTest:testUniquifySorted(uint256) (runs: 256, μ: 44352, ~: 27502) LibSortTest:testUniquifySortedAddress() (gas: 4039) -LibSortTest:testUniquifySortedAddress(uint256) (runs: 312, μ: 48362, ~: 29297) -LibSortTest:testUniquifySortedDifferential(uint256) (runs: 312, μ: 43853, ~: 31791) +LibSortTest:testUniquifySortedAddress(uint256) (runs: 256, μ: 48822, ~: 29074) +LibSortTest:testUniquifySortedDifferential(uint256) (runs: 256, μ: 43277, ~: 32173) LibSortTest:testUniquifySortedWithEmptyArray() (gas: 506) LibSortTest:test__codesize() (gas: 21619) -LibStringTest:testAddressToHexStringZeroRightPadded(address) (runs: 312, μ: 3414, ~: 3414) +LibStringTest:testAddressToHexStringZeroRightPadded(address) (runs: 256, μ: 3414, ~: 3414) LibStringTest:testBytesToHexString() (gas: 4801) -LibStringTest:testBytesToHexString(bytes) (runs: 312, μ: 722535, ~: 622261) +LibStringTest:testBytesToHexString(bytes) (runs: 256, μ: 735859, ~: 622210) LibStringTest:testBytesToHexStringNoPrefix() (gas: 4489) -LibStringTest:testBytesToHexStringNoPrefix(bytes) (runs: 312, μ: 774435, ~: 621959) +LibStringTest:testBytesToHexStringNoPrefix(bytes) (runs: 256, μ: 783424, ~: 621893) LibStringTest:testContains() (gas: 43988) LibStringTest:testFromAddressToHexString() (gas: 3137) LibStringTest:testFromAddressToHexStringChecksummed() (gas: 35217) -LibStringTest:testFromAddressToHexStringChecksummedDifferential(uint256) (runs: 312, μ: 768064, ~: 610942) +LibStringTest:testFromAddressToHexStringChecksummedDifferential(uint256) (runs: 256, μ: 749584, ~: 610947) LibStringTest:testFromAddressToHexStringWithLeadingZeros() (gas: 3113) -LibStringTest:testHexStringNoPrefixVariants(uint256,uint256) (runs: 312, μ: 766118, ~: 620491) +LibStringTest:testHexStringNoPrefixVariants(uint256,uint256) (runs: 256, μ: 778179, ~: 620471) LibStringTest:testNormalizeSmallString() (gas: 1387) -LibStringTest:testNormalizeSmallString(bytes32) (runs: 312, μ: 3022, ~: 4213) +LibStringTest:testNormalizeSmallString(bytes32) (runs: 256, μ: 2931, ~: 3955) LibStringTest:testStringConcat() (gas: 4003) -LibStringTest:testStringConcat(string,string) (runs: 312, μ: 663761, ~: 602421) +LibStringTest:testStringConcat(string,string) (runs: 256, μ: 651764, ~: 602421) LibStringTest:testStringConcatOriginal() (gas: 4654) LibStringTest:testStringDirectReturn() (gas: 6741) -LibStringTest:testStringDirectReturn(string) (runs: 312, μ: 3001, ~: 2916) +LibStringTest:testStringDirectReturn(string) (runs: 256, μ: 3003, ~: 2916) LibStringTest:testStringEndsWith() (gas: 2829) -LibStringTest:testStringEndsWith(uint256) (runs: 312, μ: 761746, ~: 635222) -LibStringTest:testStringEq(string,string) (runs: 312, μ: 1566, ~: 1567) +LibStringTest:testStringEndsWith(uint256) (runs: 256, μ: 760504, ~: 634920) +LibStringTest:testStringEq(string,string) (runs: 256, μ: 1566, ~: 1567) LibStringTest:testStringEqs() (gas: 2013) LibStringTest:testStringEscapeHTML() (gas: 8427) -LibStringTest:testStringEscapeHTML(uint256) (runs: 312, μ: 768173, ~: 639759) +LibStringTest:testStringEscapeHTML(uint256) (runs: 256, μ: 759315, ~: 639759) LibStringTest:testStringEscapeJSON() (gas: 39797) LibStringTest:testStringEscapeJSONHexEncode() (gas: 725650) LibStringTest:testStringIndexOf() (gas: 17375) -LibStringTest:testStringIndexOf(uint256) (runs: 312, μ: 789343, ~: 642507) +LibStringTest:testStringIndexOf(uint256) (runs: 256, μ: 790764, ~: 642436) LibStringTest:testStringIndicesOf() (gas: 11700) -LibStringTest:testStringIndicesOf(uint256) (runs: 312, μ: 842424, ~: 647254) +LibStringTest:testStringIndicesOf(uint256) (runs: 256, μ: 818814, ~: 647156) LibStringTest:testStringIs7BitASCII() (gas: 205346) -LibStringTest:testStringIs7BitASCIIDifferential(bytes) (runs: 312, μ: 744784, ~: 602137) +LibStringTest:testStringIs7BitASCIIDifferential(bytes) (runs: 256, μ: 717121, ~: 602180) LibStringTest:testStringIs7BitASCIIWithAllowedLookup() (gas: 4939) -LibStringTest:testStringIs7BitASCIIWithAllowedLookupDifferential(bytes,uint128) (runs: 312, μ: 678038, ~: 601897) +LibStringTest:testStringIs7BitASCIIWithAllowedLookupDifferential(bytes,uint128) (runs: 256, μ: 673556, ~: 601900) LibStringTest:testStringLastIndexOf() (gas: 24042) -LibStringTest:testStringLastIndexOf(uint256) (runs: 312, μ: 761342, ~: 644109) +LibStringTest:testStringLastIndexOf(uint256) (runs: 256, μ: 768427, ~: 643528) LibStringTest:testStringLowerDifferential() (gas: 3405674) -LibStringTest:testStringLowerDifferential(string) (runs: 312, μ: 8309, ~: 7991) +LibStringTest:testStringLowerDifferential(string) (runs: 256, μ: 8289, ~: 7991) LibStringTest:testStringLowerOriginal() (gas: 1219) LibStringTest:testStringPackAndUnpackOne() (gas: 753921) -LibStringTest:testStringPackAndUnpackOne(string) (runs: 312, μ: 717695, ~: 601187) -LibStringTest:testStringPackAndUnpackOneDifferential(string) (runs: 312, μ: 748573, ~: 601003) +LibStringTest:testStringPackAndUnpackOne(string) (runs: 256, μ: 699743, ~: 601192) +LibStringTest:testStringPackAndUnpackOneDifferential(string) (runs: 256, μ: 744270, ~: 601003) LibStringTest:testStringPackAndUnpackTwo() (gas: 913201) -LibStringTest:testStringPackAndUnpackTwo(string,string) (runs: 312, μ: 706448, ~: 602502) -LibStringTest:testStringPackAndUnpackTwoDifferential(string,string) (runs: 312, μ: 666618, ~: 601999) +LibStringTest:testStringPackAndUnpackTwo(string,string) (runs: 256, μ: 689692, ~: 602502) +LibStringTest:testStringPackAndUnpackTwoDifferential(string,string) (runs: 256, μ: 654655, ~: 601999) LibStringTest:testStringRepeat() (gas: 4986) -LibStringTest:testStringRepeat(string,uint256) (runs: 312, μ: 752701, ~: 604551) +LibStringTest:testStringRepeat(string,uint256) (runs: 256, μ: 742326, ~: 604642) LibStringTest:testStringRepeatOriginal() (gas: 9620) -LibStringTest:testStringReplace(uint256) (runs: 312, μ: 701494, ~: 648329) +LibStringTest:testStringReplace(uint256) (runs: 256, μ: 711315, ~: 647085) LibStringTest:testStringReplaceLong() (gas: 8573) LibStringTest:testStringReplaceMedium() (gas: 7581) LibStringTest:testStringReplaceShort() (gas: 12329) LibStringTest:testStringRuneCount() (gas: 3035897) -LibStringTest:testStringRuneCountDifferential(string) (runs: 312, μ: 6130, ~: 5878) +LibStringTest:testStringRuneCountDifferential(string) (runs: 256, μ: 6101, ~: 5878) LibStringTest:testStringSlice() (gas: 9257) -LibStringTest:testStringSlice(bytes,uint256,uint256) (runs: 312, μ: 777216, ~: 626064) -LibStringTest:testStringSlice(uint256) (runs: 312, μ: 802047, ~: 640969) +LibStringTest:testStringSlice(bytes,uint256,uint256) (runs: 256, μ: 769921, ~: 626165) +LibStringTest:testStringSlice(uint256) (runs: 256, μ: 825072, ~: 640895) LibStringTest:testStringSplit() (gas: 20309) -LibStringTest:testStringSplit(uint256) (runs: 312, μ: 740726, ~: 645967) +LibStringTest:testStringSplit(uint256) (runs: 256, μ: 737826, ~: 646029) LibStringTest:testStringStartsWith() (gas: 2544) -LibStringTest:testStringStartsWith(uint256) (runs: 312, μ: 733686, ~: 634186) +LibStringTest:testStringStartsWith(uint256) (runs: 256, μ: 749597, ~: 634377) LibStringTest:testStringUpperDifferential() (gas: 3084191) -LibStringTest:testStringUpperDifferential(string) (runs: 312, μ: 8308, ~: 7990) +LibStringTest:testStringUpperDifferential(string) (runs: 256, μ: 8288, ~: 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: 312, μ: 8313, ~: 6491) +LibStringTest:testToHexStringFixedLengthZeroRightPadded(uint256,uint256) (runs: 256, μ: 8363, ~: 6063) LibStringTest:testToHexStringPositiveNumber() (gas: 865) LibStringTest:testToHexStringUint256Max() (gas: 3398) LibStringTest:testToHexStringZero() (gas: 805) -LibStringTest:testToHexStringZeroRightPadded(uint256) (runs: 312, μ: 1934, ~: 1548) +LibStringTest:testToHexStringZeroRightPadded(uint256) (runs: 256, μ: 1940, ~: 1465) LibStringTest:testToMinimalHexStringNoPrefixPositiveNumber() (gas: 3426) LibStringTest:testToMinimalHexStringNoPrefixUint256Max() (gas: 3424) LibStringTest:testToMinimalHexStringNoPrefixZero() (gas: 831) -LibStringTest:testToMinimalHexStringNoPrefixZeroRightPadded(uint256) (runs: 312, μ: 1954, ~: 1570) +LibStringTest:testToMinimalHexStringNoPrefixZeroRightPadded(uint256) (runs: 256, μ: 1960, ~: 1487) LibStringTest:testToMinimalHexStringPositiveNumber() (gas: 3556) LibStringTest:testToMinimalHexStringUint256Max() (gas: 3470) LibStringTest:testToMinimalHexStringZero() (gas: 829) -LibStringTest:testToMinimalHexStringZeroRightPadded(uint256) (runs: 312, μ: 1982, ~: 1595) +LibStringTest:testToMinimalHexStringZeroRightPadded(uint256) (runs: 256, μ: 1987, ~: 1512) LibStringTest:testToSmallString() (gas: 4448) LibStringTest:testToStringPositiveNumber() (gas: 910) LibStringTest:testToStringPositiveNumberBrutalized() (gas: 3013089) -LibStringTest:testToStringSignedDifferential(int256) (runs: 312, μ: 704225, ~: 604222) +LibStringTest:testToStringSignedDifferential(int256) (runs: 256, μ: 707151, ~: 604266) LibStringTest:testToStringSignedGas() (gas: 7305) -LibStringTest:testToStringSignedMemory(int256) (runs: 312, μ: 741276, ~: 602418) +LibStringTest:testToStringSignedMemory(int256) (runs: 256, μ: 757479, ~: 602375) LibStringTest:testToStringSignedOriginalGas() (gas: 9839) LibStringTest:testToStringUint256Max() (gas: 6687) LibStringTest:testToStringUint256MaxBrutalized() (gas: 612683) LibStringTest:testToStringZero() (gas: 699) LibStringTest:testToStringZeroBrutalized() (gas: 600697) -LibStringTest:testToStringZeroRightPadded(uint256) (runs: 312, μ: 702936, ~: 601846) +LibStringTest:testToStringZeroRightPadded(uint256) (runs: 256, μ: 721465, ~: 601571) LibStringTest:test__codesize() (gas: 43051) LibZipTest:testCdCompress() (gas: 126842) -LibZipTest:testCdCompressDecompress(bytes) (runs: 312, μ: 758942, ~: 652660) -LibZipTest:testCdCompressDecompress(uint256) (runs: 312, μ: 782377, ~: 671640) +LibZipTest:testCdCompressDecompress(bytes) (runs: 256, μ: 758249, ~: 652089) +LibZipTest:testCdCompressDecompress(uint256) (runs: 256, μ: 804796, ~: 671491) LibZipTest:testCdDecompressOnInvalidInput() (gas: 1397) LibZipTest:testCdFallback() (gas: 5622174) -LibZipTest:testCdFallback(bytes,uint256) (runs: 312, μ: 1168548, ~: 1052062) -LibZipTest:testCdFallbackDecompressor(bytes) (runs: 312, μ: 121504, ~: 118335) -LibZipTest:testCdFallbackDecompressor(uint256) (runs: 312, μ: 174417, ~: 159398) -LibZipTest:testCdFallbackMaskTrick(uint256,uint256) (runs: 312, μ: 595, ~: 585) -LibZipTest:testDecompressWontRevert(bytes) (runs: 312, μ: 681869, ~: 632952) +LibZipTest:testCdFallback(bytes,uint256) (runs: 256, μ: 1169178, ~: 1046708) +LibZipTest:testCdFallbackDecompressor(bytes) (runs: 256, μ: 121178, ~: 117600) +LibZipTest:testCdFallbackDecompressor(uint256) (runs: 256, μ: 177241, ~: 159781) +LibZipTest:testCdFallbackMaskTrick(uint256,uint256) (runs: 256, μ: 594, ~: 585) +LibZipTest:testDecompressWontRevert(bytes) (runs: 256, μ: 684186, ~: 631812) LibZipTest:testFlzCompressDecompress() (gas: 1249620) -LibZipTest:testFlzCompressDecompress(bytes) (runs: 312, μ: 763180, ~: 665538) +LibZipTest:testFlzCompressDecompress(bytes) (runs: 256, μ: 734442, ~: 665410) LibZipTest:testFlzCompressDecompress2() (gas: 758656) LibZipTest:test__codesize() (gas: 20344) -LifebuoyTest:testLifebuoyCreateDeployment(address,address,uint256) (runs: 312, μ: 3120455, ~: 3570652) -LifebuoyTest:testLifebuoyOwnedCloneRescuePermissions(bytes32) (runs: 312, μ: 940784, ~: 940737) -LifebuoyTest:testLifebuoyOwnedRescuePermissions(bytes32) (runs: 312, μ: 944909, ~: 936423) -LifebuoyTest:testLifebuoyRescuePermissions(bytes32) (runs: 312, μ: 925094, ~: 904364) +LifebuoyTest:testLifebuoyCreateDeployment(address,address,uint256) (runs: 256, μ: 3198170, ~: 4084811) +LifebuoyTest:testLifebuoyOwnedCloneRescuePermissions(bytes32) (runs: 256, μ: 940811, ~: 940737) +LifebuoyTest:testLifebuoyOwnedRescuePermissions(bytes32) (runs: 256, μ: 945227, ~: 936312) +LifebuoyTest:testLifebuoyRescuePermissions(bytes32) (runs: 256, μ: 924903, ~: 904332) LifebuoyTest:testLockEverything() (gas: 659396) LifebuoyTest:testLockRescue() (gas: 686867) LifebuoyTest:testLockRescueETH() (gas: 697996) -LifebuoyTest:testRescueERC20(uint256) (runs: 312, μ: 654420, ~: 655858) -LifebuoyTest:testRescueERC721(bytes32) (runs: 312, μ: 650623, ~: 650882) -LifebuoyTest:testRescueETH(uint256) (runs: 312, μ: 662914, ~: 663980) +LifebuoyTest:testRescueERC20(uint256) (runs: 256, μ: 654380, ~: 655852) +LifebuoyTest:testRescueERC721(bytes32) (runs: 256, μ: 650623, ~: 650882) +LifebuoyTest:testRescueETH(uint256) (runs: 256, μ: 663072, ~: 663967) LifebuoyTest:test__codesize() (gas: 31162) MerkleProofLibTest:testEmptyCalldataHelpers() (gas: 985) -MerkleProofLibTest:testVerifyMultiProof(bool,bool,bool,bool,bytes32) (runs: 312, μ: 757059, ~: 633082) -MerkleProofLibTest:testVerifyMultiProofForHeightOneTree(bool,bool,bool,bool,bool,bool[]) (runs: 312, μ: 37748, ~: 38826) -MerkleProofLibTest:testVerifyMultiProofForHeightTwoTree(bool,bool,bool,bool,bool,bytes32) (runs: 312, μ: 6506, ~: 6478) -MerkleProofLibTest:testVerifyMultiProofForSingleLeaf(bytes32[],uint256) (runs: 312, μ: 900377, ~: 802840) +MerkleProofLibTest:testVerifyMultiProof(bool,bool,bool,bool,bytes32) (runs: 256, μ: 755652, ~: 633145) +MerkleProofLibTest:testVerifyMultiProofForHeightOneTree(bool,bool,bool,bool,bool,bool[]) (runs: 256, μ: 37908, ~: 38470) +MerkleProofLibTest:testVerifyMultiProofForHeightTwoTree(bool,bool,bool,bool,bool,bytes32) (runs: 256, μ: 6511, ~: 6467) +MerkleProofLibTest:testVerifyMultiProofForSingleLeaf(bytes32[],uint256) (runs: 256, μ: 908621, ~: 803854) MerkleProofLibTest:testVerifyMultiProofIsInvalid() (gas: 631963) MerkleProofLibTest:testVerifyMultiProofIsValid() (gas: 633237) MerkleProofLibTest:testVerifyMultiProofMalicious() (gas: 7918) -MerkleProofLibTest:testVerifyProof(bytes32[],uint256) (runs: 312, μ: 868771, ~: 782357) -MerkleProofLibTest:testVerifyProofBasicCase(bool,bool,bool,bytes32) (runs: 312, μ: 4044, ~: 3906) +MerkleProofLibTest:testVerifyProof(bytes32[],uint256) (runs: 256, μ: 871539, ~: 782732) +MerkleProofLibTest:testVerifyProofBasicCase(bool,bool,bool,bytes32) (runs: 256, μ: 4039, ~: 3906) MerkleProofLibTest:testVerifyProofBasicCaseIsInvalid() (gas: 3626) MerkleProofLibTest:testVerifyProofBasicCaseIsValid() (gas: 3590) -MerkleProofLibTest:testVerifyProofForHeightOneTree(bool,bool,bool,bool) (runs: 312, μ: 2694, ~: 2968) +MerkleProofLibTest:testVerifyProofForHeightOneTree(bool,bool,bool,bool) (runs: 256, μ: 2693, ~: 2968) MerkleProofLibTest:test__codesize() (gas: 11663) -MetadataReaderLibTest:testBoundsCheckDifferential(uint256) (runs: 312, μ: 25475, ~: 25474) +MetadataReaderLibTest:testBoundsCheckDifferential(uint256) (runs: 256, μ: 25481, ~: 25478) MetadataReaderLibTest:testReadBytes32String() (gas: 667978) MetadataReaderLibTest:testReadBytes32StringTruncated() (gas: 782746) -MetadataReaderLibTest:testReadString(uint256) (runs: 312, μ: 839626, ~: 725195) +MetadataReaderLibTest:testReadString(uint256) (runs: 256, μ: 851624, ~: 725613) MetadataReaderLibTest:testReadStringChopped() (gas: 272350) -MetadataReaderLibTest:testReadStringTruncated(uint256) (runs: 312, μ: 843960, ~: 712565) +MetadataReaderLibTest:testReadStringTruncated(uint256) (runs: 256, μ: 849956, ~: 712820) MetadataReaderLibTest:testReadUint() (gas: 921729) -MetadataReaderLibTest:testReadUint(uint256) (runs: 312, μ: 46700, ~: 47136) +MetadataReaderLibTest:testReadUint(uint256) (runs: 256, μ: 46824, ~: 47136) MetadataReaderLibTest:test__codesize() (gas: 8049) -MinHeapLibTest:testHeapEnqueue(uint256) (runs: 312, μ: 181303, ~: 181221) -MinHeapLibTest:testHeapEnqueue2(uint256) (runs: 312, μ: 593316, ~: 451760) +MinHeapLibTest:testHeapEnqueue(uint256) (runs: 256, μ: 180726, ~: 181221) +MinHeapLibTest:testHeapEnqueue2(uint256) (runs: 256, μ: 606951, ~: 494164) MinHeapLibTest:testHeapEnqueueGas() (gas: 841356) -MinHeapLibTest:testHeapEnqueueZeroMaxLengthReverts(uint256) (runs: 312, μ: 46665, ~: 28352) -MinHeapLibTest:testHeapPSiftTrick(uint256,uint256,uint256) (runs: 312, μ: 687, ~: 517) -MinHeapLibTest:testHeapPushAndPop(uint256) (runs: 312, μ: 112950, ~: 124438) -MinHeapLibTest:testHeapPushPop(uint256) (runs: 312, μ: 244342, ~: 236557) -MinHeapLibTest:testHeapPushPopLength(uint256) (runs: 312, μ: 925930, ~: 858665) -MinHeapLibTest:testHeapReplace(uint256) (runs: 312, μ: 291059, ~: 288463) -MinHeapLibTest:testHeapReplaceOrPopEmptyHeapReverts(uint256) (runs: 312, μ: 45406, ~: 50632) -MinHeapLibTest:testHeapRoot(uint256) (runs: 312, μ: 47143, ~: 47448) -MinHeapLibTest:testHeapSmallest(uint256) (runs: 312, μ: 1312474, ~: 1179015) +MinHeapLibTest:testHeapEnqueueZeroMaxLengthReverts(uint256) (runs: 256, μ: 47142, ~: 28355) +MinHeapLibTest:testHeapPSiftTrick(uint256,uint256,uint256) (runs: 256, μ: 690, ~: 855) +MinHeapLibTest:testHeapPushAndPop(uint256) (runs: 256, μ: 112730, ~: 124625) +MinHeapLibTest:testHeapPushPop(uint256) (runs: 256, μ: 248313, ~: 242152) +MinHeapLibTest:testHeapPushPopLength(uint256) (runs: 256, μ: 923214, ~: 857081) +MinHeapLibTest:testHeapReplace(uint256) (runs: 256, μ: 296105, ~: 300971) +MinHeapLibTest:testHeapReplaceOrPopEmptyHeapReverts(uint256) (runs: 256, μ: 45442, ~: 50638) +MinHeapLibTest:testHeapRoot(uint256) (runs: 256, μ: 47617, ~: 47448) +MinHeapLibTest:testHeapSmallest(uint256) (runs: 256, μ: 1323444, ~: 1178947) MinHeapLibTest:testHeapSmallestGas() (gas: 50069382) -MinHeapLibTest:testMemHeapEnqueue(uint256) (runs: 312, μ: 1589998, ~: 949556) -MinHeapLibTest:testMemHeapEnqueue2(uint256) (runs: 312, μ: 857780, ~: 751287) +MinHeapLibTest:testMemHeapEnqueue(uint256) (runs: 256, μ: 1559228, ~: 947072) +MinHeapLibTest:testMemHeapEnqueue2(uint256) (runs: 256, μ: 871981, ~: 753764) MinHeapLibTest:testMemHeapEnqueueGas() (gas: 249458) -MinHeapLibTest:testMemHeapEnqueueZeroMaxLengthReverts(uint256) (runs: 312, μ: 25030, ~: 23899) -MinHeapLibTest:testMemHeapPushAndPop(uint256) (runs: 312, μ: 931876, ~: 842912) +MinHeapLibTest:testMemHeapEnqueueZeroMaxLengthReverts(uint256) (runs: 256, μ: 25083, ~: 25104) +MinHeapLibTest:testMemHeapPushAndPop(uint256) (runs: 256, μ: 955106, ~: 852297) MinHeapLibTest:testMemHeapPushGas() (gas: 35596) -MinHeapLibTest:testMemHeapPushPop(uint256) (runs: 312, μ: 1174888, ~: 1050991) -MinHeapLibTest:testMemHeapPushPopLength(uint256) (runs: 312, μ: 787245, ~: 702133) -MinHeapLibTest:testMemHeapReplace(uint256) (runs: 312, μ: 906143, ~: 781948) -MinHeapLibTest:testMemHeapReplaceOrPopEmptyHeapReverts(uint256) (runs: 312, μ: 25697, ~: 25269) -MinHeapLibTest:testMemHeapRoot(uint256) (runs: 312, μ: 741169, ~: 649627) -MinHeapLibTest:testMemHeapSmallest(uint256) (runs: 312, μ: 877145, ~: 758521) +MinHeapLibTest:testMemHeapPushPop(uint256) (runs: 256, μ: 1158525, ~: 1033887) +MinHeapLibTest:testMemHeapPushPopLength(uint256) (runs: 256, μ: 785941, ~: 703550) +MinHeapLibTest:testMemHeapReplace(uint256) (runs: 256, μ: 932740, ~: 782126) +MinHeapLibTest:testMemHeapReplaceOrPopEmptyHeapReverts(uint256) (runs: 256, μ: 25701, ~: 25272) +MinHeapLibTest:testMemHeapRoot(uint256) (runs: 256, μ: 747793, ~: 649667) +MinHeapLibTest:testMemHeapSmallest(uint256) (runs: 256, μ: 868377, ~: 760205) MinHeapLibTest:testMemHeapSmallestGas() (gas: 2985537) MinHeapLibTest:testMemHeapWriteAndReadFromStorage() (gas: 67756) MinHeapLibTest:testMemHeapWriteAndReadFromStorage2() (gas: 67774) @@ -1025,66 +1029,66 @@ MulticallableTest:testMulticallableBenchmark() (gas: 29642) MulticallableTest:testMulticallableOriginalBenchmark() (gas: 38935) MulticallableTest:testMulticallablePreservesMsgSender() (gas: 11166) MulticallableTest:testMulticallableReturnDataIsProperlyEncoded() (gas: 11665) -MulticallableTest:testMulticallableReturnDataIsProperlyEncoded(string,string,uint256) (runs: 312, μ: 12116, ~: 7437) -MulticallableTest:testMulticallableReturnDataIsProperlyEncoded(uint256,uint256,uint256,uint256) (runs: 312, μ: 11811, ~: 11811) +MulticallableTest:testMulticallableReturnDataIsProperlyEncoded(string,string,uint256) (runs: 256, μ: 12085, ~: 7434) +MulticallableTest:testMulticallableReturnDataIsProperlyEncoded(uint256,uint256,uint256,uint256) (runs: 256, μ: 11811, ~: 11811) MulticallableTest:testMulticallableRevertWithCustomError() (gas: 11811) MulticallableTest:testMulticallableRevertWithMessage() (gas: 13483) -MulticallableTest:testMulticallableRevertWithMessage(string) (runs: 312, μ: 14093, ~: 13944) +MulticallableTest:testMulticallableRevertWithMessage(string) (runs: 256, μ: 14096, ~: 13944) MulticallableTest:testMulticallableRevertWithNothing() (gas: 11673) MulticallableTest:testMulticallableWithNoData() (gas: 6286) MulticallableTest:test__codesize() (gas: 8867) OwnableRolesTest:testBytecodeSize() (gas: 350635) -OwnableRolesTest:testGrantAndRemoveRolesDirect(address,uint256,uint256) (runs: 312, μ: 40116, ~: 40750) -OwnableRolesTest:testGrantAndRevokeOrRenounceRoles(address,bool,bool,bool,uint256,uint256) (runs: 312, μ: 27451, ~: 27899) +OwnableRolesTest:testGrantAndRemoveRolesDirect(address,uint256,uint256) (runs: 256, μ: 40104, ~: 40750) +OwnableRolesTest:testGrantAndRevokeOrRenounceRoles(address,bool,bool,bool,uint256,uint256) (runs: 256, μ: 27257, ~: 16047) OwnableRolesTest:testGrantRoles() (gas: 36136) OwnableRolesTest:testHandoverOwnership() (gas: 32394) -OwnableRolesTest:testHandoverOwnership(address) (runs: 312, μ: 32434, ~: 32420) +OwnableRolesTest:testHandoverOwnership(address) (runs: 256, μ: 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: 312, μ: 33583, ~: 33580) -OwnableRolesTest:testHasAnyRole(address,uint256,uint256) (runs: 312, μ: 33183, ~: 33375) +OwnableRolesTest:testHasAllRoles(address,uint256,uint256,uint256,bool) (runs: 256, μ: 33584, ~: 33588) +OwnableRolesTest:testHasAnyRole(address,uint256,uint256) (runs: 256, μ: 33219, ~: 33375) OwnableRolesTest:testInitializeOwnerDirect() (gas: 16738) -OwnableRolesTest:testOnlyOwnerModifier(address,bool) (runs: 312, μ: 21080, ~: 30023) +OwnableRolesTest:testOnlyOwnerModifier(address,bool) (runs: 256, μ: 20965, ~: 30023) OwnableRolesTest:testOnlyOwnerOrRolesModifier() (gas: 36238) -OwnableRolesTest:testOnlyOwnerOrRolesModifier(address,bool,uint256,uint256) (runs: 312, μ: 55561, ~: 55110) -OwnableRolesTest:testOnlyRolesModifier(address,uint256,uint256) (runs: 312, μ: 56038, ~: 57903) -OwnableRolesTest:testOnlyRolesOrOwnerModifier(address,bool,uint256,uint256) (runs: 312, μ: 56522, ~: 57277) +OwnableRolesTest:testOnlyOwnerOrRolesModifier(address,bool,uint256,uint256) (runs: 256, μ: 55524, ~: 56641) +OwnableRolesTest:testOnlyRolesModifier(address,uint256,uint256) (runs: 256, μ: 56133, ~: 57903) +OwnableRolesTest:testOnlyRolesOrOwnerModifier(address,bool,uint256,uint256) (runs: 256, μ: 56446, ~: 57657) OwnableRolesTest:testOrdinalsFromRoles() (gas: 3756443) -OwnableRolesTest:testOrdinalsFromRoles(uint256) (runs: 312, μ: 59177, ~: 44958) +OwnableRolesTest:testOrdinalsFromRoles(uint256) (runs: 256, μ: 59525, ~: 42037) OwnableRolesTest:testOwnershipHandoverValidForDefaultValue() (gas: 5825) OwnableRolesTest:testRenounceOwnership() (gas: 12921) OwnableRolesTest:testRolesFromOrdinals() (gas: 652364) -OwnableRolesTest:testRolesFromOrdinals(uint8[]) (runs: 312, μ: 81413, ~: 84732) +OwnableRolesTest:testRolesFromOrdinals(uint8[]) (runs: 256, μ: 81222, ~: 85587) OwnableRolesTest:testSetOwnerDirect() (gas: 17790) -OwnableRolesTest:testSetOwnerDirect(address) (runs: 312, μ: 17915, ~: 17915) -OwnableRolesTest:testSetRolesDirect(uint256) (runs: 312, μ: 99806, ~: 99925) +OwnableRolesTest:testSetOwnerDirect(address) (runs: 256, μ: 17915, ~: 17915) +OwnableRolesTest:testSetRolesDirect(uint256) (runs: 256, μ: 99781, ~: 99925) OwnableRolesTest:testTransferOwnership() (gas: 19313) -OwnableRolesTest:testTransferOwnership(address,bool,bool) (runs: 312, μ: 14214, ~: 12377) +OwnableRolesTest:testTransferOwnership(address,bool,bool) (runs: 256, μ: 14230, ~: 12377) OwnableRolesTest:test__codesize() (gas: 21655) OwnableTest:testBytecodeSize() (gas: 235158) OwnableTest:testHandoverOwnership() (gas: 32127) -OwnableTest:testHandoverOwnership(address) (runs: 312, μ: 32149, ~: 32136) +OwnableTest:testHandoverOwnership(address) (runs: 256, μ: 32150, ~: 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: 312, μ: 21027, ~: 30001) +OwnableTest:testOnlyOwnerModifier(address,bool) (runs: 256, μ: 20911, ~: 30001) OwnableTest:testOwnershipHandoverValidForDefaultValue() (gas: 5737) OwnableTest:testRenounceOwnership() (gas: 12755) OwnableTest:testSetOwnerDirect() (gas: 17700) -OwnableTest:testSetOwnerDirect(address) (runs: 312, μ: 17810, ~: 17826) +OwnableTest:testSetOwnerDirect(address) (runs: 256, μ: 17807, ~: 17826) OwnableTest:testTransferOwnership() (gas: 19210) -OwnableTest:testTransferOwnership(address,bool,bool) (runs: 312, μ: 13992, ~: 12183) +OwnableTest:testTransferOwnership(address,bool,bool) (runs: 256, μ: 14003, ~: 12183) OwnableTest:test__codesize() (gas: 11003) -P256Test:testP256Verify(uint256,bytes32) (runs: 312, μ: 493363, ~: 493174) +P256Test:testP256Verify(uint256,bytes32) (runs: 256, μ: 493491, ~: 493436) 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: 312, μ: 10815, ~: 10799) +P256Test:testP256VerifyNotDeployedReverts(bytes32,bytes32,bytes32,bytes32,bytes32,bool) (runs: 256, μ: 10815, ~: 10799) P256Test:testP256VerifyOutOfBounds() (gas: 201377) P256Test:testP256VerifyWycheproof() (gas: 3268) P256Test:test__codesize() (gas: 11373) @@ -1095,8 +1099,8 @@ ReceiverTest:testOnERC721Received() (gas: 64593) ReceiverTest:test__codesize() (gas: 3053) RedBlackTreeLibTest:testRedBlackTreeBenchUint160() (gas: 3428194) RedBlackTreeLibTest:testRedBlackTreeBenchUint256() (gas: 5841865) -RedBlackTreeLibTest:testRedBlackTreeInsertAndRemove(uint256) (runs: 312, μ: 549832, ~: 535382) -RedBlackTreeLibTest:testRedBlackTreeInsertAndRemove2(uint256) (runs: 312, μ: 426892, ~: 433250) +RedBlackTreeLibTest:testRedBlackTreeInsertAndRemove(uint256) (runs: 256, μ: 548981, ~: 535382) +RedBlackTreeLibTest:testRedBlackTreeInsertAndRemove2(uint256) (runs: 256, μ: 415915, ~: 423682) RedBlackTreeLibTest:testRedBlackTreeInsertAndRemove3() (gas: 21527899) RedBlackTreeLibTest:testRedBlackTreeInsertBenchStep() (gas: 3702908) RedBlackTreeLibTest:testRedBlackTreeInsertBenchUint160() (gas: 3468526) @@ -1105,16 +1109,16 @@ RedBlackTreeLibTest:testRedBlackTreeInsertOneGas() (gas: 45558) RedBlackTreeLibTest:testRedBlackTreeInsertTenGas() (gas: 282691) RedBlackTreeLibTest:testRedBlackTreeInsertThreeGas() (gas: 96175) RedBlackTreeLibTest:testRedBlackTreeInsertTwoGas() (gas: 69785) -RedBlackTreeLibTest:testRedBlackTreeNearest(uint256) (runs: 312, μ: 251703, ~: 249019) -RedBlackTreeLibTest:testRedBlackTreeNearestAfter(uint256) (runs: 312, μ: 244992, ~: 227366) -RedBlackTreeLibTest:testRedBlackTreeNearestBefore(uint256) (runs: 312, μ: 272441, ~: 274022) +RedBlackTreeLibTest:testRedBlackTreeNearest(uint256) (runs: 256, μ: 247785, ~: 249207) +RedBlackTreeLibTest:testRedBlackTreeNearestAfter(uint256) (runs: 256, μ: 246205, ~: 231492) +RedBlackTreeLibTest:testRedBlackTreeNearestBefore(uint256) (runs: 256, μ: 275290, ~: 282235) RedBlackTreeLibTest:testRedBlackTreePointers() (gas: 91643) RedBlackTreeLibTest:testRedBlackTreeRejectsEmptyValue() (gas: 3232) RedBlackTreeLibTest:testRedBlackTreeRemoveViaPointer() (gas: 58157) RedBlackTreeLibTest:testRedBlackTreeTreeFullReverts() (gas: 50317) RedBlackTreeLibTest:testRedBlackTreeTryInsertAndRemove() (gas: 56062) RedBlackTreeLibTest:testRedBlackTreeValues() (gas: 188548) -RedBlackTreeLibTest:testRedBlackTreeValues(uint256) (runs: 312, μ: 382915, ~: 243302) +RedBlackTreeLibTest:testRedBlackTreeValues(uint256) (runs: 256, μ: 375020, ~: 240658) RedBlackTreeLibTest:test__codesize() (gas: 13131) ReentrancyGuardTest:testRecursiveDirectUnguardedCall() (gas: 34276) ReentrancyGuardTest:testRecursiveIndirectUnguardedCall() (gas: 47727) @@ -1124,109 +1128,109 @@ ReentrancyGuardTest:testRevertRecursiveDirectGuardedCall() (gas: 55123) ReentrancyGuardTest:testRevertRecursiveIndirectGuardedCall() (gas: 56529) ReentrancyGuardTest:testRevertRemoteCallback() (gas: 56230) ReentrancyGuardTest:test__codesize() (gas: 4403) -SSTORE2Test:testReadRevertsOnZeroCodeAddress(address) (runs: 312, μ: 102029, ~: 29905) +SSTORE2Test:testReadRevertsOnZeroCodeAddress(address) (runs: 256, μ: 109243, ~: 29905) SSTORE2Test:testReadSlicing() (gas: 48874) SSTORE2Test:testWriteRead() (gas: 35880) -SSTORE2Test:testWriteRead(uint256,uint256) (runs: 312, μ: 1066177, ~: 67384) -SSTORE2Test:testWriteReadCounterfactual(bytes,bytes32,address) (runs: 312, μ: 4145659, ~: 108268) +SSTORE2Test:testWriteRead(uint256,uint256) (runs: 256, μ: 1093652, ~: 67527) +SSTORE2Test:testWriteReadCounterfactual(bytes,bytes32,address) (runs: 256, μ: 4271622, ~: 108268) SSTORE2Test:testWriteReadCustomBounds() (gas: 33936) SSTORE2Test:testWriteReadCustomStartBound() (gas: 34020) SSTORE2Test:testWriteReadDeterministic() (gas: 70156) -SSTORE2Test:testWriteReadDeterministic(bytes,bytes32) (runs: 312, μ: 3511260, ~: 96728) +SSTORE2Test:testWriteReadDeterministic(bytes,bytes32) (runs: 256, μ: 2745391, ~: 96728) SSTORE2Test:testWriteReadEmptyBound() (gas: 33734) SSTORE2Test:testWriteReadFullBoundedRead() (gas: 35937) SSTORE2Test:testWriteReadFullStartBound() (gas: 33983) SSTORE2Test:testWriteWithTooBigDataReverts() (gas: 97303641) SSTORE2Test:test__codesize() (gas: 8483) -SafeCastLibTest:testSafeCastInt256ToInt(int256,uint256) (runs: 312, μ: 19048, ~: 24771) +SafeCastLibTest:testSafeCastInt256ToInt(int256,uint256) (runs: 256, μ: 19549, ~: 24780) SafeCastLibTest:testSafeCastInt256ToIntBench() (gas: 341694) -SafeCastLibTest:testSafeCastInt256ToIntTrickEquivalence(int256) (runs: 312, μ: 406, ~: 406) -SafeCastLibTest:testSafeCastToInt256(uint256) (runs: 312, μ: 496, ~: 405) -SafeCastLibTest:testSafeCastToUint256(int256) (runs: 312, μ: 1302, ~: 428) -SafeCastLibTest:testSafeCastUint256ToInt(uint256,uint256) (runs: 312, μ: 26988, ~: 26186) +SafeCastLibTest:testSafeCastInt256ToIntTrickEquivalence(int256) (runs: 256, μ: 406, ~: 406) +SafeCastLibTest:testSafeCastToInt256(uint256) (runs: 256, μ: 505, ~: 405) +SafeCastLibTest:testSafeCastToUint256(int256) (runs: 256, μ: 1316, ~: 428) +SafeCastLibTest:testSafeCastUint256ToInt(uint256,uint256) (runs: 256, μ: 26903, ~: 26158) SafeCastLibTest:testSafeCastUint256ToInt256Bench() (gas: 29380) SafeCastLibTest:testSafeCastUint256ToIntBench() (gas: 330222) SafeCastLibTest:testSafeCastUint256ToUintBench() (gas: 326262) -SafeCastLibTest:testSafeCastUintToUint(uint256,uint256) (runs: 312, μ: 19139, ~: 24811) +SafeCastLibTest:testSafeCastUintToUint(uint256,uint256) (runs: 256, μ: 19254, ~: 24810) SafeCastLibTest:test__codesize() (gas: 23416) -SafeTransferLibTest:testApproveWithGarbageReverts(address,uint256) (runs: 312, μ: 110234, ~: 123658) +SafeTransferLibTest:testApproveWithGarbageReverts(address,uint256) (runs: 256, μ: 110653, ~: 123532) SafeTransferLibTest:testApproveWithMissingReturn() (gas: 32065) -SafeTransferLibTest:testApproveWithMissingReturn(address,uint256) (runs: 312, μ: 32157, ~: 32285) +SafeTransferLibTest:testApproveWithMissingReturn(address,uint256) (runs: 256, μ: 32207, ~: 32285) SafeTransferLibTest:testApproveWithNonContract() (gas: 2967) -SafeTransferLibTest:testApproveWithNonContract(address,address,uint256) (runs: 312, μ: 3552, ~: 3613) -SafeTransferLibTest:testApproveWithNonGarbage(address,uint256) (runs: 312, μ: 79580, ~: 59368) +SafeTransferLibTest:testApproveWithNonContract(address,address,uint256) (runs: 256, μ: 3539, ~: 3613) +SafeTransferLibTest:testApproveWithNonGarbage(address,uint256) (runs: 256, μ: 79454, ~: 59367) SafeTransferLibTest:testApproveWithRetry() (gas: 839894) -SafeTransferLibTest:testApproveWithRetry(address,uint256,uint256) (runs: 312, μ: 839742, ~: 840010) +SafeTransferLibTest:testApproveWithRetry(address,uint256,uint256) (runs: 256, μ: 839830, ~: 840010) SafeTransferLibTest:testApproveWithRetryWithNonContract() (gas: 2990) -SafeTransferLibTest:testApproveWithRetryWithNonContract(address,address,uint256) (runs: 312, μ: 3571, ~: 3632) +SafeTransferLibTest:testApproveWithRetryWithNonContract(address,address,uint256) (runs: 256, μ: 3558, ~: 3632) SafeTransferLibTest:testApproveWithReturnsFalseReverts() (gas: 9713) -SafeTransferLibTest:testApproveWithReturnsFalseReverts(address,uint256) (runs: 312, μ: 9866, ~: 9866) +SafeTransferLibTest:testApproveWithReturnsFalseReverts(address,uint256) (runs: 256, μ: 9866, ~: 9866) SafeTransferLibTest:testApproveWithReturnsTooLittleReverts() (gas: 9617) -SafeTransferLibTest:testApproveWithReturnsTooLittleReverts(address,uint256) (runs: 312, μ: 9795, ~: 9795) +SafeTransferLibTest:testApproveWithReturnsTooLittleReverts(address,uint256) (runs: 256, μ: 9795, ~: 9795) SafeTransferLibTest:testApproveWithReturnsTooMuch() (gas: 32511) -SafeTransferLibTest:testApproveWithReturnsTooMuch(address,uint256) (runs: 312, μ: 32541, ~: 32669) -SafeTransferLibTest:testApproveWithReturnsTwoReverts(address,uint256) (runs: 312, μ: 9823, ~: 9823) +SafeTransferLibTest:testApproveWithReturnsTooMuch(address,uint256) (runs: 256, μ: 32591, ~: 32669) +SafeTransferLibTest:testApproveWithReturnsTwoReverts(address,uint256) (runs: 256, μ: 9823, ~: 9823) SafeTransferLibTest:testApproveWithRevertingReverts() (gas: 9574) -SafeTransferLibTest:testApproveWithRevertingReverts(address,uint256) (runs: 312, μ: 9784, ~: 9784) +SafeTransferLibTest:testApproveWithRevertingReverts(address,uint256) (runs: 256, μ: 9784, ~: 9784) SafeTransferLibTest:testApproveWithStandardERC20() (gas: 31951) -SafeTransferLibTest:testApproveWithStandardERC20(address,uint256) (runs: 312, μ: 32045, ~: 32173) +SafeTransferLibTest:testApproveWithStandardERC20(address,uint256) (runs: 256, μ: 32095, ~: 32173) SafeTransferLibTest:testBalanceOfStandardERC20() (gas: 7852) -SafeTransferLibTest:testBalanceOfStandardERC20(address,uint256) (runs: 312, μ: 37176, ~: 37498) +SafeTransferLibTest:testBalanceOfStandardERC20(address,uint256) (runs: 256, μ: 37124, ~: 37498) SafeTransferLibTest:testForceTransferETHToGriever() (gas: 1511587) -SafeTransferLibTest:testForceTransferETHToGriever(uint256,uint256) (runs: 312, μ: 536028, ~: 570885) +SafeTransferLibTest:testForceTransferETHToGriever(uint256,uint256) (runs: 256, μ: 537735, ~: 570885) SafeTransferLibTest:testPermit2() (gas: 88950) -SafeTransferLibTest:testPermit2InvalidAmount(uint256) (runs: 312, μ: 102081, ~: 102079) +SafeTransferLibTest:testPermit2InvalidAmount(uint256) (runs: 256, μ: 102086, ~: 102121) SafeTransferLibTest:testPermit2OnDAI() (gas: 89147) -SafeTransferLibTest:testPermit2TransferFromInvalidAmount(uint256) (runs: 312, μ: 135539, ~: 135892) +SafeTransferLibTest:testPermit2TransferFromInvalidAmount(uint256) (runs: 256, μ: 135550, ~: 135894) SafeTransferLibTest:testSimplePermit2AndPermit2TransferFrom() (gas: 1117812) SafeTransferLibTest:testSimplePermit2AndPermit2TransferFromGas() (gas: 139429) SafeTransferLibTest:testTransferAllETH() (gas: 34643) -SafeTransferLibTest:testTransferAllETH(bytes32) (runs: 312, μ: 57052, ~: 57052) +SafeTransferLibTest:testTransferAllETH(bytes32) (runs: 256, μ: 57052, ~: 57052) SafeTransferLibTest:testTransferAllETHToContractWithoutFallbackReverts() (gas: 10782) -SafeTransferLibTest:testTransferAllETHToContractWithoutFallbackReverts(uint256) (runs: 312, μ: 10869, ~: 10869) +SafeTransferLibTest:testTransferAllETHToContractWithoutFallbackReverts(uint256) (runs: 256, μ: 10869, ~: 10869) SafeTransferLibTest:testTransferAllFromWithStandardERC20() (gas: 33323) -SafeTransferLibTest:testTransferAllFromWithStandardERC20(address,address,uint256) (runs: 312, μ: 56738, ~: 56720) +SafeTransferLibTest:testTransferAllFromWithStandardERC20(address,address,uint256) (runs: 256, μ: 56741, ~: 56725) SafeTransferLibTest:testTransferAllWithStandardERC20() (gas: 30832) -SafeTransferLibTest:testTransferAllWithStandardERC20(address,uint256) (runs: 312, μ: 39342, ~: 39342) +SafeTransferLibTest:testTransferAllWithStandardERC20(address,uint256) (runs: 256, μ: 39342, ~: 39342) SafeTransferLibTest:testTransferETH() (gas: 34622) -SafeTransferLibTest:testTransferETH(bytes32,uint256) (runs: 312, μ: 56986, ~: 57320) +SafeTransferLibTest:testTransferETH(bytes32,uint256) (runs: 256, μ: 57018, ~: 57320) SafeTransferLibTest:testTransferETHToContractWithoutFallbackReverts() (gas: 10851) -SafeTransferLibTest:testTransferETHToContractWithoutFallbackReverts(uint256) (runs: 312, μ: 10720, ~: 10888) -SafeTransferLibTest:testTransferFromWithGarbageReverts(address,address,uint256) (runs: 312, μ: 801153, ~: 699300) +SafeTransferLibTest:testTransferETHToContractWithoutFallbackReverts(uint256) (runs: 256, μ: 10766, ~: 10888) +SafeTransferLibTest:testTransferFromWithGarbageReverts(address,address,uint256) (runs: 256, μ: 817409, ~: 699300) SafeTransferLibTest:testTransferFromWithMissingReturn() (gas: 564163) -SafeTransferLibTest:testTransferFromWithMissingReturn(address,address,uint256) (runs: 312, μ: 687038, ~: 564840) +SafeTransferLibTest:testTransferFromWithMissingReturn(address,address,uint256) (runs: 256, μ: 679078, ~: 564850) SafeTransferLibTest:testTransferFromWithNonContract() (gas: 3066) -SafeTransferLibTest:testTransferFromWithNonContract(address,address,address,uint256) (runs: 312, μ: 3840, ~: 3861) -SafeTransferLibTest:testTransferFromWithNonGarbage(address,address,uint256) (runs: 312, μ: 741645, ~: 615035) +SafeTransferLibTest:testTransferFromWithNonContract(address,address,address,uint256) (runs: 256, μ: 3836, ~: 3861) +SafeTransferLibTest:testTransferFromWithNonGarbage(address,address,uint256) (runs: 256, μ: 757186, ~: 615035) SafeTransferLibTest:testTransferFromWithReturnsFalseReverts() (gas: 530320) -SafeTransferLibTest:testTransferFromWithReturnsFalseReverts(address,address,uint256) (runs: 312, μ: 644254, ~: 530740) +SafeTransferLibTest:testTransferFromWithReturnsFalseReverts(address,address,uint256) (runs: 256, μ: 627027, ~: 530700) SafeTransferLibTest:testTransferFromWithReturnsTooLittleReverts() (gas: 530297) -SafeTransferLibTest:testTransferFromWithReturnsTooLittleReverts(address,address,uint256) (runs: 312, μ: 691363, ~: 530535) +SafeTransferLibTest:testTransferFromWithReturnsTooLittleReverts(address,address,uint256) (runs: 256, μ: 650659, ~: 530535) SafeTransferLibTest:testTransferFromWithReturnsTooMuch() (gas: 564800) -SafeTransferLibTest:testTransferFromWithReturnsTooMuch(address,address,uint256) (runs: 312, μ: 688404, ~: 565446) -SafeTransferLibTest:testTransferFromWithReturnsTwoReverts(address,address,uint256) (runs: 312, μ: 607617, ~: 530619) +SafeTransferLibTest:testTransferFromWithReturnsTooMuch(address,address,uint256) (runs: 256, μ: 705132, ~: 565302) +SafeTransferLibTest:testTransferFromWithReturnsTwoReverts(address,address,uint256) (runs: 256, μ: 589729, ~: 530629) SafeTransferLibTest:testTransferFromWithRevertingReverts() (gas: 523583) -SafeTransferLibTest:testTransferFromWithRevertingReverts(address,address,uint256) (runs: 312, μ: 596709, ~: 523730) +SafeTransferLibTest:testTransferFromWithRevertingReverts(address,address,uint256) (runs: 256, μ: 605497, ~: 523720) SafeTransferLibTest:testTransferFromWithStandardERC20() (gas: 562845) -SafeTransferLibTest:testTransferFromWithStandardERC20(address,address,uint256) (runs: 312, μ: 705628, ~: 562356) -SafeTransferLibTest:testTransferWithGarbageReverts(address,uint256) (runs: 312, μ: 722198, ~: 643692) +SafeTransferLibTest:testTransferFromWithStandardERC20(address,address,uint256) (runs: 256, μ: 726564, ~: 562386) +SafeTransferLibTest:testTransferWithGarbageReverts(address,uint256) (runs: 256, μ: 717207, ~: 642743) SafeTransferLibTest:testTransferWithMissingReturn() (gas: 550861) -SafeTransferLibTest:testTransferWithMissingReturn(address,uint256) (runs: 312, μ: 632993, ~: 551229) +SafeTransferLibTest:testTransferWithMissingReturn(address,uint256) (runs: 256, μ: 634050, ~: 551229) SafeTransferLibTest:testTransferWithNonContract() (gas: 3010) -SafeTransferLibTest:testTransferWithNonContract(bytes32,address,uint256) (runs: 312, μ: 25919, ~: 25919) -SafeTransferLibTest:testTransferWithNonGarbage(address,uint256) (runs: 312, μ: 666854, ~: 578440) +SafeTransferLibTest:testTransferWithNonContract(bytes32,address,uint256) (runs: 256, μ: 25919, ~: 25919) +SafeTransferLibTest:testTransferWithNonGarbage(address,uint256) (runs: 256, μ: 664535, ~: 578415) SafeTransferLibTest:testTransferWithReturnsFalseReverts() (gas: 527368) -SafeTransferLibTest:testTransferWithReturnsFalseReverts(address,uint256) (runs: 312, μ: 622986, ~: 527646) +SafeTransferLibTest:testTransferWithReturnsFalseReverts(address,uint256) (runs: 256, μ: 628043, ~: 527646) SafeTransferLibTest:testTransferWithReturnsTooLittleReverts() (gas: 527576) -SafeTransferLibTest:testTransferWithReturnsTooLittleReverts(address,uint256) (runs: 312, μ: 557842, ~: 527549) +SafeTransferLibTest:testTransferWithReturnsTooLittleReverts(address,uint256) (runs: 256, μ: 564470, ~: 527570) SafeTransferLibTest:testTransferWithReturnsTooMuch() (gas: 551262) -SafeTransferLibTest:testTransferWithReturnsTooMuch(address,uint256) (runs: 312, μ: 646867, ~: 551686) -SafeTransferLibTest:testTransferWithReturnsTwoReverts(address,uint256) (runs: 312, μ: 647668, ~: 527646) +SafeTransferLibTest:testTransferWithReturnsTooMuch(address,uint256) (runs: 256, μ: 666239, ~: 551686) +SafeTransferLibTest:testTransferWithReturnsTwoReverts(address,uint256) (runs: 256, μ: 659085, ~: 527646) SafeTransferLibTest:testTransferWithRevertingReverts() (gas: 527283) -SafeTransferLibTest:testTransferWithRevertingReverts(address,uint256) (runs: 312, μ: 663707, ~: 527582) +SafeTransferLibTest:testTransferWithRevertingReverts(address,uint256) (runs: 256, μ: 651820, ~: 527582) SafeTransferLibTest:testTransferWithStandardERC20() (gas: 551528) -SafeTransferLibTest:testTransferWithStandardERC20(address,uint256) (runs: 312, μ: 643191, ~: 551499) -SafeTransferLibTest:testTrySafeTransferFrom(address,address,uint256) (runs: 312, μ: 108520, ~: 111595) +SafeTransferLibTest:testTransferWithStandardERC20(address,uint256) (runs: 256, μ: 626102, ~: 551499) +SafeTransferLibTest:testTrySafeTransferFrom(address,address,uint256) (runs: 256, μ: 108582, ~: 111595) SafeTransferLibTest:testTryTransferAllETH() (gas: 148698) SafeTransferLibTest:testTryTransferETH() (gas: 148701) SafeTransferLibTest:testTryTransferETHWithNoGrief() (gas: 537025) @@ -1239,7 +1243,7 @@ SignatureCheckerLibTest:testERC6492PreDeploy() (gas: 1226946) SignatureCheckerLibTest:testERC6492WithoutRevertingVerifier() (gas: 61787) SignatureCheckerLibTest:testEmptyCalldataHelpers() (gas: 3987) SignatureCheckerLibTest:testEtchERC6492RevertingVerifier() (gas: 56459) -SignatureCheckerLibTest:testSignatureChecker(bytes32) (runs: 312, μ: 56173, ~: 45424) +SignatureCheckerLibTest:testSignatureChecker(bytes32) (runs: 256, μ: 55889, ~: 45424) SignatureCheckerLibTest:testSignatureCheckerOnEOAWithInvalidSignature() (gas: 21300) SignatureCheckerLibTest:testSignatureCheckerOnEOAWithInvalidSigner() (gas: 30800) SignatureCheckerLibTest:testSignatureCheckerOnEOAWithMatchingSignerAndSignature() (gas: 17697) @@ -1250,8 +1254,8 @@ SignatureCheckerLibTest:testSignatureCheckerOnWalletWithInvalidSigner() (gas: 25 SignatureCheckerLibTest:testSignatureCheckerOnWalletWithMatchingSignerAndSignature() (gas: 64518) SignatureCheckerLibTest:testSignatureCheckerOnWalletWithWrongSignedMessageHash() (gas: 64597) SignatureCheckerLibTest:testSignatureCheckerOnWalletWithZeroAddressSigner() (gas: 12364) -SignatureCheckerLibTest:testToEthSignedMessageHashDifferential(bytes) (runs: 312, μ: 1285, ~: 1284) -SignatureCheckerLibTest:testToEthSignedMessageHashDifferential(bytes32) (runs: 312, μ: 481, ~: 481) +SignatureCheckerLibTest:testToEthSignedMessageHashDifferential(bytes) (runs: 256, μ: 1284, ~: 1284) +SignatureCheckerLibTest:testToEthSignedMessageHashDifferential(bytes32) (runs: 256, μ: 481, ~: 481) SignatureCheckerLibTest:test__codesize() (gas: 15454) SoladyTest:test__codesize() (gas: 840) TestPlus:test__codesize() (gas: 406) @@ -1267,7 +1271,7 @@ UUPSUpgradeableTest:testUpgradeToRevertWithUpgradeFailed() (gas: 18583) UUPSUpgradeableTest:test__codesize() (gas: 6048) UpgradeableBeaconTest:testInitializeUpgradeableSolidityBeacon() (gas: 296434) UpgradeableBeaconTest:testInitializeUpgradeableYulBeacon() (gas: 335455) -UpgradeableBeaconTest:testUpgradeableBeacon(uint256) (runs: 312, μ: 245942, ~: 255829) +UpgradeableBeaconTest:testUpgradeableBeacon(uint256) (runs: 256, μ: 246873, ~: 255829) UpgradeableBeaconTest:testUpgradeableSolidityBeaconOnlyFnSelectorNotRecognised() (gas: 234560) UpgradeableBeaconTest:testUpgradeableSolidityBeaconOnlyOwnerFunctions() (gas: 260339) UpgradeableBeaconTest:testUpgradeableYulBeaconOnlyFnSelectorNotRecognised() (gas: 172796) @@ -1276,12 +1280,12 @@ UpgradeableBeaconTest:test__codesize() (gas: 8511) WETHInvariants:invariantTotalSupplyEqualsBalance() (runs: 10, calls: 150, reverts: 74) WETHInvariants:test__codesize() (gas: 5178) WETHTest:testDeposit() (gas: 62272) -WETHTest:testDeposit(uint256) (runs: 312, μ: 61443, ~: 62566) +WETHTest:testDeposit(uint256) (runs: 256, μ: 61908, ~: 62566) WETHTest:testFallbackDeposit() (gas: 61978) -WETHTest:testFallbackDeposit(uint256) (runs: 312, μ: 61104, ~: 62227) +WETHTest:testFallbackDeposit(uint256) (runs: 256, μ: 61569, ~: 62227) WETHTest:testMetadata() (gas: 9013) WETHTest:testPartialWithdraw() (gas: 70422) WETHTest:testWithdraw() (gas: 52047) -WETHTest:testWithdraw(uint256,uint256) (runs: 312, μ: 69912, ~: 71175) +WETHTest:testWithdraw(uint256,uint256) (runs: 256, μ: 70547, ~: 71175) WETHTest:testWithdrawToContractWithoutReceiveReverts() (gas: 90164) WETHTest:test__codesize() (gas: 9410) \ No newline at end of file diff --git a/.gitignore b/.gitignore index 015656002..951931cf6 100644 --- a/.gitignore +++ b/.gitignore @@ -21,6 +21,9 @@ out/ # Ignore all jetbrain settings .idea/ +# Ignore all notes +notes/ + # Ignore flattened files flattened.txt diff --git a/src/utils/ECDSA.sol b/src/utils/ECDSA.sol index 9729cff9e..c29fcd531 100644 --- a/src/utils/ECDSA.sol +++ b/src/utils/ECDSA.sol @@ -23,6 +23,17 @@ pragma solidity ^0.8.4; /// EIP-712 also enables readable signing of typed data for better user safety. /// This implementation does NOT check if a signature is non-malleable. library ECDSA { + /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ + /* CONSTANTS */ + /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/ + + /// @dev The order of the `secp256k1` elliptic curve. + bytes32 private constant N = 0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141; + + /// @dev The value is half of the `secp256k1n`, used for checking signature malleability (N/2). + bytes32 private constant N_2 = + 0x7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0; + /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ /* CUSTOM ERRORS */ /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/ @@ -397,6 +408,68 @@ library ECDSA { } } + /// @dev Returns an canonical hash of 65 bytes signature. + /// If signature is 64 bytes format then it is convert into 65-bytes. + /// If `s` is greater than `secp256k1n/2` then it is convet into `secp256k1n/2 - s` + /// and flips the `v` value. + /// Note : Signature format must be `65 bytes` or `64 bytes` format else behavier is undefined. + function canonicalHash(bytes memory sig) internal pure returns (bytes32 result) { + // @solidity memory-safe-assembly + assembly { + for { let s := mload(add(sig, 0x40)) } 1 {} { + mstore(0x00, mload(add(sig, 0x20))) + if iszero(eq(mload(sig), 64)) { + let c := gt(s, N_2) // Checks `s > N/2`. + + // Replace `s` with `N - s` if `c` is ture. + mstore(0x20, add(mul(c, sub(N, s)), mul(iszero(c), s))) + + // Flip `v` value if `s > N/2` + mstore8(0x40, xor(mul(c, 7), byte(0, mload(add(sig, 0x60))))) + break + } + + mstore(0x20, s) + let s0 := byte(0, s) + mstore8(0x20, and(s0, 0x7f)) + mstore8(0x40, add(27, shr(7, s0))) + break + } + + result := keccak256(0x00, 0x41) + mstore(0x21, 0) // restore memory pointer + } + } + + /// @dev Returns an canonical hash of 65 bytes calldata signature. + /// If signature is 64 bytes format then it is convert into 65-bytes. + /// If `s` is greater than `secp256k1n/2` then it is convet into `secp256k1n - s` + /// and flips the `v` value. + /// Note : Signature format must be `65 bytes` or `64 bytes` format else behavier is undefined. + function canonicalHashCalldata(bytes calldata sig) internal pure returns (bytes32 result) { + // @solidity memory-safe-assembly + assembly { + for { let s := calldataload(add(sig.offset, 0x20)) } 1 {} { + mstore(0x00, calldataload(sig.offset)) + if iszero(eq(sig.length, 64)) { + let c := gt(s, N_2) // Checks `s` > `N/2`. + // Replace `s` with `N - s` if `c` is ture. + mstore(0x20, add(mul(c, sub(N, s)), mul(iszero(c), s))) + mstore8(0x40, xor(mul(c, 7), byte(0, calldataload(add(sig.offset, 0x40))))) + break + } + + mstore(0x20, s) + let s0 := byte(0, s) + mstore8(0x20, and(s0, 0x7f)) + mstore8(0x40, add(27, shr(7, s0))) + break + } + result := keccak256(0x00, 0x41) + mstore(0x21, 0) // restore memory pointer + } + } + /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ /* EMPTY CALLDATA HELPERS */ /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/ diff --git a/test/ECDSA.t.sol b/test/ECDSA.t.sol index 3f6307f59..31a44ea48 100644 --- a/test/ECDSA.t.sol +++ b/test/ECDSA.t.sol @@ -446,6 +446,67 @@ contract ECDSATest is SoladyTest { return ECDSA.recover(hash, v, r, s); } + function testCanonicalHashWithRegularSignature() public brutalizeMemory { + bytes memory signature = + hex"8688e590483917863a35ef230c0f839be8418aa4ee765228eddfcea7fe2652815db01c2c84b0ec746e1b74d97475c599b3d3419fa7181b4e01de62c02b721aea1b"; + assertEq(ECDSA.canonicalHash(signature), keccak256(signature)); + signature = + hex"8688e590483917863a35ef230c0f839be8418aa4ee765228eddfcea7fe2652815db01c2c84b0ec746e1b74d97475c599b3d3419fa7181b4e01de62c02b721aea1c"; + assertEq(ECDSA.canonicalHash(signature), keccak256(signature)); + } + + function testCanonicalHashWith64bytesSignature() public brutalizeMemory { + bytes memory signature = + hex"8688e590483917863a35ef230c0f839be8418aa4ee765228eddfcea7fe2652815db01c2c84b0ec746e1b74d97475c599b3d3419fa7181b4e01de62c02b721aea1b"; + bytes memory shortsignature = + hex"8688e590483917863a35ef230c0f839be8418aa4ee765228eddfcea7fe2652815db01c2c84b0ec746e1b74d97475c599b3d3419fa7181b4e01de62c02b721aea"; + + assertEq(ECDSA.canonicalHash(shortsignature), keccak256(signature)); + signature = + hex"8688e590483917863a35ef230c0f839be8418aa4ee765228eddfcea7fe2652815db01c2c84b0ec746e1b74d97475c599b3d3419fa7181b4e01de62c02b721aea1c"; + shortsignature = + hex"8688e590483917863a35ef230c0f839be8418aa4ee765228eddfcea7fe265281ddb01c2c84b0ec746e1b74d97475c599b3d3419fa7181b4e01de62c02b721aea"; + + assertEq(ECDSA.canonicalHash(shortsignature), keccak256(signature)); + } + + function testCanonicalHashCalldataWithRegularSignature() public { + bytes memory signature = + hex"8688e590483917863a35ef230c0f839be8418aa4ee765228eddfcea7fe2652815db01c2c84b0ec746e1b74d97475c599b3d3419fa7181b4e01de62c02b721aea1b"; + assertEq(this.canonicalHashCalldata(signature), keccak256(signature)); + assertEq(this.canonicalHashCalldataBrutalizeMemory(signature), keccak256(signature)); + signature = + hex"8688e590483917863a35ef230c0f839be8418aa4ee765228eddfcea7fe2652815db01c2c84b0ec746e1b74d97475c599b3d3419fa7181b4e01de62c02b721aea1c"; + assertEq(this.canonicalHashCalldata(signature), keccak256(signature)); + assertEq(this.canonicalHashCalldataBrutalizeMemory(signature), keccak256(signature)); + } + + function testCanonicalHashCalldataWith64bytesSignature() public { + bytes memory signature = + hex"8688e590483917863a35ef230c0f839be8418aa4ee765228eddfcea7fe2652815db01c2c84b0ec746e1b74d97475c599b3d3419fa7181b4e01de62c02b721aea1b"; + bytes memory shortsignature = + hex"8688e590483917863a35ef230c0f839be8418aa4ee765228eddfcea7fe2652815db01c2c84b0ec746e1b74d97475c599b3d3419fa7181b4e01de62c02b721aea"; + + assertEq(this.canonicalHashCalldata(shortsignature), keccak256(signature)); + assertEq(this.canonicalHashCalldataBrutalizeMemory(shortsignature), keccak256(signature)); + signature = + hex"8688e590483917863a35ef230c0f839be8418aa4ee765228eddfcea7fe2652815db01c2c84b0ec746e1b74d97475c599b3d3419fa7181b4e01de62c02b721aea1c"; + shortsignature = + hex"8688e590483917863a35ef230c0f839be8418aa4ee765228eddfcea7fe265281ddb01c2c84b0ec746e1b74d97475c599b3d3419fa7181b4e01de62c02b721aea"; + + assertEq(this.canonicalHashCalldata(shortsignature), keccak256(signature)); + assertEq(this.canonicalHashCalldataBrutalizeMemory(shortsignature), keccak256(signature)); + + } + + + function canonicalHashCalldata(bytes calldata siganture) external pure returns(bytes32) { + return ECDSA.canonicalHashCalldata(siganture); + } + + function canonicalHashCalldataBrutalizeMemory(bytes calldata siganture) external view brutalizeMemory returns(bytes32) { + return ECDSA.canonicalHashCalldata(siganture); + } function testEmptyCalldataHelpers() public { assertFalse(ECDSA.tryRecover(bytes32(0), ECDSA.emptySignature()) == address(1)); } From 43a8ffa306d32a35cc45f305d4a38a44e021096f Mon Sep 17 00:00:00 2001 From: atarpara Date: Wed, 14 Aug 2024 15:22:57 +0530 Subject: [PATCH 02/11] Fix Typo --- .gas-snapshot | 4 ++-- src/utils/ECDSA.sol | 8 ++++---- test/ECDSA.t.sol | 16 ++++++++++------ 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/.gas-snapshot b/.gas-snapshot index 7b2340acf..8df6eff2f 100644 --- a/.gas-snapshot +++ b/.gas-snapshot @@ -98,7 +98,7 @@ ECDSATest:testCanonicalHashCalldataWithRegularSignature() (gas: 1244964) ECDSATest:testCanonicalHashWith64bytesSignature() (gas: 620786) ECDSATest:testCanonicalHashWithRegularSignature() (gas: 620405) ECDSATest:testEmptyCalldataHelpers() (gas: 3246) -ECDSATest:testRecoverAndTryRecover(bytes32) (runs: 256, μ: 2777513, ~: 2558964) +ECDSATest:testRecoverAndTryRecover(bytes32) (runs: 256, μ: 2780596, ~: 2558964) ECDSATest:testRecoverWithInvalidLongSignatureReverts() (gas: 7373) ECDSATest:testRecoverWithInvalidShortSignatureReturnsZero() (gas: 7209) ECDSATest:testRecoverWithInvalidSignatureReverts() (gas: 7996) @@ -1243,7 +1243,7 @@ SignatureCheckerLibTest:testERC6492PreDeploy() (gas: 1226946) SignatureCheckerLibTest:testERC6492WithoutRevertingVerifier() (gas: 61787) SignatureCheckerLibTest:testEmptyCalldataHelpers() (gas: 3987) SignatureCheckerLibTest:testEtchERC6492RevertingVerifier() (gas: 56459) -SignatureCheckerLibTest:testSignatureChecker(bytes32) (runs: 256, μ: 55889, ~: 45424) +SignatureCheckerLibTest:testSignatureChecker(bytes32) (runs: 256, μ: 55599, ~: 45424) SignatureCheckerLibTest:testSignatureCheckerOnEOAWithInvalidSignature() (gas: 21300) SignatureCheckerLibTest:testSignatureCheckerOnEOAWithInvalidSigner() (gas: 30800) SignatureCheckerLibTest:testSignatureCheckerOnEOAWithMatchingSignerAndSignature() (gas: 17697) diff --git a/src/utils/ECDSA.sol b/src/utils/ECDSA.sol index c29fcd531..44f4e7b34 100644 --- a/src/utils/ECDSA.sol +++ b/src/utils/ECDSA.sol @@ -410,7 +410,7 @@ library ECDSA { /// @dev Returns an canonical hash of 65 bytes signature. /// If signature is 64 bytes format then it is convert into 65-bytes. - /// If `s` is greater than `secp256k1n/2` then it is convet into `secp256k1n/2 - s` + /// If `s` is greater than `secp256k1n/2` then it is convert into `secp256k1n/2 - s` /// and flips the `v` value. /// Note : Signature format must be `65 bytes` or `64 bytes` format else behavier is undefined. function canonicalHash(bytes memory sig) internal pure returns (bytes32 result) { @@ -421,7 +421,7 @@ library ECDSA { if iszero(eq(mload(sig), 64)) { let c := gt(s, N_2) // Checks `s > N/2`. - // Replace `s` with `N - s` if `c` is ture. + // Replace `s` with `N - s` if `c` is true. mstore(0x20, add(mul(c, sub(N, s)), mul(iszero(c), s))) // Flip `v` value if `s > N/2` @@ -443,7 +443,7 @@ library ECDSA { /// @dev Returns an canonical hash of 65 bytes calldata signature. /// If signature is 64 bytes format then it is convert into 65-bytes. - /// If `s` is greater than `secp256k1n/2` then it is convet into `secp256k1n - s` + /// If `s` is greater than `secp256k1n/2` then it is convert into `secp256k1n - s` /// and flips the `v` value. /// Note : Signature format must be `65 bytes` or `64 bytes` format else behavier is undefined. function canonicalHashCalldata(bytes calldata sig) internal pure returns (bytes32 result) { @@ -453,7 +453,7 @@ library ECDSA { mstore(0x00, calldataload(sig.offset)) if iszero(eq(sig.length, 64)) { let c := gt(s, N_2) // Checks `s` > `N/2`. - // Replace `s` with `N - s` if `c` is ture. + // Replace `s` with `N - s` if `c` is true. mstore(0x20, add(mul(c, sub(N, s)), mul(iszero(c), s))) mstore8(0x40, xor(mul(c, 7), byte(0, calldataload(add(sig.offset, 0x40))))) break diff --git a/test/ECDSA.t.sol b/test/ECDSA.t.sol index 31a44ea48..6b676cf56 100644 --- a/test/ECDSA.t.sol +++ b/test/ECDSA.t.sol @@ -496,17 +496,21 @@ contract ECDSATest is SoladyTest { assertEq(this.canonicalHashCalldata(shortsignature), keccak256(signature)); assertEq(this.canonicalHashCalldataBrutalizeMemory(shortsignature), keccak256(signature)); - } - - function canonicalHashCalldata(bytes calldata siganture) external pure returns(bytes32) { - return ECDSA.canonicalHashCalldata(siganture); + function canonicalHashCalldata(bytes calldata signature) external pure returns (bytes32) { + return ECDSA.canonicalHashCalldata(signature); } - function canonicalHashCalldataBrutalizeMemory(bytes calldata siganture) external view brutalizeMemory returns(bytes32) { - return ECDSA.canonicalHashCalldata(siganture); + function canonicalHashCalldataBrutalizeMemory(bytes calldata signature) + external + view + brutalizeMemory + returns (bytes32) + { + return ECDSA.canonicalHashCalldata(signature); } + function testEmptyCalldataHelpers() public { assertFalse(ECDSA.tryRecover(bytes32(0), ECDSA.emptySignature()) == address(1)); } From 1c7722b903d13f2f42a84ee996a17e5012258e33 Mon Sep 17 00:00:00 2001 From: atarpara Date: Wed, 14 Aug 2024 16:39:44 +0530 Subject: [PATCH 03/11] Tidy --- .gas-snapshot | 87 +++++++++++++++++++++++---------------------- src/utils/ECDSA.sol | 22 ++++++------ test/ECDSA.t.sol | 45 ++++++++++++++++------- 3 files changed, 87 insertions(+), 67 deletions(-) diff --git a/.gas-snapshot b/.gas-snapshot index 8df6eff2f..8e34e9218 100644 --- a/.gas-snapshot +++ b/.gas-snapshot @@ -87,49 +87,50 @@ DynamicBufferLibTest:testDynamicBufferReserveFromEmpty3(bytes,uint256) (runs: 25 DynamicBufferLibTest:testJoinWithConcat() (gas: 31429) DynamicBufferLibTest:testJoinWithDynamicBuffer() (gas: 10830) DynamicBufferLibTest:test__codesize() (gas: 12662) -ECDSATest:testBytes32ToEthSignedMessageHash() (gas: 403) -ECDSATest:testBytesToEthSignedMessageHash() (gas: 11587201) +ECDSATest:testBytes32ToEthSignedMessageHash() (gas: 425) +ECDSATest:testBytesToEthSignedMessageHash() (gas: 11589491) ECDSATest:testBytesToEthSignedMessageHashEmpty() (gas: 578) -ECDSATest:testBytesToEthSignedMessageHashExceedsMaxLengthReverts() (gas: 621735) -ECDSATest:testBytesToEthSignedMessageHashLong() (gas: 703) -ECDSATest:testBytesToEthSignedMessageHashShort() (gas: 642) -ECDSATest:testCanonicalHashCalldataWith64bytesSignature() (gas: 1246452) -ECDSATest:testCanonicalHashCalldataWithRegularSignature() (gas: 1244964) -ECDSATest:testCanonicalHashWith64bytesSignature() (gas: 620786) -ECDSATest:testCanonicalHashWithRegularSignature() (gas: 620405) -ECDSATest:testEmptyCalldataHelpers() (gas: 3246) -ECDSATest:testRecoverAndTryRecover(bytes32) (runs: 256, μ: 2780596, ~: 2558964) -ECDSATest:testRecoverWithInvalidLongSignatureReverts() (gas: 7373) -ECDSATest:testRecoverWithInvalidShortSignatureReturnsZero() (gas: 7209) -ECDSATest:testRecoverWithInvalidSignatureReverts() (gas: 7996) -ECDSATest:testRecoverWithV0SignatureWithShortEIP2098Format() (gas: 4611) -ECDSATest:testRecoverWithV0SignatureWithShortEIP2098FormatAsCalldata() (gas: 8687) -ECDSATest:testRecoverWithV0SignatureWithVersion00Reverts() (gas: 7961) -ECDSATest:testRecoverWithV0SignatureWithVersion27() (gas: 8875) -ECDSATest:testRecoverWithV0SignatureWithWrongVersionReverts() (gas: 7939) -ECDSATest:testRecoverWithV1SignatureWithShortEIP2098Format() (gas: 4567) -ECDSATest:testRecoverWithV1SignatureWithShortEIP2098FormatAsCalldata() (gas: 8685) -ECDSATest:testRecoverWithV1SignatureWithVersion01Reverts() (gas: 7973) -ECDSATest:testRecoverWithV1SignatureWithVersion28() (gas: 8876) -ECDSATest:testRecoverWithV1SignatureWithWrongVersionReverts() (gas: 7940) -ECDSATest:testRecoverWithValidSignature() (gas: 8913) -ECDSATest:testRecoverWithWrongSigner() (gas: 8892) -ECDSATest:testTryRecoverWithInvalidLongSignatureReturnsZero() (gas: 5286) -ECDSATest:testTryRecoverWithInvalidShortSignatureReturnsZero() (gas: 5090) -ECDSATest:testTryRecoverWithInvalidSignature() (gas: 8965) -ECDSATest:testTryRecoverWithV0SignatureWithShortEIP2098Format() (gas: 4533) -ECDSATest:testTryRecoverWithV0SignatureWithShortEIP2098FormatAsCalldata() (gas: 8754) -ECDSATest:testTryRecoverWithV0SignatureWithVersion00ReturnsZero() (gas: 8872) -ECDSATest:testTryRecoverWithV0SignatureWithVersion27() (gas: 8895) -ECDSATest:testTryRecoverWithV0SignatureWithWrongVersionReturnsZero() (gas: 8895) -ECDSATest:testTryRecoverWithV1SignatureWithShortEIP2098Format() (gas: 4565) -ECDSATest:testTryRecoverWithV1SignatureWithShortEIP2098FormatAsCalldata() (gas: 8776) -ECDSATest:testTryRecoverWithV1SignatureWithVersion01ReturnsZero() (gas: 8830) -ECDSATest:testTryRecoverWithV1SignatureWithVersion28() (gas: 8895) -ECDSATest:testTryRecoverWithV1SignatureWithWrongVersionReturnsZero() (gas: 8894) -ECDSATest:testTryRecoverWithValidSignature() (gas: 8964) -ECDSATest:testTryRecoverWithWrongSigner() (gas: 8890) -ECDSATest:test__codesize() (gas: 15684) +ECDSATest:testBytesToEthSignedMessageHashExceedsMaxLengthReverts() (gas: 630145) +ECDSATest:testBytesToEthSignedMessageHashLong() (gas: 725) +ECDSATest:testBytesToEthSignedMessageHashShort() (gas: 576) +ECDSATest:testCanonicalHashCalldataWith64bytesSignature() (gas: 1263211) +ECDSATest:testCanonicalHashCalldataWithRegularSignature() (gas: 1262990) +ECDSATest:testCanonicalHashWith64bytesSignature() (gas: 628796) +ECDSATest:testCanonicalHashWithIncorrectLengthSignature() (gas: 1263321) +ECDSATest:testCanonicalHashWithRegularSignature() (gas: 628712) +ECDSATest:testEmptyCalldataHelpers() (gas: 3201) +ECDSATest:testRecoverAndTryRecover(bytes32) (runs: 256, μ: 2935840, ~: 2592929) +ECDSATest:testRecoverWithInvalidLongSignatureReverts() (gas: 7417) +ECDSATest:testRecoverWithInvalidShortSignatureReturnsZero() (gas: 7253) +ECDSATest:testRecoverWithInvalidSignatureReverts() (gas: 8040) +ECDSATest:testRecoverWithV0SignatureWithShortEIP2098Format() (gas: 4566) +ECDSATest:testRecoverWithV0SignatureWithShortEIP2098FormatAsCalldata() (gas: 8731) +ECDSATest:testRecoverWithV0SignatureWithVersion00Reverts() (gas: 8005) +ECDSATest:testRecoverWithV0SignatureWithVersion27() (gas: 8897) +ECDSATest:testRecoverWithV0SignatureWithWrongVersionReverts() (gas: 7983) +ECDSATest:testRecoverWithV1SignatureWithShortEIP2098Format() (gas: 4522) +ECDSATest:testRecoverWithV1SignatureWithShortEIP2098FormatAsCalldata() (gas: 8707) +ECDSATest:testRecoverWithV1SignatureWithVersion01Reverts() (gas: 7928) +ECDSATest:testRecoverWithV1SignatureWithVersion28() (gas: 8920) +ECDSATest:testRecoverWithV1SignatureWithWrongVersionReverts() (gas: 7984) +ECDSATest:testRecoverWithValidSignature() (gas: 8935) +ECDSATest:testRecoverWithWrongSigner() (gas: 8914) +ECDSATest:testTryRecoverWithInvalidLongSignatureReturnsZero() (gas: 5263) +ECDSATest:testTryRecoverWithInvalidShortSignatureReturnsZero() (gas: 5112) +ECDSATest:testTryRecoverWithInvalidSignature() (gas: 8987) +ECDSATest:testTryRecoverWithV0SignatureWithShortEIP2098Format() (gas: 4577) +ECDSATest:testTryRecoverWithV0SignatureWithShortEIP2098FormatAsCalldata() (gas: 8798) +ECDSATest:testTryRecoverWithV0SignatureWithVersion00ReturnsZero() (gas: 8894) +ECDSATest:testTryRecoverWithV0SignatureWithVersion27() (gas: 8850) +ECDSATest:testTryRecoverWithV0SignatureWithWrongVersionReturnsZero() (gas: 8851) +ECDSATest:testTryRecoverWithV1SignatureWithShortEIP2098Format() (gas: 4522) +ECDSATest:testTryRecoverWithV1SignatureWithShortEIP2098FormatAsCalldata() (gas: 8820) +ECDSATest:testTryRecoverWithV1SignatureWithVersion01ReturnsZero() (gas: 8874) +ECDSATest:testTryRecoverWithV1SignatureWithVersion28() (gas: 8851) +ECDSATest:testTryRecoverWithV1SignatureWithWrongVersionReturnsZero() (gas: 8916) +ECDSATest:testTryRecoverWithValidSignature() (gas: 8921) +ECDSATest:testTryRecoverWithWrongSigner() (gas: 8934) +ECDSATest:test__codesize() (gas: 16266) EIP712Test:testDomainSeparator() (gas: 6048) EIP712Test:testDomainSeparatorOnClone() (gas: 8842) EIP712Test:testDomainSeparatorOnCloneDynamicWithChainIdChange() (gas: 69580) @@ -1243,7 +1244,7 @@ SignatureCheckerLibTest:testERC6492PreDeploy() (gas: 1226946) SignatureCheckerLibTest:testERC6492WithoutRevertingVerifier() (gas: 61787) SignatureCheckerLibTest:testEmptyCalldataHelpers() (gas: 3987) SignatureCheckerLibTest:testEtchERC6492RevertingVerifier() (gas: 56459) -SignatureCheckerLibTest:testSignatureChecker(bytes32) (runs: 256, μ: 55599, ~: 45424) +SignatureCheckerLibTest:testSignatureChecker(bytes32) (runs: 256, μ: 56375, ~: 51401) SignatureCheckerLibTest:testSignatureCheckerOnEOAWithInvalidSignature() (gas: 21300) SignatureCheckerLibTest:testSignatureCheckerOnEOAWithInvalidSigner() (gas: 30800) SignatureCheckerLibTest:testSignatureCheckerOnEOAWithMatchingSignerAndSignature() (gas: 17697) diff --git a/src/utils/ECDSA.sol b/src/utils/ECDSA.sol index 44f4e7b34..2f4fa05c3 100644 --- a/src/utils/ECDSA.sol +++ b/src/utils/ECDSA.sol @@ -410,18 +410,18 @@ library ECDSA { /// @dev Returns an canonical hash of 65 bytes signature. /// If signature is 64 bytes format then it is convert into 65-bytes. - /// If `s` is greater than `secp256k1n/2` then it is convert into `secp256k1n/2 - s` + /// If `s` is greater than `secp256k1n/2` then it is convert into `secp256k1n - s` /// and flips the `v` value. - /// Note : Signature format must be `65 bytes` or `64 bytes` format else behavier is undefined. + /// Note : If signature length is not equal `65 bytes` or `64 bytes` it will return corrupt hash. function canonicalHash(bytes memory sig) internal pure returns (bytes32 result) { // @solidity memory-safe-assembly assembly { for { let s := mload(add(sig, 0x40)) } 1 {} { mstore(0x00, mload(add(sig, 0x20))) - if iszero(eq(mload(sig), 64)) { - let c := gt(s, N_2) // Checks `s > N/2`. - // Replace `s` with `N - s` if `c` is true. + if iszero(eq(mload(sig), 64)) { + let c := gt(s, N_2) + // Replace `s` with `N - s` if `s > N/2`. mstore(0x20, add(mul(c, sub(N, s)), mul(iszero(c), s))) // Flip `v` value if `s > N/2` @@ -435,8 +435,7 @@ library ECDSA { mstore8(0x40, add(27, shr(7, s0))) break } - - result := keccak256(0x00, 0x41) + result := keccak256(0x00, add(0x41, gt(sub(mload(sig), 64), 1))) mstore(0x21, 0) // restore memory pointer } } @@ -445,15 +444,16 @@ library ECDSA { /// If signature is 64 bytes format then it is convert into 65-bytes. /// If `s` is greater than `secp256k1n/2` then it is convert into `secp256k1n - s` /// and flips the `v` value. - /// Note : Signature format must be `65 bytes` or `64 bytes` format else behavier is undefined. + /// Note : If signature length is not equal `65 bytes` or `64 bytes` it will return corrupt hash. function canonicalHashCalldata(bytes calldata sig) internal pure returns (bytes32 result) { // @solidity memory-safe-assembly assembly { for { let s := calldataload(add(sig.offset, 0x20)) } 1 {} { mstore(0x00, calldataload(sig.offset)) + if iszero(eq(sig.length, 64)) { - let c := gt(s, N_2) // Checks `s` > `N/2`. - // Replace `s` with `N - s` if `c` is true. + let c := gt(s, N_2) + // Replace `s` with `N - s` if `s` > `N/2`. mstore(0x20, add(mul(c, sub(N, s)), mul(iszero(c), s))) mstore8(0x40, xor(mul(c, 7), byte(0, calldataload(add(sig.offset, 0x40))))) break @@ -465,7 +465,7 @@ library ECDSA { mstore8(0x40, add(27, shr(7, s0))) break } - result := keccak256(0x00, 0x41) + result := keccak256(0x00, add(0x41, gt(sub(sig.length, 64), 1))) mstore(0x21, 0) // restore memory pointer } } diff --git a/test/ECDSA.t.sol b/test/ECDSA.t.sol index 6b676cf56..72ad46cb9 100644 --- a/test/ECDSA.t.sol +++ b/test/ECDSA.t.sol @@ -450,9 +450,9 @@ contract ECDSATest is SoladyTest { bytes memory signature = hex"8688e590483917863a35ef230c0f839be8418aa4ee765228eddfcea7fe2652815db01c2c84b0ec746e1b74d97475c599b3d3419fa7181b4e01de62c02b721aea1b"; assertEq(ECDSA.canonicalHash(signature), keccak256(signature)); - signature = - hex"8688e590483917863a35ef230c0f839be8418aa4ee765228eddfcea7fe2652815db01c2c84b0ec746e1b74d97475c599b3d3419fa7181b4e01de62c02b721aea1c"; - assertEq(ECDSA.canonicalHash(signature), keccak256(signature)); + bytes memory signature_malleable = + hex"8688e590483917863a35ef230c0f839be8418aa4ee765228eddfcea7fe265281a24fe3d37b4f138b91e48b268b8a3a6506db9b47083084edbdf3fbcca4c426571c"; + assertEq(ECDSA.canonicalHash(signature_malleable), keccak256(signature)); } function testCanonicalHashWith64bytesSignature() public brutalizeMemory { @@ -462,12 +462,6 @@ contract ECDSATest is SoladyTest { hex"8688e590483917863a35ef230c0f839be8418aa4ee765228eddfcea7fe2652815db01c2c84b0ec746e1b74d97475c599b3d3419fa7181b4e01de62c02b721aea"; assertEq(ECDSA.canonicalHash(shortsignature), keccak256(signature)); - signature = - hex"8688e590483917863a35ef230c0f839be8418aa4ee765228eddfcea7fe2652815db01c2c84b0ec746e1b74d97475c599b3d3419fa7181b4e01de62c02b721aea1c"; - shortsignature = - hex"8688e590483917863a35ef230c0f839be8418aa4ee765228eddfcea7fe265281ddb01c2c84b0ec746e1b74d97475c599b3d3419fa7181b4e01de62c02b721aea"; - - assertEq(ECDSA.canonicalHash(shortsignature), keccak256(signature)); } function testCanonicalHashCalldataWithRegularSignature() public { @@ -475,10 +469,14 @@ contract ECDSATest is SoladyTest { hex"8688e590483917863a35ef230c0f839be8418aa4ee765228eddfcea7fe2652815db01c2c84b0ec746e1b74d97475c599b3d3419fa7181b4e01de62c02b721aea1b"; assertEq(this.canonicalHashCalldata(signature), keccak256(signature)); assertEq(this.canonicalHashCalldataBrutalizeMemory(signature), keccak256(signature)); - signature = - hex"8688e590483917863a35ef230c0f839be8418aa4ee765228eddfcea7fe2652815db01c2c84b0ec746e1b74d97475c599b3d3419fa7181b4e01de62c02b721aea1c"; - assertEq(this.canonicalHashCalldata(signature), keccak256(signature)); - assertEq(this.canonicalHashCalldataBrutalizeMemory(signature), keccak256(signature)); + + bytes memory signature_malleable = + hex"8688e590483917863a35ef230c0f839be8418aa4ee765228eddfcea7fe265281a24fe3d37b4f138b91e48b268b8a3a6506db9b47083084edbdf3fbcca4c426571c"; + + assertEq(this.canonicalHashCalldata(signature_malleable), keccak256(signature)); + assertEq( + this.canonicalHashCalldataBrutalizeMemory(signature_malleable), keccak256(signature) + ); } function testCanonicalHashCalldataWith64bytesSignature() public { @@ -498,6 +496,27 @@ contract ECDSATest is SoladyTest { assertEq(this.canonicalHashCalldataBrutalizeMemory(shortsignature), keccak256(signature)); } + function testCanonicalHashWithIncorrectLengthSignature() public { + bytes memory longsignature = + hex"8688e590483917863a35ef230c0f839be8418aa4ee765228eddfcea7fe2652815db01c2c84b0ec746e1b74d97475c599b3d3419fa7181b4e01de62c02b721aea1b65"; + bytes memory signature = + hex"8688e590483917863a35ef230c0f839be8418aa4ee765228eddfcea7fe2652815db01c2c84b0ec746e1b74d97475c599b3d3419fa7181b4e01de62c02b721aea1b"; + + assertNotEq(ECDSA.canonicalHash(longsignature), keccak256(signature)); + assertNotEq(this.canonicalHashCalldata(longsignature), keccak256(signature)); + assertNotEq(this.canonicalHashCalldataBrutalizeMemory(longsignature), keccak256(signature)); + + bytes memory shortsignature = + hex"8688e590483917863a35ef230c0f839be8418aa4ee765228eddfcea7fe2652815db01c2c84b0ec746e1b74d97475c599b3d3419fa7181b4e01de62c02b721aea"; + + assembly { + mstore(shortsignature, 63) // corrupt memory length + } + assertNotEq(ECDSA.canonicalHash(shortsignature), keccak256(signature)); + assertNotEq(this.canonicalHashCalldata(shortsignature), keccak256(signature)); + assertNotEq(this.canonicalHashCalldataBrutalizeMemory(shortsignature), keccak256(signature)); + } + function canonicalHashCalldata(bytes calldata signature) external pure returns (bytes32) { return ECDSA.canonicalHashCalldata(signature); } From 315c952df7274806e7b93c3e4fbe8fc14dc4794d Mon Sep 17 00:00:00 2001 From: atarpara Date: Wed, 14 Aug 2024 16:45:47 +0530 Subject: [PATCH 04/11] Fix Typo --- src/utils/ECDSA.sol | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/utils/ECDSA.sol b/src/utils/ECDSA.sol index 2f4fa05c3..57dc15dc3 100644 --- a/src/utils/ECDSA.sol +++ b/src/utils/ECDSA.sol @@ -436,7 +436,7 @@ library ECDSA { break } result := keccak256(0x00, add(0x41, gt(sub(mload(sig), 64), 1))) - mstore(0x21, 0) // restore memory pointer + mstore(0x21, 0) // Restore free memory pointer } } @@ -466,7 +466,7 @@ library ECDSA { break } result := keccak256(0x00, add(0x41, gt(sub(sig.length, 64), 1))) - mstore(0x21, 0) // restore memory pointer + mstore(0x21, 0) // Restore free memory pointer } } From 2805e64b3f596f7507f108a8b60eb5a409b22e4a Mon Sep 17 00:00:00 2001 From: Vectorized Date: Wed, 14 Aug 2024 20:38:14 +0000 Subject: [PATCH 05/11] Tidy and fixes --- src/utils/ECDSA.sol | 64 +++++++++++++++++++++++---------------------- 1 file changed, 33 insertions(+), 31 deletions(-) diff --git a/src/utils/ECDSA.sol b/src/utils/ECDSA.sol index 57dc15dc3..057890f4a 100644 --- a/src/utils/ECDSA.sol +++ b/src/utils/ECDSA.sol @@ -17,22 +17,19 @@ pragma solidity ^0.8.4; /// See: https://eips.ethereum.org/EIPS/eip-2098 /// This is for calldata efficiency on smart accounts prevalent on L2s. /// -/// WARNING! Do NOT use signatures as unique identifiers: +/// WARNING! Do NOT directly use signatures as unique identifiers: +/// - The recovery operations do NOT check if a signature is non-malleable. /// - Use a nonce in the digest to prevent replay attacks on the same contract. /// - Use EIP-712 for the digest to prevent replay attacks across different chains and contracts. /// EIP-712 also enables readable signing of typed data for better user safety. -/// This implementation does NOT check if a signature is non-malleable. +/// - If you need a unique hash from a signature, please use the `canonicalHash` functions. library ECDSA { /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ /* CONSTANTS */ /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/ - /// @dev The order of the `secp256k1` elliptic curve. - bytes32 private constant N = 0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141; - - /// @dev The value is half of the `secp256k1n`, used for checking signature malleability (N/2). - bytes32 private constant N_2 = - 0x7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0; + /// @dev The order of the secp256k1 elliptic curve. + bytes32 internal constant N = 0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141; /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ /* CUSTOM ERRORS */ @@ -408,35 +405,40 @@ library ECDSA { } } - /// @dev Returns an canonical hash of 65 bytes signature. - /// If signature is 64 bytes format then it is convert into 65-bytes. - /// If `s` is greater than `secp256k1n/2` then it is convert into `secp256k1n - s` - /// and flips the `v` value. - /// Note : If signature length is not equal `65 bytes` or `64 bytes` it will return corrupt hash. - function canonicalHash(bytes memory sig) internal pure returns (bytes32 result) { + /// @dev Returns an canonical hash of `signature`. + /// 64-byte compact signatures will be canonicalized into the 65-byte format. + /// If `s` is greater than `N / 2` then it will be converted to `N - s` + /// and the `v` value will be flipped. + /// Note : Returns a uniquely corrupted hash if the signature + /// is not 64 or 65 bytes long, or if `v` is invalid. + function canonicalHash(bytes memory signature) internal pure returns (bytes32 result) { // @solidity memory-safe-assembly assembly { - for { let s := mload(add(sig, 0x40)) } 1 {} { - mstore(0x00, mload(add(sig, 0x20))) - - if iszero(eq(mload(sig), 64)) { - let c := gt(s, N_2) - // Replace `s` with `N - s` if `s > N/2`. - mstore(0x20, add(mul(c, sub(N, s)), mul(iszero(c), s))) - - // Flip `v` value if `s > N/2` - mstore8(0x40, xor(mul(c, 7), byte(0, mload(add(sig, 0x60))))) + for { let l := mload(signature) } 1 {} { + // If the length is neither 64 nor 65, return a uniquely corrupted hash. + if iszero(lt(sub(l, 64), 2)) { + // `bytes4(keccak256("InvalidSignatureLength"))`. + result := xor(keccak256(add(signature, 0x20), l), 0xd62f1ab2) break } - + mstore(0x00, mload(add(signature, 0x20))) // `r`. + let s := mload(add(signature, 0x40)) + let v := mload(add(signature, 0x41)) + if eq(l, 64) { + v := add(shr(255, s), 27) + s := shr(1, shl(1, s)) + } + let n := N + if lt(shr(1, n), s) { + v := xor(v, 7) + s := sub(n, s) + } + mstore(0x21, v) mstore(0x20, s) - let s0 := byte(0, s) - mstore8(0x20, and(s0, 0x7f)) - mstore8(0x40, add(27, shr(7, s0))) + result := keccak256(0x00, 0x41) + mstore(0x21, 0) // Restore the overwritten part of the free memory pointer. break } - result := keccak256(0x00, add(0x41, gt(sub(mload(sig), 64), 1))) - mstore(0x21, 0) // Restore free memory pointer } } @@ -452,7 +454,7 @@ library ECDSA { mstore(0x00, calldataload(sig.offset)) if iszero(eq(sig.length, 64)) { - let c := gt(s, N_2) + let c := gt(s, shr(1, N)) // Replace `s` with `N - s` if `s` > `N/2`. mstore(0x20, add(mul(c, sub(N, s)), mul(iszero(c), s))) mstore8(0x40, xor(mul(c, 7), byte(0, calldataload(add(sig.offset, 0x40))))) From 784ddf5d6ffe314c94b25787c968f595c685e0bd Mon Sep 17 00:00:00 2001 From: atarpara Date: Thu, 15 Aug 2024 09:59:42 +0530 Subject: [PATCH 06/11] Fix Calldata Version --- .gas-snapshot | 20 ++++++++--------- src/utils/ECDSA.sol | 52 ++++++++++++++++++++++++++++----------------- test/ECDSA.t.sol | 2 ++ 3 files changed, 44 insertions(+), 30 deletions(-) diff --git a/.gas-snapshot b/.gas-snapshot index 8e34e9218..65df07caf 100644 --- a/.gas-snapshot +++ b/.gas-snapshot @@ -88,18 +88,18 @@ DynamicBufferLibTest:testJoinWithConcat() (gas: 31429) DynamicBufferLibTest:testJoinWithDynamicBuffer() (gas: 10830) DynamicBufferLibTest:test__codesize() (gas: 12662) ECDSATest:testBytes32ToEthSignedMessageHash() (gas: 425) -ECDSATest:testBytesToEthSignedMessageHash() (gas: 11589491) +ECDSATest:testBytesToEthSignedMessageHash() (gas: 11581949) ECDSATest:testBytesToEthSignedMessageHashEmpty() (gas: 578) -ECDSATest:testBytesToEthSignedMessageHashExceedsMaxLengthReverts() (gas: 630145) +ECDSATest:testBytesToEthSignedMessageHashExceedsMaxLengthReverts() (gas: 613975) ECDSATest:testBytesToEthSignedMessageHashLong() (gas: 725) ECDSATest:testBytesToEthSignedMessageHashShort() (gas: 576) -ECDSATest:testCanonicalHashCalldataWith64bytesSignature() (gas: 1263211) -ECDSATest:testCanonicalHashCalldataWithRegularSignature() (gas: 1262990) -ECDSATest:testCanonicalHashWith64bytesSignature() (gas: 628796) -ECDSATest:testCanonicalHashWithIncorrectLengthSignature() (gas: 1263321) -ECDSATest:testCanonicalHashWithRegularSignature() (gas: 628712) +ECDSATest:testCanonicalHashCalldataWith64bytesSignature() (gas: 1230928) +ECDSATest:testCanonicalHashCalldataWithRegularSignature() (gas: 1230402) +ECDSATest:testCanonicalHashWith64bytesSignature() (gas: 612570) +ECDSATest:testCanonicalHashWithIncorrectLengthSignature() (gas: 1233610) +ECDSATest:testCanonicalHashWithRegularSignature() (gas: 612413) ECDSATest:testEmptyCalldataHelpers() (gas: 3201) -ECDSATest:testRecoverAndTryRecover(bytes32) (runs: 256, μ: 2935840, ~: 2592929) +ECDSATest:testRecoverAndTryRecover(bytes32) (runs: 256, μ: 2875518, ~: 2527748) ECDSATest:testRecoverWithInvalidLongSignatureReverts() (gas: 7417) ECDSATest:testRecoverWithInvalidShortSignatureReturnsZero() (gas: 7253) ECDSATest:testRecoverWithInvalidSignatureReverts() (gas: 8040) @@ -130,7 +130,7 @@ ECDSATest:testTryRecoverWithV1SignatureWithVersion28() (gas: 8851) ECDSATest:testTryRecoverWithV1SignatureWithWrongVersionReturnsZero() (gas: 8916) ECDSATest:testTryRecoverWithValidSignature() (gas: 8921) ECDSATest:testTryRecoverWithWrongSigner() (gas: 8934) -ECDSATest:test__codesize() (gas: 16266) +ECDSATest:test__codesize() (gas: 16531) EIP712Test:testDomainSeparator() (gas: 6048) EIP712Test:testDomainSeparatorOnClone() (gas: 8842) EIP712Test:testDomainSeparatorOnCloneDynamicWithChainIdChange() (gas: 69580) @@ -1244,7 +1244,7 @@ SignatureCheckerLibTest:testERC6492PreDeploy() (gas: 1226946) SignatureCheckerLibTest:testERC6492WithoutRevertingVerifier() (gas: 61787) SignatureCheckerLibTest:testEmptyCalldataHelpers() (gas: 3987) SignatureCheckerLibTest:testEtchERC6492RevertingVerifier() (gas: 56459) -SignatureCheckerLibTest:testSignatureChecker(bytes32) (runs: 256, μ: 56375, ~: 51401) +SignatureCheckerLibTest:testSignatureChecker(bytes32) (runs: 256, μ: 55671, ~: 45424) SignatureCheckerLibTest:testSignatureCheckerOnEOAWithInvalidSignature() (gas: 21300) SignatureCheckerLibTest:testSignatureCheckerOnEOAWithInvalidSigner() (gas: 30800) SignatureCheckerLibTest:testSignatureCheckerOnEOAWithMatchingSignerAndSignature() (gas: 17697) diff --git a/src/utils/ECDSA.sol b/src/utils/ECDSA.sol index 057890f4a..2635fe738 100644 --- a/src/utils/ECDSA.sol +++ b/src/utils/ECDSA.sol @@ -442,33 +442,45 @@ library ECDSA { } } - /// @dev Returns an canonical hash of 65 bytes calldata signature. - /// If signature is 64 bytes format then it is convert into 65-bytes. - /// If `s` is greater than `secp256k1n/2` then it is convert into `secp256k1n - s` - /// and flips the `v` value. - /// Note : If signature length is not equal `65 bytes` or `64 bytes` it will return corrupt hash. - function canonicalHashCalldata(bytes calldata sig) internal pure returns (bytes32 result) { + /// @dev Returns an canonical hash of `signature`. + /// 64-byte compact signatures will be canonicalized into the 65-byte format. + /// If `s` is greater than `N / 2` then it will be converted to `N - s` + /// and the `v` value will be flipped. + /// Note : Returns a uniquely corrupted hash if the signature + /// is not 64 or 65 bytes long, or if `v` is invalid. + function canonicalHashCalldata(bytes calldata signature) + internal + pure + returns (bytes32 result) + { // @solidity memory-safe-assembly assembly { - for { let s := calldataload(add(sig.offset, 0x20)) } 1 {} { - mstore(0x00, calldataload(sig.offset)) - - if iszero(eq(sig.length, 64)) { - let c := gt(s, shr(1, N)) - // Replace `s` with `N - s` if `s` > `N/2`. - mstore(0x20, add(mul(c, sub(N, s)), mul(iszero(c), s))) - mstore8(0x40, xor(mul(c, 7), byte(0, calldataload(add(sig.offset, 0x40))))) + for { let l := signature.length } 1 {} { + // If the length is neither 64 nor 65, return a uniquely corrupted hash. + if iszero(lt(sub(l, 64), 2)) { + calldatacopy(mload(0x40), signature.offset, l) + // `bytes4(keccak256("InvalidSignatureLength"))`. + result := xor(keccak256(mload(0x40), l), 0xd62f1ab2) break } - + mstore(0x00, calldataload(signature.offset)) // `r`. + let s := calldataload(add(signature.offset, 0x20)) + let v := calldataload(add(signature.offset, 0x21)) + if eq(l, 64) { + v := add(shr(255, s), 27) + s := shr(1, shl(1, s)) + } + let n := N + if lt(shr(1, n), s) { + v := xor(v, 7) + s := sub(n, s) + } + mstore(0x21, v) mstore(0x20, s) - let s0 := byte(0, s) - mstore8(0x20, and(s0, 0x7f)) - mstore8(0x40, add(27, shr(7, s0))) + result := keccak256(0x00, 0x41) + mstore(0x21, 0) // Restore the overwritten part of the free memory pointer. break } - result := keccak256(0x00, add(0x41, gt(sub(sig.length, 64), 1))) - mstore(0x21, 0) // Restore free memory pointer } } diff --git a/test/ECDSA.t.sol b/test/ECDSA.t.sol index 72ad46cb9..3368bafc4 100644 --- a/test/ECDSA.t.sol +++ b/test/ECDSA.t.sol @@ -503,6 +503,7 @@ contract ECDSATest is SoladyTest { hex"8688e590483917863a35ef230c0f839be8418aa4ee765228eddfcea7fe2652815db01c2c84b0ec746e1b74d97475c599b3d3419fa7181b4e01de62c02b721aea1b"; assertNotEq(ECDSA.canonicalHash(longsignature), keccak256(signature)); + assertEq(this.canonicalHashCalldata(longsignature), ECDSA.canonicalHash(longsignature)); assertNotEq(this.canonicalHashCalldata(longsignature), keccak256(signature)); assertNotEq(this.canonicalHashCalldataBrutalizeMemory(longsignature), keccak256(signature)); @@ -513,6 +514,7 @@ contract ECDSATest is SoladyTest { mstore(shortsignature, 63) // corrupt memory length } assertNotEq(ECDSA.canonicalHash(shortsignature), keccak256(signature)); + assertEq(this.canonicalHashCalldata(shortsignature), ECDSA.canonicalHash(shortsignature)); assertNotEq(this.canonicalHashCalldata(shortsignature), keccak256(signature)); assertNotEq(this.canonicalHashCalldataBrutalizeMemory(shortsignature), keccak256(signature)); } From d8c284925a06baae0027e819da08ba24a671137b Mon Sep 17 00:00:00 2001 From: Vectorized Date: Thu, 15 Aug 2024 11:06:56 +0000 Subject: [PATCH 07/11] Nit --- .gas-snapshot | 1118 +++++++++++++++++++++++----------------------- test/ECDSA.t.sol | 3 +- 2 files changed, 561 insertions(+), 560 deletions(-) diff --git a/.gas-snapshot b/.gas-snapshot index 65df07caf..5f71719de 100644 --- a/.gas-snapshot +++ b/.gas-snapshot @@ -1,9 +1,9 @@ Base64Test:testBase64DecodeSentenceGas() (gas: 3663) Base64Test:testBase64DecodeShortStringGas() (gas: 896) -Base64Test:testBase64EncodeDecode(bytes) (runs: 256, μ: 5995, ~: 4968) -Base64Test:testBase64EncodeDecodeAltModes(bytes) (runs: 256, μ: 881784, ~: 732275) +Base64Test:testBase64EncodeDecode(bytes) (runs: 312, μ: 6066, ~: 4968) +Base64Test:testBase64EncodeDecodeAltModes(bytes) (runs: 312, μ: 881150, ~: 731603) Base64Test:testBase64EncodeEmptyString() (gas: 902) -Base64Test:testBase64EncodeFileSafeAndNoPadding(bytes,bool,bool) (runs: 256, μ: 15447, ~: 14264) +Base64Test:testBase64EncodeFileSafeAndNoPadding(bytes,bool,bool) (runs: 312, μ: 15786, ~: 14264) Base64Test:testBase64EncodeSentence() (gas: 4333) Base64Test:testBase64EncodeShortStrings() (gas: 7610) Base64Test:testBase64EncodeToStringWithDoublePadding() (gas: 1553) @@ -12,78 +12,78 @@ Base64Test:testBase64EncodeToStringWithSinglePadding() (gas: 1487) Base64Test:testBase64WordBoundary() (gas: 11624) Base64Test:test__codesize() (gas: 6768) CREATE3Test:testDeployERC20() (gas: 833235) -CREATE3Test:testDeployERC20(bytes32,string,string,uint8) (runs: 256, μ: 880265, ~: 879319) +CREATE3Test:testDeployERC20(bytes32,string,string,uint8) (runs: 312, μ: 879240, ~: 879319) CREATE3Test:testDeployedUpperBitsSafeForPlainSolidity() (gas: 613) CREATE3Test:testDoubleDeployDifferentBytecodeReverts() (gas: 96898738) -CREATE3Test:testDoubleDeployDifferentBytecodeReverts(bytes32,bytes,bytes) (runs: 256, μ: 96880352, ~: 96880375) +CREATE3Test:testDoubleDeployDifferentBytecodeReverts(bytes32,bytes,bytes) (runs: 312, μ: 96880294, ~: 96880242) CREATE3Test:testDoubleDeploySameBytecodeReverts() (gas: 96889196) -CREATE3Test:testDoubleDeploySameBytecodeReverts(bytes32,bytes) (runs: 256, μ: 96881059, ~: 96880999) +CREATE3Test:testDoubleDeploySameBytecodeReverts(bytes32,bytes) (runs: 312, μ: 96881047, ~: 96880998) CREATE3Test:test__codesize() (gas: 14114) -DateTimeLibTest:testAddSubDiffDays(uint256,uint256) (runs: 256, μ: 4200, ~: 4209) -DateTimeLibTest:testAddSubDiffHours(uint256,uint256) (runs: 256, μ: 4142, ~: 4155) -DateTimeLibTest:testAddSubDiffMinutes(uint256,uint256) (runs: 256, μ: 4138, ~: 4129) -DateTimeLibTest:testAddSubDiffMonths(uint256,uint256) (runs: 256, μ: 7245, ~: 7257) -DateTimeLibTest:testAddSubDiffSeconds(uint256,uint256) (runs: 256, μ: 3755, ~: 3721) -DateTimeLibTest:testAddSubDiffYears(uint256,uint256) (runs: 256, μ: 6808, ~: 6822) +DateTimeLibTest:testAddSubDiffDays(uint256,uint256) (runs: 312, μ: 4205, ~: 4209) +DateTimeLibTest:testAddSubDiffHours(uint256,uint256) (runs: 312, μ: 4147, ~: 4155) +DateTimeLibTest:testAddSubDiffMinutes(uint256,uint256) (runs: 312, μ: 4141, ~: 4129) +DateTimeLibTest:testAddSubDiffMonths(uint256,uint256) (runs: 312, μ: 7251, ~: 7257) +DateTimeLibTest:testAddSubDiffSeconds(uint256,uint256) (runs: 312, μ: 3757, ~: 3721) +DateTimeLibTest:testAddSubDiffYears(uint256,uint256) (runs: 312, μ: 6815, ~: 6822) DateTimeLibTest:testDateTimeArithmeticReverts() (gas: 4495) DateTimeLibTest:testDateTimeMaxSupported() (gas: 2823) -DateTimeLibTest:testDateTimeToAndFroTimestamp((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 256, μ: 4138, ~: 4089) -DateTimeLibTest:testDateToAndFroEpochDay((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 256, μ: 2561, ~: 2552) +DateTimeLibTest:testDateTimeToAndFroTimestamp((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 312, μ: 4135, ~: 4089) +DateTimeLibTest:testDateToAndFroEpochDay((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 312, μ: 2563, ~: 2588) DateTimeLibTest:testDateToAndFroEpochDay() (gas: 877945) DateTimeLibTest:testDateToAndFroTimestamp() (gas: 926776) DateTimeLibTest:testDateToEpochDay() (gas: 1559) -DateTimeLibTest:testDateToEpochDayDifferential((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 256, μ: 2300, ~: 2299) -DateTimeLibTest:testDateToEpochDayDifferential2((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 256, μ: 2222, ~: 2213) +DateTimeLibTest:testDateToEpochDayDifferential((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 312, μ: 2302, ~: 2322) +DateTimeLibTest:testDateToEpochDayDifferential2((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 312, μ: 2224, ~: 2249) DateTimeLibTest:testDateToEpochDayGas() (gas: 764427) DateTimeLibTest:testDateToEpochDayGas2() (gas: 770404) DateTimeLibTest:testDayOfWeek() (gas: 175255) DateTimeLibTest:testDaysInMonth() (gas: 1226) -DateTimeLibTest:testDaysInMonth(uint256,uint256) (runs: 256, μ: 1073, ~: 1085) +DateTimeLibTest:testDaysInMonth(uint256,uint256) (runs: 312, μ: 1072, ~: 1084) DateTimeLibTest:testDaysToDate() (gas: 8377) -DateTimeLibTest:testEpochDayToDate(uint256) (runs: 256, μ: 1045, ~: 1045) -DateTimeLibTest:testEpochDayToDateDifferential(uint256) (runs: 256, μ: 1776, ~: 1721) -DateTimeLibTest:testEpochDayToDateDifferential2(uint256) (runs: 256, μ: 1783, ~: 1709) +DateTimeLibTest:testEpochDayToDate(uint256) (runs: 312, μ: 1045, ~: 1045) +DateTimeLibTest:testEpochDayToDateDifferential(uint256) (runs: 312, μ: 1778, ~: 1721) +DateTimeLibTest:testEpochDayToDateDifferential2(uint256) (runs: 312, μ: 1786, ~: 1709) DateTimeLibTest:testEpochDayToDateGas() (gas: 348457) DateTimeLibTest:testEpochDayToDateGas2() (gas: 360513) DateTimeLibTest:testIsLeapYear() (gas: 741) -DateTimeLibTest:testIsLeapYear(uint256) (runs: 256, μ: 541, ~: 517) +DateTimeLibTest:testIsLeapYear(uint256) (runs: 312, μ: 541, ~: 517) DateTimeLibTest:testIsSupportedDateFalse() (gas: 1180) -DateTimeLibTest:testIsSupportedDateTime((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 256, μ: 2963, ~: 2949) +DateTimeLibTest:testIsSupportedDateTime((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 312, μ: 2950, ~: 2949) DateTimeLibTest:testIsSupportedDateTrue() (gas: 626) DateTimeLibTest:testIsSupportedEpochDayFalse() (gas: 494) DateTimeLibTest:testIsSupportedEpochDayTrue() (gas: 305) DateTimeLibTest:testIsSupportedTimestampFalse() (gas: 541) DateTimeLibTest:testIsSupportedTimestampTrue() (gas: 326) -DateTimeLibTest:testIsWeekEnd(uint256) (runs: 256, μ: 690, ~: 617) +DateTimeLibTest:testIsWeekEnd(uint256) (runs: 312, μ: 693, ~: 617) DateTimeLibTest:testMondayTimestamp() (gas: 1106) -DateTimeLibTest:testMondayTimestamp(uint256) (runs: 256, μ: 768, ~: 836) +DateTimeLibTest:testMondayTimestamp(uint256) (runs: 312, μ: 769, ~: 836) DateTimeLibTest:testNthWeekdayInMonthOfYearTimestamp() (gas: 12053) -DateTimeLibTest:testNthWeekdayInMonthOfYearTimestamp(uint256,uint256,uint256,uint256) (runs: 256, μ: 3551, ~: 3584) +DateTimeLibTest:testNthWeekdayInMonthOfYearTimestamp(uint256,uint256,uint256,uint256) (runs: 312, μ: 3536, ~: 3576) DateTimeLibTest:testWeekday() (gas: 682) DateTimeLibTest:test__codesize() (gas: 19163) DelegateCheckerLibTest:testCheckDelegateForAll() (gas: 35639) -DelegateCheckerLibTest:testCheckDelegateForAll(address,address,bytes32) (runs: 256, μ: 226745, ~: 237921) +DelegateCheckerLibTest:testCheckDelegateForAll(address,address,bytes32) (runs: 312, μ: 228424, ~: 242449) DelegateCheckerLibTest:testCheckDelegateForContract() (gas: 54172) -DelegateCheckerLibTest:testCheckDelegateForContract(address,address,address,bytes32) (runs: 256, μ: 353367, ~: 302314) +DelegateCheckerLibTest:testCheckDelegateForContract(address,address,address,bytes32) (runs: 312, μ: 354882, ~: 305165) DelegateCheckerLibTest:testCheckDelegateForERC1155() (gas: 62242) -DelegateCheckerLibTest:testCheckDelegateForERC1155(address,address,address,uint256,bytes32) (runs: 256, μ: 279101, ~: 301018) +DelegateCheckerLibTest:testCheckDelegateForERC1155(address,address,address,uint256,bytes32) (runs: 312, μ: 296531, ~: 303784) DelegateCheckerLibTest:testCheckDelegateForERC20() (gas: 61708) -DelegateCheckerLibTest:testCheckDelegateForERC20(address,address,address,bytes32) (runs: 256, μ: 292012, ~: 278793) +DelegateCheckerLibTest:testCheckDelegateForERC20(address,address,address,bytes32) (runs: 312, μ: 297559, ~: 279707) DelegateCheckerLibTest:testCheckDelegateForERC721() (gas: 69938) -DelegateCheckerLibTest:testCheckDelegateForERC721(address,address,address,uint256,bytes32) (runs: 256, μ: 426882, ~: 378362) +DelegateCheckerLibTest:testCheckDelegateForERC721(address,address,address,uint256,bytes32) (runs: 312, μ: 422037, ~: 379327) DelegateCheckerLibTest:test__codesize() (gas: 33189) -DeploylessPredeployQueryerTest:testPredeployQueryer(bytes32) (runs: 256, μ: 258237, ~: 222019) +DeploylessPredeployQueryerTest:testPredeployQueryer(bytes32) (runs: 312, μ: 264692, ~: 222329) DeploylessPredeployQueryerTest:testTargetGenerate() (gas: 366064) DeploylessPredeployQueryerTest:test__codesize() (gas: 8284) -DynamicBufferLibTest:testClear(uint256) (runs: 256, μ: 34589, ~: 34654) -DynamicBufferLibTest:testDynamicBuffer(bytes[],uint256) (runs: 256, μ: 924569, ~: 789061) -DynamicBufferLibTest:testDynamicBuffer(uint256) (runs: 256, μ: 856163, ~: 670224) +DynamicBufferLibTest:testClear(uint256) (runs: 312, μ: 34608, ~: 34661) +DynamicBufferLibTest:testDynamicBuffer(bytes[],uint256) (runs: 312, μ: 915761, ~: 786910) +DynamicBufferLibTest:testDynamicBuffer(uint256) (runs: 312, μ: 835948, ~: 670494) DynamicBufferLibTest:testDynamicBufferChaining() (gas: 12661) -DynamicBufferLibTest:testDynamicBufferPushSingles(uint256,uint256,uint256) (runs: 256, μ: 253506, ~: 34391) +DynamicBufferLibTest:testDynamicBufferPushSingles(uint256,uint256,uint256) (runs: 312, μ: 242390, ~: 34449) DynamicBufferLibTest:testDynamicBufferPushSinglesReinterpretCast() (gas: 21959) DynamicBufferLibTest:testDynamicBufferReserveFromEmpty() (gas: 2754) DynamicBufferLibTest:testDynamicBufferReserveFromEmpty2() (gas: 2463) -DynamicBufferLibTest:testDynamicBufferReserveFromEmpty3(bytes,uint256) (runs: 256, μ: 2820, ~: 2066) +DynamicBufferLibTest:testDynamicBufferReserveFromEmpty3(bytes,uint256) (runs: 312, μ: 2838, ~: 2069) DynamicBufferLibTest:testJoinWithConcat() (gas: 31429) DynamicBufferLibTest:testJoinWithDynamicBuffer() (gas: 10830) DynamicBufferLibTest:test__codesize() (gas: 12662) @@ -99,7 +99,7 @@ ECDSATest:testCanonicalHashWith64bytesSignature() (gas: 612570) ECDSATest:testCanonicalHashWithIncorrectLengthSignature() (gas: 1233610) ECDSATest:testCanonicalHashWithRegularSignature() (gas: 612413) ECDSATest:testEmptyCalldataHelpers() (gas: 3201) -ECDSATest:testRecoverAndTryRecover(bytes32) (runs: 256, μ: 2875518, ~: 2527748) +ECDSATest:testRecoverAndTryRecover(bytes32) (runs: 312, μ: 2821507, ~: 2527510) ECDSATest:testRecoverWithInvalidLongSignatureReverts() (gas: 7417) ECDSATest:testRecoverWithInvalidShortSignatureReturnsZero() (gas: 7253) ECDSATest:testRecoverWithInvalidSignatureReverts() (gas: 8040) @@ -149,60 +149,60 @@ EIP712Test:testHashTypedDataWithChaindIdChange() (gas: 45206) EIP712Test:test__codesize() (gas: 11400) ERC1155HooksTest:testERC1155Hooks() (gas: 4512310) ERC1155HooksTest:test__codesize() (gas: 12474) -ERC1155Test:testApproveAll(address,bool) (runs: 256, μ: 49058, ~: 58445) -ERC1155Test:testAuthorizedEquivalence(address,address,bool) (runs: 256, μ: 715, ~: 715) -ERC1155Test:testBalanceOfBatchWithArrayMismatchReverts(uint256) (runs: 256, μ: 32189, ~: 34870) -ERC1155Test:testBatchBalanceOf(uint256) (runs: 256, μ: 150939, ~: 150612) -ERC1155Test:testBatchBurn(uint256) (runs: 256, μ: 199487, ~: 177453) -ERC1155Test:testBatchBurnInsufficientBalanceReverts(uint256) (runs: 256, μ: 200413, ~: 189482) -ERC1155Test:testBatchBurnWithArrayLengthMismatchReverts(uint256) (runs: 256, μ: 54396, ~: 51666) -ERC1155Test:testBatchMintToEOA(uint256) (runs: 256, μ: 148533, ~: 151115) -ERC1155Test:testBatchMintToERC1155Recipient(uint256) (runs: 256, μ: 1457030, ~: 759354) -ERC1155Test:testBatchMintToNonERC1155RecipientReverts(uint256) (runs: 256, μ: 196473, ~: 186184) -ERC1155Test:testBatchMintToRevertingERC1155RecipientReverts(uint256) (runs: 256, μ: 368673, ~: 366700) -ERC1155Test:testBatchMintToWrongReturnDataERC1155RecipientReverts(uint256) (runs: 256, μ: 320931, ~: 287909) -ERC1155Test:testBatchMintToZeroReverts(uint256) (runs: 256, μ: 94441, ~: 90583) -ERC1155Test:testBatchMintWithArrayMismatchReverts(uint256) (runs: 256, μ: 40836, ~: 35646) -ERC1155Test:testBurn(uint256) (runs: 256, μ: 118780, ~: 105654) -ERC1155Test:testBurnInsufficientBalanceReverts(uint256) (runs: 256, μ: 119511, ~: 105919) -ERC1155Test:testDirectSetApprovalForAll(address,address,bool) (runs: 256, μ: 25330, ~: 15691) -ERC1155Test:testMintToEOA(uint256) (runs: 256, μ: 90320, ~: 81702) -ERC1155Test:testMintToERC1155Recipient(uint256) (runs: 256, μ: 1194272, ~: 663050) -ERC1155Test:testMintToNonERC155RecipientReverts(uint256) (runs: 256, μ: 121703, ~: 103499) -ERC1155Test:testMintToRevertingERC155RecipientReverts(uint256) (runs: 256, μ: 300848, ~: 284019) -ERC1155Test:testMintToWrongReturnDataERC155RecipientReverts(uint256) (runs: 256, μ: 258718, ~: 238663) -ERC1155Test:testMintToZeroReverts(uint256) (runs: 256, μ: 54802, ~: 33409) +ERC1155Test:testApproveAll(address,bool) (runs: 312, μ: 49172, ~: 58445) +ERC1155Test:testAuthorizedEquivalence(address,address,bool) (runs: 312, μ: 715, ~: 715) +ERC1155Test:testBalanceOfBatchWithArrayMismatchReverts(uint256) (runs: 312, μ: 32081, ~: 34870) +ERC1155Test:testBatchBalanceOf(uint256) (runs: 312, μ: 154012, ~: 150768) +ERC1155Test:testBatchBurn(uint256) (runs: 312, μ: 193299, ~: 173471) +ERC1155Test:testBatchBurnInsufficientBalanceReverts(uint256) (runs: 312, μ: 200239, ~: 189402) +ERC1155Test:testBatchBurnWithArrayLengthMismatchReverts(uint256) (runs: 312, μ: 54705, ~: 54392) +ERC1155Test:testBatchMintToEOA(uint256) (runs: 312, μ: 149812, ~: 151142) +ERC1155Test:testBatchMintToERC1155Recipient(uint256) (runs: 312, μ: 1486761, ~: 770583) +ERC1155Test:testBatchMintToNonERC1155RecipientReverts(uint256) (runs: 312, μ: 194232, ~: 186184) +ERC1155Test:testBatchMintToRevertingERC1155RecipientReverts(uint256) (runs: 312, μ: 372951, ~: 366861) +ERC1155Test:testBatchMintToWrongReturnDataERC1155RecipientReverts(uint256) (runs: 312, μ: 321834, ~: 289146) +ERC1155Test:testBatchMintToZeroReverts(uint256) (runs: 312, μ: 97551, ~: 90599) +ERC1155Test:testBatchMintWithArrayMismatchReverts(uint256) (runs: 312, μ: 42686, ~: 35656) +ERC1155Test:testBurn(uint256) (runs: 312, μ: 115432, ~: 103901) +ERC1155Test:testBurnInsufficientBalanceReverts(uint256) (runs: 312, μ: 117392, ~: 105919) +ERC1155Test:testDirectSetApprovalForAll(address,address,bool) (runs: 312, μ: 25194, ~: 15691) +ERC1155Test:testMintToEOA(uint256) (runs: 312, μ: 90379, ~: 82236) +ERC1155Test:testMintToERC1155Recipient(uint256) (runs: 312, μ: 1177323, ~: 663225) +ERC1155Test:testMintToNonERC155RecipientReverts(uint256) (runs: 312, μ: 120352, ~: 103536) +ERC1155Test:testMintToRevertingERC155RecipientReverts(uint256) (runs: 312, μ: 298241, ~: 283996) +ERC1155Test:testMintToWrongReturnDataERC155RecipientReverts(uint256) (runs: 312, μ: 260921, ~: 238671) +ERC1155Test:testMintToZeroReverts(uint256) (runs: 312, μ: 55524, ~: 33409) ERC1155Test:testSafeBatchTransfer() (gas: 8288837) -ERC1155Test:testSafeBatchTransferFromToEOA(uint256) (runs: 256, μ: 248780, ~: 260148) -ERC1155Test:testSafeBatchTransferFromToERC1155Recipient(uint256) (runs: 256, μ: 2791227, ~: 977938) -ERC1155Test:testSafeBatchTransferFromToNonERC1155RecipientReverts(uint256) (runs: 256, μ: 264163, ~: 268481) -ERC1155Test:testSafeBatchTransferFromToRevertingERC1155RecipientReverts(uint256) (runs: 256, μ: 454886, ~: 449192) -ERC1155Test:testSafeBatchTransferFromToWrongReturnDataERC1155RecipientReverts(uint256) (runs: 256, μ: 414437, ~: 405430) -ERC1155Test:testSafeBatchTransferFromToZeroReverts(uint256) (runs: 256, μ: 178618, ~: 173401) -ERC1155Test:testSafeBatchTransferFromWithArrayLengthMismatchReverts(uint256) (runs: 256, μ: 67102, ~: 67119) -ERC1155Test:testSafeBatchTransferInsufficientBalanceReverts(uint256) (runs: 256, μ: 214149, ~: 193483) -ERC1155Test:testSafeTransferFromInsufficientBalanceReverts(uint256) (runs: 256, μ: 129591, ~: 108633) -ERC1155Test:testSafeTransferFromSelf(uint256) (runs: 256, μ: 142082, ~: 117857) -ERC1155Test:testSafeTransferFromSelfInsufficientBalanceReverts(uint256) (runs: 256, μ: 116352, ~: 81635) -ERC1155Test:testSafeTransferFromToEOA(uint256) (runs: 256, μ: 152043, ~: 130561) -ERC1155Test:testSafeTransferFromToERC1155Recipient(uint256) (runs: 256, μ: 1478875, ~: 740830) -ERC1155Test:testSafeTransferFromToNonERC155RecipientReverts(uint256) (runs: 256, μ: 179060, ~: 151301) -ERC1155Test:testSafeTransferFromToRevertingERC1155RecipientReverts(uint256) (runs: 256, μ: 356387, ~: 332045) -ERC1155Test:testSafeTransferFromToWrongReturnDataERC1155RecipientReverts(uint256) (runs: 256, μ: 323432, ~: 287122) -ERC1155Test:testSafeTransferFromToZeroReverts(uint256) (runs: 256, μ: 107677, ~: 80686) +ERC1155Test:testSafeBatchTransferFromToEOA(uint256) (runs: 312, μ: 255834, ~: 261975) +ERC1155Test:testSafeBatchTransferFromToERC1155Recipient(uint256) (runs: 312, μ: 2699914, ~: 981124) +ERC1155Test:testSafeBatchTransferFromToNonERC1155RecipientReverts(uint256) (runs: 312, μ: 264611, ~: 268276) +ERC1155Test:testSafeBatchTransferFromToRevertingERC1155RecipientReverts(uint256) (runs: 312, μ: 457705, ~: 449706) +ERC1155Test:testSafeBatchTransferFromToWrongReturnDataERC1155RecipientReverts(uint256) (runs: 312, μ: 413590, ~: 405742) +ERC1155Test:testSafeBatchTransferFromToZeroReverts(uint256) (runs: 312, μ: 179528, ~: 173471) +ERC1155Test:testSafeBatchTransferFromWithArrayLengthMismatchReverts(uint256) (runs: 312, μ: 68271, ~: 67084) +ERC1155Test:testSafeBatchTransferInsufficientBalanceReverts(uint256) (runs: 312, μ: 211165, ~: 193483) +ERC1155Test:testSafeTransferFromInsufficientBalanceReverts(uint256) (runs: 312, μ: 128428, ~: 108513) +ERC1155Test:testSafeTransferFromSelf(uint256) (runs: 312, μ: 142691, ~: 117652) +ERC1155Test:testSafeTransferFromSelfInsufficientBalanceReverts(uint256) (runs: 312, μ: 115281, ~: 81367) +ERC1155Test:testSafeTransferFromToEOA(uint256) (runs: 312, μ: 149528, ~: 130099) +ERC1155Test:testSafeTransferFromToERC1155Recipient(uint256) (runs: 312, μ: 1676978, ~: 741101) +ERC1155Test:testSafeTransferFromToNonERC155RecipientReverts(uint256) (runs: 312, μ: 175640, ~: 151127) +ERC1155Test:testSafeTransferFromToRevertingERC1155RecipientReverts(uint256) (runs: 312, μ: 357881, ~: 331989) +ERC1155Test:testSafeTransferFromToWrongReturnDataERC1155RecipientReverts(uint256) (runs: 312, μ: 320941, ~: 287375) +ERC1155Test:testSafeTransferFromToZeroReverts(uint256) (runs: 312, μ: 106160, ~: 80942) ERC1155Test:test__codesize() (gas: 42627) ERC1271Test:testBasefeeBytecodeContract() (gas: 45430) ERC1271Test:testIsValidSignature() (gas: 2374582) -ERC1271Test:testIsValidSignature(uint256) (runs: 256, μ: 237601, ~: 209816) +ERC1271Test:testIsValidSignature(uint256) (runs: 312, μ: 238178, ~: 209750) ERC1271Test:testSupportsNestedTypedDataSign() (gas: 165049) ERC1271Test:test__codesize() (gas: 30965) ERC1967FactoryTest:testChangeAdmin() (gas: 265913) ERC1967FactoryTest:testChangeAdminUnauthorized() (gas: 256913) ERC1967FactoryTest:testDeploy() (gas: 256955) -ERC1967FactoryTest:testDeployAndCall(uint256) (runs: 256, μ: 340063, ~: 340701) +ERC1967FactoryTest:testDeployAndCall(uint256) (runs: 312, μ: 340039, ~: 340693) ERC1967FactoryTest:testDeployAndCallWithRevert() (gas: 211455) -ERC1967FactoryTest:testDeployBrutalized(uint256) (runs: 256, μ: 96193, ~: 43570) -ERC1967FactoryTest:testDeployDeterministicAndCall(uint256) (runs: 256, μ: 318376, ~: 349635) +ERC1967FactoryTest:testDeployBrutalized(uint256) (runs: 312, μ: 99369, ~: 43570) +ERC1967FactoryTest:testDeployDeterministicAndCall(uint256) (runs: 312, μ: 318205, ~: 349635) ERC1967FactoryTest:testFactoryDeployment() (gas: 494423) ERC1967FactoryTest:testProxyFails() (gas: 258252) ERC1967FactoryTest:testProxySucceeds() (gas: 255277) @@ -215,45 +215,45 @@ ERC1967FactoryTest:test__codesize() (gas: 32279) ERC20Invariants:invariantBalanceSum() (runs: 10, calls: 150, reverts: 84) ERC20Invariants:test__codesize() (gas: 7532) ERC20Test:testApprove() (gas: 35730) -ERC20Test:testApprove(address,uint256) (runs: 256, μ: 31103, ~: 31181) +ERC20Test:testApprove(address,uint256) (runs: 312, μ: 31053, ~: 31181) ERC20Test:testBurn() (gas: 62048) -ERC20Test:testBurn(address,uint256,uint256) (runs: 256, μ: 62235, ~: 62663) -ERC20Test:testBurnInsufficientBalanceReverts(address,uint256,uint256) (runs: 256, μ: 56281, ~: 56578) -ERC20Test:testDirectSpendAllowance(uint256) (runs: 256, μ: 61356, ~: 61624) -ERC20Test:testDirectTransfer(uint256) (runs: 256, μ: 99086, ~: 111899) +ERC20Test:testBurn(address,uint256,uint256) (runs: 312, μ: 62034, ~: 62663) +ERC20Test:testBurnInsufficientBalanceReverts(address,uint256,uint256) (runs: 312, μ: 56212, ~: 56578) +ERC20Test:testDirectSpendAllowance(uint256) (runs: 312, μ: 61339, ~: 61140) +ERC20Test:testDirectTransfer(uint256) (runs: 312, μ: 99235, ~: 111899) ERC20Test:testInfiniteApproveTransferFrom() (gas: 90288) ERC20Test:testMetadata() (gas: 16516) ERC20Test:testMint() (gas: 58700) -ERC20Test:testMint(address,uint256) (runs: 256, μ: 58787, ~: 58943) +ERC20Test:testMint(address,uint256) (runs: 312, μ: 58687, ~: 58943) ERC20Test:testMintOverMaxUintReverts() (gas: 55969) ERC20Test:testPermit() (gas: 89282) -ERC20Test:testPermit(uint256) (runs: 256, μ: 89224, ~: 89373) -ERC20Test:testPermitBadDeadlineReverts(uint256) (runs: 256, μ: 41140, ~: 41140) -ERC20Test:testPermitBadNonceReverts(uint256) (runs: 256, μ: 41557, ~: 41535) -ERC20Test:testPermitPastDeadlineReverts(uint256) (runs: 256, μ: 35669, ~: 35669) -ERC20Test:testPermitReplayReverts(uint256) (runs: 256, μ: 92084, ~: 92082) +ERC20Test:testPermit(uint256) (runs: 312, μ: 89254, ~: 89373) +ERC20Test:testPermitBadDeadlineReverts(uint256) (runs: 312, μ: 41139, ~: 41139) +ERC20Test:testPermitBadNonceReverts(uint256) (runs: 312, μ: 41557, ~: 41535) +ERC20Test:testPermitPastDeadlineReverts(uint256) (runs: 312, μ: 35665, ~: 35665) +ERC20Test:testPermitReplayReverts(uint256) (runs: 312, μ: 92082, ~: 92084) ERC20Test:testTransfer() (gas: 65514) -ERC20Test:testTransfer(address,uint256) (runs: 256, μ: 65574, ~: 65730) +ERC20Test:testTransfer(address,uint256) (runs: 312, μ: 65474, ~: 65730) ERC20Test:testTransferFrom() (gas: 85869) -ERC20Test:testTransferFrom(address,address,address,uint256,uint256) (runs: 256, μ: 92827, ~: 95053) +ERC20Test:testTransferFrom(address,address,address,uint256,uint256) (runs: 312, μ: 92644, ~: 95053) ERC20Test:testTransferFromInsufficientAllowanceReverts() (gas: 81760) -ERC20Test:testTransferFromInsufficientAllowanceReverts(address,uint256,uint256) (runs: 256, μ: 82134, ~: 82275) +ERC20Test:testTransferFromInsufficientAllowanceReverts(address,uint256,uint256) (runs: 312, μ: 82100, ~: 82275) ERC20Test:testTransferFromInsufficientBalanceReverts() (gas: 62108) -ERC20Test:testTransferFromInsufficientBalanceReverts(address,uint256,uint256) (runs: 256, μ: 62776, ~: 62710) +ERC20Test:testTransferFromInsufficientBalanceReverts(address,uint256,uint256) (runs: 312, μ: 62728, ~: 62710) ERC20Test:testTransferInsufficientBalanceReverts() (gas: 56113) -ERC20Test:testTransferInsufficientBalanceReverts(address,uint256,uint256) (runs: 256, μ: 56340, ~: 56637) +ERC20Test:testTransferInsufficientBalanceReverts(address,uint256,uint256) (runs: 312, μ: 56271, ~: 56637) ERC20Test:test__codesize() (gas: 22868) -ERC2981Test:testRoyaltyOverflowCheckDifferential(uint256,uint256) (runs: 256, μ: 480, ~: 480) -ERC2981Test:testSetAndGetRoyaltyInfo(uint256) (runs: 256, μ: 106736, ~: 104400) +ERC2981Test:testRoyaltyOverflowCheckDifferential(uint256,uint256) (runs: 312, μ: 479, ~: 480) +ERC2981Test:testSetAndGetRoyaltyInfo(uint256) (runs: 312, μ: 106956, ~: 104400) ERC2981Test:test__codesize() (gas: 7247) ERC4337FactoryTest:testCreateAccountRepeatedDeployment() (gas: 149753) -ERC4337FactoryTest:testCreateAccountRepeatedDeployment(uint256) (runs: 256, μ: 171337, ~: 171295) -ERC4337FactoryTest:testDeployDeterministic(uint256) (runs: 256, μ: 130620, ~: 139611) +ERC4337FactoryTest:testCreateAccountRepeatedDeployment(uint256) (runs: 312, μ: 171337, ~: 171295) +ERC4337FactoryTest:testDeployDeterministic(uint256) (runs: 312, μ: 130633, ~: 139611) ERC4337FactoryTest:test__codesize() (gas: 13049) ERC4337Test:testCdFallback() (gas: 438041) ERC4337Test:testCdFallback2() (gas: 1135303) ERC4337Test:testDelegateExecute() (gas: 366407) -ERC4337Test:testDelegateExecute(uint256) (runs: 256, μ: 356593, ~: 345250) +ERC4337Test:testDelegateExecute(uint256) (runs: 312, μ: 356290, ~: 345250) ERC4337Test:testDelegateExecuteRevertsIfOwnerSlotValueChanged() (gas: 320067) ERC4337Test:testDepositFunctions() (gas: 497021) ERC4337Test:testDirectStorage() (gas: 70503) @@ -261,10 +261,10 @@ ERC4337Test:testDisableInitializerForImplementation() (gas: 1335854) ERC4337Test:testETHReceived() (gas: 16584) ERC4337Test:testExecute() (gas: 383460) ERC4337Test:testExecuteBatch() (gas: 694187) -ERC4337Test:testExecuteBatch(uint256) (runs: 256, μ: 542278, ~: 574709) +ERC4337Test:testExecuteBatch(uint256) (runs: 312, μ: 554345, ~: 670564) ERC4337Test:testInitializer() (gas: 285469) ERC4337Test:testIsValidSignature() (gas: 120389) -ERC4337Test:testIsValidSignaturePersonalSign(bytes32) (runs: 256, μ: 103658, ~: 103792) +ERC4337Test:testIsValidSignaturePersonalSign(bytes32) (runs: 312, μ: 103666, ~: 103792) ERC4337Test:testIsValidSignatureViaRPC() (gas: 96881547) ERC4337Test:testIsValidSignatureWrapped() (gas: 446290) ERC4337Test:testOnERC1155BatchReceived() (gas: 1567013) @@ -275,15 +275,15 @@ ERC4337Test:testValidateUserOp() (gas: 484606) ERC4337Test:test__codesize() (gas: 57576) ERC4626Test:testDepositWithNoApprovalReverts() (gas: 16569) ERC4626Test:testDepositWithNotEnoughApprovalReverts() (gas: 90179) -ERC4626Test:testDifferentialFullMulDiv(uint256,uint256,uint256) (runs: 256, μ: 3311, ~: 3107) +ERC4626Test:testDifferentialFullMulDiv(uint256,uint256,uint256) (runs: 312, μ: 3319, ~: 3107) 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: 256, μ: 201956, ~: 201960) -ERC4626Test:testSingleMintRedeem(uint128) (runs: 256, μ: 200921, ~: 200926) +ERC4626Test:testSingleDepositWithdraw(uint128) (runs: 312, μ: 201955, ~: 201960) +ERC4626Test:testSingleMintRedeem(uint128) (runs: 312, μ: 200921, ~: 200926) ERC4626Test:testTryGetAssetDecimals() (gas: 31508026) ERC4626Test:testUseVirtualShares() (gas: 2428448) ERC4626Test:testVaultInteractionsForSomeoneElse() (gas: 296637) @@ -294,292 +294,292 @@ ERC4626Test:testWithdrawZero() (gas: 51874) ERC4626Test:test__codesize() (gas: 37159) ERC6551Test:testBaseFeeMini() (gas: 39514) ERC6551Test:testCdFallback() (gas: 895410) -ERC6551Test:testDeployERC6551(uint256) (runs: 256, μ: 169946, ~: 168368) +ERC6551Test:testDeployERC6551(uint256) (runs: 312, μ: 169798, ~: 168368) ERC6551Test:testDeployERC6551Proxy() (gas: 80395) ERC6551Test:testExecute() (gas: 507128) ERC6551Test:testExecuteBatch() (gas: 817215) -ERC6551Test:testExecuteBatch(uint256) (runs: 256, μ: 655820, ~: 768676) +ERC6551Test:testExecuteBatch(uint256) (runs: 312, μ: 659476, ~: 768687) ERC6551Test:testInitializeERC6551ProxyImplementation() (gas: 189772) -ERC6551Test:testIsValidSigner(address) (runs: 256, μ: 167135, ~: 167122) +ERC6551Test:testIsValidSigner(address) (runs: 312, μ: 167134, ~: 167120) ERC6551Test:testOnERC1155BatchReceived() (gas: 1702178) ERC6551Test:testOnERC1155Received() (gas: 1699450) ERC6551Test:testOnERC721Received() (gas: 1738043) ERC6551Test:testOnERC721ReceivedCycles() (gas: 2910842) -ERC6551Test:testOnERC721ReceivedCyclesWithDifferentChainIds(uint256) (runs: 256, μ: 449188, ~: 454608) -ERC6551Test:testOwnerWorksWithChainIdChange(uint256,uint256) (runs: 256, μ: 1386474, ~: 1386487) +ERC6551Test:testOnERC721ReceivedCyclesWithDifferentChainIds(uint256) (runs: 312, μ: 449730, ~: 454716) +ERC6551Test:testOwnerWorksWithChainIdChange(uint256,uint256) (runs: 312, μ: 1386479, ~: 1386487) ERC6551Test:testSupportsInterface() (gas: 168794) -ERC6551Test:testUpdateState(uint256) (runs: 256, μ: 234548, ~: 234461) +ERC6551Test:testUpdateState(uint256) (runs: 312, μ: 234528, ~: 234457) ERC6551Test:testUpgrade() (gas: 248210) ERC6551Test:test__codesize() (gas: 52683) ERC6909Test:testApprove() (gas: 36872) -ERC6909Test:testApprove(address,uint256,uint256) (runs: 256, μ: 37436, ~: 37514) +ERC6909Test:testApprove(address,uint256,uint256) (runs: 312, μ: 37386, ~: 37514) ERC6909Test:testBurn() (gas: 40870) -ERC6909Test:testBurn(address,uint256,uint256,uint256) (runs: 256, μ: 40651, ~: 41381) -ERC6909Test:testBurnInsufficientBalanceReverts(address,uint256,uint256,uint256) (runs: 256, μ: 35080, ~: 35166) +ERC6909Test:testBurn(address,uint256,uint256,uint256) (runs: 312, μ: 40693, ~: 41381) +ERC6909Test:testBurnInsufficientBalanceReverts(address,uint256,uint256,uint256) (runs: 312, μ: 35046, ~: 35166) ERC6909Test:testDecimals() (gas: 5676) ERC6909Test:testDirectApprove() (gas: 36737) -ERC6909Test:testDirectFunctions(uint256) (runs: 256, μ: 199458, ~: 200633) +ERC6909Test:testDirectFunctions(uint256) (runs: 312, μ: 199924, ~: 200649) ERC6909Test:testDirectSetOperator() (gas: 35937) ERC6909Test:testDirectTransfer() (gas: 66221) ERC6909Test:testInfiniteApproveTransferFrom() (gas: 78590) -ERC6909Test:testMetadata(uint256) (runs: 256, μ: 8257, ~: 8257) +ERC6909Test:testMetadata(uint256) (runs: 312, μ: 8257, ~: 8257) ERC6909Test:testMint() (gas: 37035) -ERC6909Test:testMint(address,uint256,uint256) (runs: 256, μ: 37193, ~: 37271) +ERC6909Test:testMint(address,uint256,uint256) (runs: 312, μ: 37143, ~: 37271) ERC6909Test:testMintOverMaxUintReverts() (gas: 34604) -ERC6909Test:testMintOverMaxUintReverts(address,uint256,uint256,uint256) (runs: 256, μ: 35513, ~: 35528) +ERC6909Test:testMintOverMaxUintReverts(address,uint256,uint256,uint256) (runs: 312, μ: 35514, ~: 35528) ERC6909Test:testOperatorTransferFrom() (gas: 74112) ERC6909Test:testSetOperator() (gas: 37139) -ERC6909Test:testSetOperator(address,address,bool) (runs: 256, μ: 26406, ~: 16767) +ERC6909Test:testSetOperator(address,address,bool) (runs: 312, μ: 26270, ~: 16767) ERC6909Test:testTokenURI() (gas: 32671) ERC6909Test:testTransfer() (gas: 48262) -ERC6909Test:testTransfer(address,uint256,uint256) (runs: 256, μ: 47318, ~: 47396) +ERC6909Test:testTransfer(address,uint256,uint256) (runs: 312, μ: 47258, ~: 47390) ERC6909Test:testTransferFrom() (gas: 74676) -ERC6909Test:testTransferFrom(address,address,address,uint256,uint256,uint256) (runs: 256, μ: 80006, ~: 81173) -ERC6909Test:testTransferFromCallerIsNotOperator(address,uint256,uint256) (runs: 256, μ: 39606, ~: 39606) -ERC6909Test:testTransferFromInsufficientAllowanceReverts(address,uint256,uint256,uint256) (runs: 256, μ: 67220, ~: 67771) +ERC6909Test:testTransferFrom(address,address,address,uint256,uint256,uint256) (runs: 312, μ: 79961, ~: 81173) +ERC6909Test:testTransferFromCallerIsNotOperator(address,uint256,uint256) (runs: 312, μ: 39606, ~: 39606) +ERC6909Test:testTransferFromInsufficientAllowanceReverts(address,uint256,uint256,uint256) (runs: 312, μ: 67204, ~: 67771) ERC6909Test:testTransferFromInsufficientBalanceReverts() (gas: 49861) -ERC6909Test:testTransferFromInsufficientBalanceReverts(address,uint256,uint256,uint256) (runs: 256, μ: 50557, ~: 50090) +ERC6909Test:testTransferFromInsufficientBalanceReverts(address,uint256,uint256,uint256) (runs: 312, μ: 50477, ~: 50092) ERC6909Test:testTransferFromInsufficientPermission() (gas: 67246) ERC6909Test:testTransferFromOverMaxUintReverts() (gas: 90493) -ERC6909Test:testTransferFromOverMaxUintReverts(address,uint256,uint256,uint256) (runs: 256, μ: 113354, ~: 113593) +ERC6909Test:testTransferFromOverMaxUintReverts(address,uint256,uint256,uint256) (runs: 312, μ: 113398, ~: 113592) ERC6909Test:testTransferInsufficientBalanceReverts() (gas: 34728) -ERC6909Test:testTransferInsufficientBalanceReverts(address,uint256,uint256,uint256) (runs: 256, μ: 34875, ~: 35270) +ERC6909Test:testTransferInsufficientBalanceReverts(address,uint256,uint256,uint256) (runs: 312, μ: 34894, ~: 35270) ERC6909Test:testTransferOverMaxUintReverts() (gas: 63748) -ERC6909Test:testTransferOverMaxUintReverts(address,uint256,uint256,uint256) (runs: 256, μ: 64305, ~: 64293) +ERC6909Test:testTransferOverMaxUintReverts(address,uint256,uint256,uint256) (runs: 312, μ: 64303, ~: 64292) ERC6909Test:test__codesize() (gas: 25915) ERC721HooksTest:testERC721Hooks() (gas: 3183310) ERC721HooksTest:test__codesize() (gas: 11072) -ERC721Test:testApprove(uint256) (runs: 256, μ: 107751, ~: 107561) -ERC721Test:testApproveAll(uint256) (runs: 256, μ: 50378, ~: 59583) -ERC721Test:testApproveBurn(uint256) (runs: 256, μ: 86298, ~: 86288) -ERC721Test:testApproveNonExistentReverts(uint256,address) (runs: 256, μ: 33463, ~: 33471) -ERC721Test:testApproveUnauthorizedReverts(uint256) (runs: 256, μ: 83037, ~: 82418) -ERC721Test:testAuthorizedEquivalence(address,bool,bool) (runs: 256, μ: 684, ~: 678) -ERC721Test:testAux(uint256) (runs: 256, μ: 192635, ~: 191445) -ERC721Test:testBurn(uint256) (runs: 256, μ: 82422, ~: 93566) -ERC721Test:testBurnNonExistentReverts(uint256) (runs: 256, μ: 10805, ~: 10805) +ERC721Test:testApprove(uint256) (runs: 312, μ: 107756, ~: 107561) +ERC721Test:testApproveAll(uint256) (runs: 312, μ: 50139, ~: 59583) +ERC721Test:testApproveBurn(uint256) (runs: 312, μ: 86292, ~: 86143) +ERC721Test:testApproveNonExistentReverts(uint256,address) (runs: 312, μ: 33463, ~: 33471) +ERC721Test:testApproveUnauthorizedReverts(uint256) (runs: 312, μ: 83071, ~: 84124) +ERC721Test:testAuthorizedEquivalence(address,bool,bool) (runs: 312, μ: 684, ~: 678) +ERC721Test:testAux(uint256) (runs: 312, μ: 192589, ~: 191199) +ERC721Test:testBurn(uint256) (runs: 312, μ: 81588, ~: 68910) +ERC721Test:testBurnNonExistentReverts(uint256) (runs: 312, μ: 10805, ~: 10805) ERC721Test:testCannotExceedMaxBalance() (gas: 169848) -ERC721Test:testDoubleBurnReverts(uint256) (runs: 256, μ: 63403, ~: 63412) -ERC721Test:testDoubleMintReverts(uint256) (runs: 256, μ: 79002, ~: 79014) -ERC721Test:testEverything(uint256) (runs: 256, μ: 286725, ~: 300882) -ERC721Test:testExtraData(uint256) (runs: 256, μ: 98826, ~: 98763) -ERC721Test:testExtraData2(uint256,uint256) (runs: 256, μ: 53889, ~: 53889) -ERC721Test:testIsApprovedOrOwner(uint256) (runs: 256, μ: 135458, ~: 135484) -ERC721Test:testMint(uint256) (runs: 256, μ: 82597, ~: 82558) -ERC721Test:testMintAndSetExtraDataUnchecked(uint256) (runs: 256, μ: 84232, ~: 84319) -ERC721Test:testMintAndSetExtraDataUncheckedWithOverwrite(uint256,uint96) (runs: 256, μ: 83683, ~: 83678) -ERC721Test:testMintToZeroReverts(uint256) (runs: 256, μ: 39510, ~: 39510) -ERC721Test:testOwnerOfNonExistent(uint256) (runs: 256, μ: 33174, ~: 33185) -ERC721Test:testSafeMintToEOA(uint256) (runs: 256, μ: 83031, ~: 82947) -ERC721Test:testSafeMintToERC721Recipient(uint256) (runs: 256, μ: 409509, ~: 409728) -ERC721Test:testSafeMintToERC721RecipientWithData(uint256,bytes) (runs: 256, μ: 460124, ~: 453669) -ERC721Test:testSafeMintToERC721RecipientWithWrongReturnData(uint256) (runs: 256, μ: 170407, ~: 170407) -ERC721Test:testSafeMintToERC721RecipientWithWrongReturnDataWithData(uint256,bytes) (runs: 256, μ: 171612, ~: 171569) -ERC721Test:testSafeMintToNonERC721RecipientReverts(uint256) (runs: 256, μ: 100507, ~: 100507) -ERC721Test:testSafeMintToNonERC721RecipientWithDataReverts(uint256,bytes) (runs: 256, μ: 101744, ~: 101701) -ERC721Test:testSafeMintToRevertingERC721RecipientReverts(uint256) (runs: 256, μ: 203343, ~: 203343) -ERC721Test:testSafeMintToRevertingERC721RecipientWithDataReverts(uint256,bytes) (runs: 256, μ: 204569, ~: 204526) -ERC721Test:testSafeTransferFromToEOA(uint256) (runs: 256, μ: 121529, ~: 121523) -ERC721Test:testSafeTransferFromToERC721Recipient(uint256) (runs: 256, μ: 470889, ~: 471203) -ERC721Test:testSafeTransferFromToERC721RecipientWithData(uint256,bytes) (runs: 256, μ: 521522, ~: 515028) -ERC721Test:testSafeTransferFromToERC721RecipientWithWrongReturnDataReverts(uint256) (runs: 256, μ: 201388, ~: 201420) -ERC721Test:testSafeTransferFromToERC721RecipientWithWrongReturnDataWithDataReverts(uint256,bytes) (runs: 256, μ: 202696, ~: 202710) -ERC721Test:testSafeTransferFromToNonERC721RecipientReverts(uint256) (runs: 256, μ: 131491, ~: 131523) -ERC721Test:testSafeTransferFromToNonERC721RecipientWithDataReverts(uint256,bytes) (runs: 256, μ: 132790, ~: 132802) -ERC721Test:testSafeTransferFromToRevertingERC721RecipientReverts(uint256) (runs: 256, μ: 234344, ~: 234311) -ERC721Test:testSafeTransferFromToRevertingERC721RecipientWithDataReverts(uint256,bytes) (runs: 256, μ: 235581, ~: 235600) -ERC721Test:testSafetyOfCustomStorage(uint256,uint256) (runs: 256, μ: 713, ~: 713) +ERC721Test:testDoubleBurnReverts(uint256) (runs: 312, μ: 63402, ~: 63412) +ERC721Test:testDoubleMintReverts(uint256) (runs: 312, μ: 79001, ~: 79014) +ERC721Test:testEverything(uint256) (runs: 312, μ: 289664, ~: 300942) +ERC721Test:testExtraData(uint256) (runs: 312, μ: 98799, ~: 98711) +ERC721Test:testExtraData2(uint256,uint256) (runs: 312, μ: 53889, ~: 53889) +ERC721Test:testIsApprovedOrOwner(uint256) (runs: 312, μ: 135436, ~: 135425) +ERC721Test:testMint(uint256) (runs: 312, μ: 82599, ~: 82558) +ERC721Test:testMintAndSetExtraDataUnchecked(uint256) (runs: 312, μ: 84231, ~: 84319) +ERC721Test:testMintAndSetExtraDataUncheckedWithOverwrite(uint256,uint96) (runs: 312, μ: 83683, ~: 83678) +ERC721Test:testMintToZeroReverts(uint256) (runs: 312, μ: 39510, ~: 39510) +ERC721Test:testOwnerOfNonExistent(uint256) (runs: 312, μ: 33175, ~: 33185) +ERC721Test:testSafeMintToEOA(uint256) (runs: 312, μ: 83032, ~: 83117) +ERC721Test:testSafeMintToERC721Recipient(uint256) (runs: 312, μ: 409373, ~: 409728) +ERC721Test:testSafeMintToERC721RecipientWithData(uint256,bytes) (runs: 312, μ: 459434, ~: 453669) +ERC721Test:testSafeMintToERC721RecipientWithWrongReturnData(uint256) (runs: 312, μ: 170407, ~: 170407) +ERC721Test:testSafeMintToERC721RecipientWithWrongReturnDataWithData(uint256,bytes) (runs: 312, μ: 171612, ~: 171569) +ERC721Test:testSafeMintToNonERC721RecipientReverts(uint256) (runs: 312, μ: 100507, ~: 100507) +ERC721Test:testSafeMintToNonERC721RecipientWithDataReverts(uint256,bytes) (runs: 312, μ: 101744, ~: 101701) +ERC721Test:testSafeMintToRevertingERC721RecipientReverts(uint256) (runs: 312, μ: 203343, ~: 203343) +ERC721Test:testSafeMintToRevertingERC721RecipientWithDataReverts(uint256,bytes) (runs: 312, μ: 204569, ~: 204526) +ERC721Test:testSafeTransferFromToEOA(uint256) (runs: 312, μ: 121529, ~: 121523) +ERC721Test:testSafeTransferFromToERC721Recipient(uint256) (runs: 312, μ: 470748, ~: 471194) +ERC721Test:testSafeTransferFromToERC721RecipientWithData(uint256,bytes) (runs: 312, μ: 520832, ~: 515009) +ERC721Test:testSafeTransferFromToERC721RecipientWithWrongReturnDataReverts(uint256) (runs: 312, μ: 201386, ~: 201420) +ERC721Test:testSafeTransferFromToERC721RecipientWithWrongReturnDataWithDataReverts(uint256,bytes) (runs: 312, μ: 202697, ~: 202710) +ERC721Test:testSafeTransferFromToNonERC721RecipientReverts(uint256) (runs: 312, μ: 131493, ~: 131523) +ERC721Test:testSafeTransferFromToNonERC721RecipientWithDataReverts(uint256,bytes) (runs: 312, μ: 132789, ~: 132802) +ERC721Test:testSafeTransferFromToRevertingERC721RecipientReverts(uint256) (runs: 312, μ: 234343, ~: 234311) +ERC721Test:testSafeTransferFromToRevertingERC721RecipientWithDataReverts(uint256,bytes) (runs: 312, μ: 235581, ~: 235600) +ERC721Test:testSafetyOfCustomStorage(uint256,uint256) (runs: 312, μ: 713, ~: 713) ERC721Test:testTransferFrom() (gas: 85739) -ERC721Test:testTransferFrom(uint256) (runs: 256, μ: 113491, ~: 112180) -ERC721Test:testTransferFromApproveAll(uint256) (runs: 256, μ: 118756, ~: 118747) -ERC721Test:testTransferFromNotExistentReverts(address,address,uint256) (runs: 256, μ: 34040, ~: 33940) -ERC721Test:testTransferFromNotOwner(uint256) (runs: 256, μ: 84550, ~: 84636) -ERC721Test:testTransferFromSelf(uint256) (runs: 256, μ: 92237, ~: 92265) -ERC721Test:testTransferFromToZeroReverts(uint256) (runs: 256, μ: 62885, ~: 62828) -ERC721Test:testTransferFromWrongFromReverts(address,uint256) (runs: 256, μ: 80279, ~: 80355) +ERC721Test:testTransferFrom(uint256) (runs: 312, μ: 113382, ~: 112187) +ERC721Test:testTransferFromApproveAll(uint256) (runs: 312, μ: 118760, ~: 118733) +ERC721Test:testTransferFromNotExistentReverts(address,address,uint256) (runs: 312, μ: 34038, ~: 33940) +ERC721Test:testTransferFromNotOwner(uint256) (runs: 312, μ: 84547, ~: 84636) +ERC721Test:testTransferFromSelf(uint256) (runs: 312, μ: 92235, ~: 92237) +ERC721Test:testTransferFromToZeroReverts(uint256) (runs: 312, μ: 62888, ~: 62831) +ERC721Test:testTransferFromWrongFromReverts(address,uint256) (runs: 312, μ: 80277, ~: 80355) ERC721Test:test__codesize() (gas: 43206) EfficientHashLibTest:testEfficientHash() (gas: 7544) -EfficientHashLibTest:testEfficientHash(uint256) (runs: 256, μ: 7615, ~: 7615) +EfficientHashLibTest:testEfficientHash(uint256) (runs: 312, μ: 7615, ~: 7615) EfficientHashLibTest:testEfficientHashFree() (gas: 372) -EfficientHashLibTest:testEfficientHashFree(uint8,bool,uint8) (runs: 256, μ: 961, ~: 822) +EfficientHashLibTest:testEfficientHashFree(uint8,bool,uint8) (runs: 312, μ: 972, ~: 908) 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: 256, μ: 47174, ~: 38848) +EnumerableSetLibTest:testEnumerableAddressSetRevertsOnSentinel(uint256) (runs: 312, μ: 47893, ~: 40272) EnumerableSetLibTest:testEnumerableBytes32SetBasic() (gas: 271282) EnumerableSetLibTest:testEnumerableBytes32SetBasic2() (gas: 178471) EnumerableSetLibTest:testEnumerableBytes32SetNoStorageCollision() (gas: 103477) -EnumerableSetLibTest:testEnumerableBytes32SetRevertsOnSentinel(uint256) (runs: 256, μ: 52232, ~: 49215) -EnumerableSetLibTest:testEnumerableSetFuzz(uint256) (runs: 256, μ: 602908, ~: 508798) +EnumerableSetLibTest:testEnumerableBytes32SetRevertsOnSentinel(uint256) (runs: 312, μ: 51789, ~: 49215) +EnumerableSetLibTest:testEnumerableSetFuzz(uint256) (runs: 312, μ: 593920, ~: 511282) EnumerableSetLibTest:test__codesize() (gas: 14243) FixedPointMathLibTest:testAbs() (gas: 702) -FixedPointMathLibTest:testAbs(int256) (runs: 256, μ: 489, ~: 457) +FixedPointMathLibTest:testAbs(int256) (runs: 312, μ: 489, ~: 457) FixedPointMathLibTest:testAbsEdgeCases() (gas: 469) FixedPointMathLibTest:testAvg() (gas: 443) FixedPointMathLibTest:testAvgEdgeCase() (gas: 470) FixedPointMathLibTest:testAvgSigned() (gas: 900) FixedPointMathLibTest:testCbrt() (gas: 10283) -FixedPointMathLibTest:testCbrt(uint256) (runs: 256, μ: 1521, ~: 1535) -FixedPointMathLibTest:testCbrtBack(uint256) (runs: 256, μ: 34153, ~: 42245) +FixedPointMathLibTest:testCbrt(uint256) (runs: 312, μ: 1522, ~: 1535) +FixedPointMathLibTest:testCbrtBack(uint256) (runs: 312, μ: 34682, ~: 43208) FixedPointMathLibTest:testCbrtWad() (gas: 12051) -FixedPointMathLibTest:testCbrtWad(uint256) (runs: 256, μ: 2149, ~: 1973) +FixedPointMathLibTest:testCbrtWad(uint256) (runs: 312, μ: 2149, ~: 1973) FixedPointMathLibTest:testCbrtWadConverged() (gas: 2664) -FixedPointMathLibTest:testCbrtWadConverged(uint256) (runs: 256, μ: 2185, ~: 2236) +FixedPointMathLibTest:testCbrtWadConverged(uint256) (runs: 312, μ: 2184, ~: 2236) FixedPointMathLibTest:testCbrtWadDebug() (gas: 7338) FixedPointMathLibTest:testCbrtWadMonotonicallyIncreasing() (gas: 4140) -FixedPointMathLibTest:testCbrtWadMonotonicallyIncreasing(uint256,uint256) (runs: 256, μ: 3028, ~: 2933) -FixedPointMathLibTest:testClamp(uint256,uint256,uint256) (runs: 256, μ: 569, ~: 568) -FixedPointMathLibTest:testClampSigned(int256,int256,int256) (runs: 256, μ: 547, ~: 547) +FixedPointMathLibTest:testCbrtWadMonotonicallyIncreasing(uint256,uint256) (runs: 312, μ: 3084, ~: 2933) +FixedPointMathLibTest:testClamp(uint256,uint256,uint256) (runs: 312, μ: 569, ~: 568) +FixedPointMathLibTest:testClampSigned(int256,int256,int256) (runs: 312, μ: 548, ~: 547) FixedPointMathLibTest:testDist() (gas: 678) -FixedPointMathLibTest:testDist(int256,int256) (runs: 256, μ: 542, ~: 547) +FixedPointMathLibTest:testDist(int256,int256) (runs: 312, μ: 541, ~: 537) FixedPointMathLibTest:testDistEdgeCases() (gas: 570) FixedPointMathLibTest:testDivWad() (gas: 747) -FixedPointMathLibTest:testDivWad(uint256,uint256) (runs: 256, μ: 7528, ~: 891) +FixedPointMathLibTest:testDivWad(uint256,uint256) (runs: 312, μ: 7018, ~: 891) FixedPointMathLibTest:testDivWadEdgeCases() (gas: 414) -FixedPointMathLibTest:testDivWadOverflowReverts(uint256,uint256) (runs: 256, μ: 21995, ~: 26501) +FixedPointMathLibTest:testDivWadOverflowReverts(uint256,uint256) (runs: 312, μ: 22390, ~: 26501) FixedPointMathLibTest:testDivWadUp() (gas: 3129) -FixedPointMathLibTest:testDivWadUp(uint256,uint256) (runs: 256, μ: 7672, ~: 1009) +FixedPointMathLibTest:testDivWadUp(uint256,uint256) (runs: 312, μ: 7230, ~: 1009) FixedPointMathLibTest:testDivWadUpEdgeCases() (gas: 439) -FixedPointMathLibTest:testDivWadUpOverflowReverts(uint256,uint256) (runs: 256, μ: 22015, ~: 26500) +FixedPointMathLibTest:testDivWadUpOverflowReverts(uint256,uint256) (runs: 312, μ: 22392, ~: 26500) FixedPointMathLibTest:testDivWadUpZeroDenominatorReverts() (gas: 3261) -FixedPointMathLibTest:testDivWadUpZeroDenominatorReverts(uint256) (runs: 256, μ: 3295, ~: 3295) +FixedPointMathLibTest:testDivWadUpZeroDenominatorReverts(uint256) (runs: 312, μ: 3295, ~: 3295) FixedPointMathLibTest:testDivWadZeroDenominatorReverts() (gas: 3218) -FixedPointMathLibTest:testDivWadZeroDenominatorReverts(uint256) (runs: 256, μ: 3337, ~: 3337) +FixedPointMathLibTest:testDivWadZeroDenominatorReverts(uint256) (runs: 312, μ: 3337, ~: 3337) FixedPointMathLibTest:testExpWad() (gas: 8047) FixedPointMathLibTest:testFactorial() (gas: 98491) FixedPointMathLibTest:testFactorialOriginal() (gas: 94187) FixedPointMathLibTest:testFullMulDiv() (gas: 1128) -FixedPointMathLibTest:testFullMulDiv(uint256,uint256,uint256) (runs: 256, μ: 1360, ~: 983) -FixedPointMathLibTest:testFullMulDivAlwaysRevertsIfDivisorIsZero(uint256,uint256) (runs: 256, μ: 3478, ~: 3478) +FixedPointMathLibTest:testFullMulDiv(uint256,uint256,uint256) (runs: 312, μ: 1397, ~: 983) +FixedPointMathLibTest:testFullMulDivAlwaysRevertsIfDivisorIsZero(uint256,uint256) (runs: 312, μ: 3478, ~: 3478) FixedPointMathLibTest:testFullMulDivUnchecked() (gas: 1635) -FixedPointMathLibTest:testFullMulDivUnchecked(uint256,uint256,uint256) (runs: 256, μ: 1664, ~: 1565) -FixedPointMathLibTest:testFullMulDivUp(uint256,uint256,uint256) (runs: 256, μ: 1723, ~: 1427) +FixedPointMathLibTest:testFullMulDivUnchecked(uint256,uint256,uint256) (runs: 312, μ: 1668, ~: 1565) +FixedPointMathLibTest:testFullMulDivUp(uint256,uint256,uint256) (runs: 312, μ: 1750, ~: 1427) FixedPointMathLibTest:testFullMulDivUpRevertsIfRoundedUpResultOverflowsCase1() (gas: 3694) FixedPointMathLibTest:testFullMulDivUpRevertsIfRoundedUpResultOverflowsCase2() (gas: 3727) FixedPointMathLibTest:testGcd() (gas: 4206) -FixedPointMathLibTest:testGcd(uint256,uint256) (runs: 256, μ: 6589, ~: 2822) -FixedPointMathLibTest:testIsEven(uint256) (runs: 256, μ: 519, ~: 519) +FixedPointMathLibTest:testGcd(uint256,uint256) (runs: 312, μ: 6646, ~: 2822) +FixedPointMathLibTest:testIsEven(uint256) (runs: 312, μ: 519, ~: 519) FixedPointMathLibTest:testLambertW0WadAccuracy() (gas: 7160) -FixedPointMathLibTest:testLambertW0WadAccuracy(uint184) (runs: 256, μ: 2406, ~: 431) +FixedPointMathLibTest:testLambertW0WadAccuracy(uint184) (runs: 312, μ: 2442, ~: 431) FixedPointMathLibTest:testLambertW0WadKnownValues() (gas: 1685570) FixedPointMathLibTest:testLambertW0WadMonoDebug() (gas: 770645) FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasing() (gas: 18416531) -FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasing(int256,int256) (runs: 256, μ: 7166, ~: 6978) +FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasing(int256,int256) (runs: 312, μ: 7239, ~: 6978) FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasing2() (gas: 4035368) -FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasingAround(int256) (runs: 256, μ: 29401, ~: 35428) -FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasingAround2(uint96) (runs: 256, μ: 41241, ~: 17640) +FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasingAround(int256) (runs: 312, μ: 29465, ~: 35428) +FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasingAround2(uint96) (runs: 312, μ: 50888, ~: 17640) FixedPointMathLibTest:testLambertW0WadRevertsForOutOfDomain() (gas: 16608) FixedPointMathLibTest:testLambertW0WadWithinBounds() (gas: 122061) -FixedPointMathLibTest:testLambertW0WadWithinBounds(int256) (runs: 256, μ: 3741, ~: 4984) +FixedPointMathLibTest:testLambertW0WadWithinBounds(int256) (runs: 312, μ: 3766, ~: 4984) FixedPointMathLibTest:testLerpInt() (gas: 6461) -FixedPointMathLibTest:testLerpInt(int256,int256,int256,int256,int256) (runs: 256, μ: 1657, ~: 1198) +FixedPointMathLibTest:testLerpInt(int256,int256,int256,int256,int256) (runs: 312, μ: 1655, ~: 1198) FixedPointMathLibTest:testLerpUint() (gas: 6442) -FixedPointMathLibTest:testLerpUint(uint256,uint256,uint256,uint256,uint256) (runs: 256, μ: 1067, ~: 797) +FixedPointMathLibTest:testLerpUint(uint256,uint256,uint256,uint256,uint256) (runs: 312, μ: 1095, ~: 797) FixedPointMathLibTest:testLnWad() (gas: 2054) FixedPointMathLibTest:testLnWadBig() (gas: 2087) FixedPointMathLibTest:testLnWadNegativeReverts() (gas: 3318) FixedPointMathLibTest:testLnWadOverflowReverts() (gas: 3316) FixedPointMathLibTest:testLnWadSmall() (gas: 2644) FixedPointMathLibTest:testLog10() (gas: 76168) -FixedPointMathLibTest:testLog10(uint256,uint256) (runs: 256, μ: 2166, ~: 2195) +FixedPointMathLibTest:testLog10(uint256,uint256) (runs: 312, μ: 2161, ~: 2195) FixedPointMathLibTest:testLog10Up() (gas: 4369) FixedPointMathLibTest:testLog2() (gas: 243209) FixedPointMathLibTest:testLog256() (gas: 22831) -FixedPointMathLibTest:testLog256(uint256,uint256) (runs: 256, μ: 2092, ~: 2152) +FixedPointMathLibTest:testLog256(uint256,uint256) (runs: 312, μ: 2086, ~: 2152) FixedPointMathLibTest:testLog256Up() (gas: 1293) -FixedPointMathLibTest:testLog2Differential(uint256) (runs: 256, μ: 890, ~: 886) +FixedPointMathLibTest:testLog2Differential(uint256) (runs: 312, μ: 889, ~: 886) FixedPointMathLibTest:testLog2Up() (gas: 297368) -FixedPointMathLibTest:testMax(uint256,uint256) (runs: 256, μ: 476, ~: 472) -FixedPointMathLibTest:testMaxCasted(uint32,uint32,uint256) (runs: 256, μ: 891, ~: 896) -FixedPointMathLibTest:testMaxSigned(int256,int256) (runs: 256, μ: 519, ~: 515) -FixedPointMathLibTest:testMin(uint256,uint256) (runs: 256, μ: 477, ~: 482) -FixedPointMathLibTest:testMinBrutalized(uint256,uint256) (runs: 256, μ: 873, ~: 883) -FixedPointMathLibTest:testMinSigned(int256,int256) (runs: 256, μ: 498, ~: 503) +FixedPointMathLibTest:testMax(uint256,uint256) (runs: 312, μ: 476, ~: 472) +FixedPointMathLibTest:testMaxCasted(uint32,uint32,uint256) (runs: 312, μ: 891, ~: 896) +FixedPointMathLibTest:testMaxSigned(int256,int256) (runs: 312, μ: 520, ~: 525) +FixedPointMathLibTest:testMin(uint256,uint256) (runs: 312, μ: 477, ~: 482) +FixedPointMathLibTest:testMinBrutalized(uint256,uint256) (runs: 312, μ: 872, ~: 863) +FixedPointMathLibTest:testMinSigned(int256,int256) (runs: 312, μ: 497, ~: 493) FixedPointMathLibTest:testMulDiv() (gas: 1890) -FixedPointMathLibTest:testMulDiv(uint256,uint256,uint256) (runs: 256, μ: 1625, ~: 858) +FixedPointMathLibTest:testMulDiv(uint256,uint256,uint256) (runs: 312, μ: 1666, ~: 858) FixedPointMathLibTest:testMulDivEdgeCases() (gas: 784) -FixedPointMathLibTest:testMulDivOverflowReverts(uint256,uint256,uint256) (runs: 256, μ: 20555, ~: 27078) +FixedPointMathLibTest:testMulDivOverflowReverts(uint256,uint256,uint256) (runs: 312, μ: 20152, ~: 27078) FixedPointMathLibTest:testMulDivUp() (gas: 2148) -FixedPointMathLibTest:testMulDivUp(uint256,uint256,uint256) (runs: 256, μ: 1802, ~: 1121) +FixedPointMathLibTest:testMulDivUp(uint256,uint256,uint256) (runs: 312, μ: 1834, ~: 1121) FixedPointMathLibTest:testMulDivUpEdgeCases() (gas: 817) -FixedPointMathLibTest:testMulDivUpOverflowReverts(uint256,uint256,uint256) (runs: 256, μ: 20543, ~: 27050) +FixedPointMathLibTest:testMulDivUpOverflowReverts(uint256,uint256,uint256) (runs: 312, μ: 20143, ~: 27044) FixedPointMathLibTest:testMulDivUpZeroDenominator() (gas: 3234) -FixedPointMathLibTest:testMulDivUpZeroDenominatorReverts(uint256,uint256) (runs: 256, μ: 3357, ~: 3357) +FixedPointMathLibTest:testMulDivUpZeroDenominatorReverts(uint256,uint256) (runs: 312, μ: 3357, ~: 3357) FixedPointMathLibTest:testMulDivZeroDenominatorReverts() (gas: 3256) -FixedPointMathLibTest:testMulDivZeroDenominatorReverts(uint256,uint256) (runs: 256, μ: 3380, ~: 3380) +FixedPointMathLibTest:testMulDivZeroDenominatorReverts(uint256,uint256) (runs: 312, μ: 3380, ~: 3380) FixedPointMathLibTest:testMulWad() (gas: 736) -FixedPointMathLibTest:testMulWad(uint256,uint256) (runs: 256, μ: 721, ~: 855) +FixedPointMathLibTest:testMulWad(uint256,uint256) (runs: 312, μ: 717, ~: 855) FixedPointMathLibTest:testMulWadEdgeCases() (gas: 714) -FixedPointMathLibTest:testMulWadOverflowReverts(uint256,uint256) (runs: 256, μ: 18865, ~: 26336) +FixedPointMathLibTest:testMulWadOverflowReverts(uint256,uint256) (runs: 312, μ: 18691, ~: 26336) FixedPointMathLibTest:testMulWadUp() (gas: 837) -FixedPointMathLibTest:testMulWadUp(uint256,uint256) (runs: 256, μ: 21198, ~: 1065) +FixedPointMathLibTest:testMulWadUp(uint256,uint256) (runs: 312, μ: 21354, ~: 1065) FixedPointMathLibTest:testMulWadUpEdgeCases() (gas: 815) -FixedPointMathLibTest:testMulWadUpOverflowReverts(uint256,uint256) (runs: 256, μ: 18891, ~: 26379) +FixedPointMathLibTest:testMulWadUpOverflowReverts(uint256,uint256) (runs: 312, μ: 18719, ~: 26379) FixedPointMathLibTest:testPackUnpackSci() (gas: 129327) -FixedPointMathLibTest:testPackUnpackSci(uint256) (runs: 256, μ: 30410, ~: 30414) +FixedPointMathLibTest:testPackUnpackSci(uint256) (runs: 312, μ: 30411, ~: 30420) FixedPointMathLibTest:testRPow() (gas: 3320) FixedPointMathLibTest:testRPowOverflowReverts() (gas: 4974) -FixedPointMathLibTest:testRawAdd(int256,int256) (runs: 256, μ: 462, ~: 462) -FixedPointMathLibTest:testRawAdd(uint256,uint256) (runs: 256, μ: 463, ~: 463) -FixedPointMathLibTest:testRawAddMod(uint256,uint256,uint256) (runs: 256, μ: 512, ~: 512) -FixedPointMathLibTest:testRawDiv(uint256,uint256) (runs: 256, μ: 443, ~: 443) -FixedPointMathLibTest:testRawMod(uint256,uint256) (runs: 256, μ: 464, ~: 464) -FixedPointMathLibTest:testRawMul(int256,int256) (runs: 256, μ: 412, ~: 412) -FixedPointMathLibTest:testRawMul(uint256,uint256) (runs: 256, μ: 485, ~: 485) -FixedPointMathLibTest:testRawMulMod(uint256,uint256,uint256) (runs: 256, μ: 579, ~: 579) -FixedPointMathLibTest:testRawSDiv(int256,int256) (runs: 256, μ: 465, ~: 465) -FixedPointMathLibTest:testRawSMod(int256,int256) (runs: 256, μ: 466, ~: 466) -FixedPointMathLibTest:testRawSub(int256,int256) (runs: 256, μ: 441, ~: 441) -FixedPointMathLibTest:testRawSub(uint256,uint256) (runs: 256, μ: 440, ~: 440) +FixedPointMathLibTest:testRawAdd(int256,int256) (runs: 312, μ: 462, ~: 462) +FixedPointMathLibTest:testRawAdd(uint256,uint256) (runs: 312, μ: 463, ~: 463) +FixedPointMathLibTest:testRawAddMod(uint256,uint256,uint256) (runs: 312, μ: 512, ~: 512) +FixedPointMathLibTest:testRawDiv(uint256,uint256) (runs: 312, μ: 443, ~: 443) +FixedPointMathLibTest:testRawMod(uint256,uint256) (runs: 312, μ: 464, ~: 464) +FixedPointMathLibTest:testRawMul(int256,int256) (runs: 312, μ: 412, ~: 412) +FixedPointMathLibTest:testRawMul(uint256,uint256) (runs: 312, μ: 485, ~: 485) +FixedPointMathLibTest:testRawMulMod(uint256,uint256,uint256) (runs: 312, μ: 579, ~: 579) +FixedPointMathLibTest:testRawSDiv(int256,int256) (runs: 312, μ: 465, ~: 465) +FixedPointMathLibTest:testRawSMod(int256,int256) (runs: 312, μ: 466, ~: 466) +FixedPointMathLibTest:testRawSub(int256,int256) (runs: 312, μ: 441, ~: 441) +FixedPointMathLibTest:testRawSub(uint256,uint256) (runs: 312, μ: 440, ~: 440) FixedPointMathLibTest:testSDivWad() (gas: 916) -FixedPointMathLibTest:testSDivWad(int256,int256) (runs: 256, μ: 6422, ~: 971) +FixedPointMathLibTest:testSDivWad(int256,int256) (runs: 312, μ: 6194, ~: 971) FixedPointMathLibTest:testSDivWadEdgeCases() (gas: 422) -FixedPointMathLibTest:testSDivWadOverflowReverts(int256,int256) (runs: 256, μ: 22559, ~: 26511) -FixedPointMathLibTest:testSDivWadZeroDenominatorReverts(int256) (runs: 256, μ: 3330, ~: 3330) +FixedPointMathLibTest:testSDivWadOverflowReverts(int256,int256) (runs: 312, μ: 22657, ~: 26511) +FixedPointMathLibTest:testSDivWadZeroDenominatorReverts(int256) (runs: 312, μ: 3330, ~: 3330) FixedPointMathLibTest:testSMulWad() (gas: 1032) -FixedPointMathLibTest:testSMulWad(int256,int256) (runs: 256, μ: 892, ~: 1047) +FixedPointMathLibTest:testSMulWad(int256,int256) (runs: 312, μ: 883, ~: 1047) FixedPointMathLibTest:testSMulWadEdgeCases() (gas: 1309) -FixedPointMathLibTest:testSMulWadOverflowRevertsOnCondition1(int256,int256) (runs: 256, μ: 20274, ~: 26556) -FixedPointMathLibTest:testSMulWadOverflowRevertsOnCondition2(int256) (runs: 256, μ: 19259, ~: 25788) -FixedPointMathLibTest:testSMulWadOverflowTrickDifferential(int256,int256) (runs: 256, μ: 622, ~: 632) +FixedPointMathLibTest:testSMulWadOverflowRevertsOnCondition1(int256,int256) (runs: 312, μ: 19923, ~: 26556) +FixedPointMathLibTest:testSMulWadOverflowRevertsOnCondition2(int256) (runs: 312, μ: 19382, ~: 25957) +FixedPointMathLibTest:testSMulWadOverflowTrickDifferential(int256,int256) (runs: 312, μ: 621, ~: 632) FixedPointMathLibTest:testSci() (gas: 1838614) -FixedPointMathLibTest:testSci(uint256) (runs: 256, μ: 33395, ~: 36169) -FixedPointMathLibTest:testSci2(uint256) (runs: 256, μ: 957, ~: 955) +FixedPointMathLibTest:testSci(uint256) (runs: 312, μ: 33321, ~: 35112) +FixedPointMathLibTest:testSci2(uint256) (runs: 312, μ: 956, ~: 955) FixedPointMathLibTest:testSqrt() (gas: 43798) -FixedPointMathLibTest:testSqrt(uint256) (runs: 256, μ: 1046, ~: 1054) -FixedPointMathLibTest:testSqrtBack(uint256) (runs: 256, μ: 10357, ~: 386) -FixedPointMathLibTest:testSqrtHashed(uint256) (runs: 256, μ: 54698, ~: 54872) +FixedPointMathLibTest:testSqrt(uint256) (runs: 312, μ: 1047, ~: 1054) +FixedPointMathLibTest:testSqrtBack(uint256) (runs: 312, μ: 10010, ~: 386) +FixedPointMathLibTest:testSqrtHashed(uint256) (runs: 312, μ: 54682, ~: 54659) FixedPointMathLibTest:testSqrtHashedSingle() (gas: 54587) FixedPointMathLibTest:testSqrtWad() (gas: 7937) -FixedPointMathLibTest:testSqrtWad(uint256) (runs: 256, μ: 1659, ~: 1580) -FixedPointMathLibTest:testSqrtWadConverged(uint256) (runs: 256, μ: 1962, ~: 1992) -FixedPointMathLibTest:testSqrtWadMonotonicallyIncreasing(uint256,uint256) (runs: 256, μ: 2192, ~: 1825) -FixedPointMathLibTest:testTernary(bool,uint256,uint256) (runs: 256, μ: 518, ~: 514) -FixedPointMathLibTest:testZeroFloorSub(uint256,uint256) (runs: 256, μ: 572, ~: 601) -FixedPointMathLibTest:testZeroFloorSubCasted(uint32,uint32,uint256) (runs: 256, μ: 881, ~: 846) +FixedPointMathLibTest:testSqrtWad(uint256) (runs: 312, μ: 1655, ~: 1580) +FixedPointMathLibTest:testSqrtWadConverged(uint256) (runs: 312, μ: 1962, ~: 1992) +FixedPointMathLibTest:testSqrtWadMonotonicallyIncreasing(uint256,uint256) (runs: 312, μ: 2240, ~: 1825) +FixedPointMathLibTest:testTernary(bool,uint256,uint256) (runs: 312, μ: 518, ~: 514) +FixedPointMathLibTest:testZeroFloorSub(uint256,uint256) (runs: 312, μ: 571, ~: 601) +FixedPointMathLibTest:testZeroFloorSubCasted(uint32,uint32,uint256) (runs: 312, μ: 880, ~: 846) FixedPointMathLibTest:test__codesize() (gas: 45155) GasBurnerLibTest:testBurn() (gas: 105035) -GasBurnerLibTest:testBurn(uint256) (runs: 256, μ: 43142, ~: 32706) +GasBurnerLibTest:testBurn(uint256) (runs: 312, μ: 43676, ~: 33930) GasBurnerLibTest:testBurnPure() (gas: 1700850) -GasBurnerLibTest:testBurnPure(uint256) (runs: 256, μ: 25005, ~: 24449) +GasBurnerLibTest:testBurnPure(uint256) (runs: 312, μ: 25016, ~: 24585) GasBurnerLibTest:testBurnPureTiming() (gas: 300223) GasBurnerLibTest:testBurnTiming() (gas: 293139) GasBurnerLibTest:testBurnView() (gas: 66700) -GasBurnerLibTest:testBurnView(uint256) (runs: 256, μ: 27225, ~: 26318) +GasBurnerLibTest:testBurnView(uint256) (runs: 312, μ: 27185, ~: 26318) GasBurnerLibTest:testBurnViewTiming() (gas: 294223) GasBurnerLibTest:test__codesize() (gas: 2389) InitializableTest:testDisableInitializers() (gas: 42010) InitializableTest:testInitializableConstructor() (gas: 691882) InitializableTest:testInitialize() (gas: 54688) -InitializableTest:testInitializeInititalizerTrick(bool,uint64,uint16) (runs: 256, μ: 790, ~: 791) -InitializableTest:testInitializeReinititalize(uint256) (runs: 256, μ: 96174, ~: 94588) -InitializableTest:testInitializeReinititalizerTrick(bool,uint64,uint64) (runs: 256, μ: 675, ~: 687) +InitializableTest:testInitializeInititalizerTrick(bool,uint64,uint16) (runs: 312, μ: 790, ~: 791) +InitializableTest:testInitializeReinititalize(uint256) (runs: 312, μ: 95945, ~: 94564) +InitializableTest:testInitializeReinititalizerTrick(bool,uint64,uint64) (runs: 312, μ: 674, ~: 687) InitializableTest:testOnlyInitializing() (gas: 10420) InitializableTest:test__codesize() (gas: 10480) -JSONParserLibTest:testDecodeEncodedStringDoesNotRevert(string) (runs: 256, μ: 57221, ~: 56403) +JSONParserLibTest:testDecodeEncodedStringDoesNotRevert(string) (runs: 312, μ: 57455, ~: 56403) JSONParserLibTest:testDecodeInvalidStringReverts() (gas: 172924) JSONParserLibTest:testDecodeString() (gas: 193269) JSONParserLibTest:testEmptyItem() (gas: 2913) @@ -587,9 +587,9 @@ JSONParserLibTest:testParseEmptyArrays() (gas: 499245) JSONParserLibTest:testParseEmptyObjects() (gas: 500206) JSONParserLibTest:testParseGas() (gas: 151909) JSONParserLibTest:testParseInt() (gas: 204229) -JSONParserLibTest:testParseInt(int256) (runs: 256, μ: 18767, ~: 17468) -JSONParserLibTest:testParseIntReverts(uint256) (runs: 256, μ: 55941, ~: 55929) -JSONParserLibTest:testParseIntTrick(uint256,bool) (runs: 256, μ: 528, ~: 532) +JSONParserLibTest:testParseInt(int256) (runs: 312, μ: 18734, ~: 17408) +JSONParserLibTest:testParseIntReverts(uint256) (runs: 312, μ: 55938, ~: 55929) +JSONParserLibTest:testParseIntTrick(uint256,bool) (runs: 312, μ: 528, ~: 532) JSONParserLibTest:testParseInvalidIntReverts() (gas: 210681) JSONParserLibTest:testParseInvalidNumberReverts() (gas: 4068682) JSONParserLibTest:testParseInvalidReverts() (gas: 8589165) @@ -605,156 +605,156 @@ JSONParserLibTest:testParseSimpleUintArray() (gas: 1175003) JSONParserLibTest:testParseSpecials() (gas: 260199) JSONParserLibTest:testParseString() (gas: 1237483) JSONParserLibTest:testParseUint() (gas: 95659) -JSONParserLibTest:testParseUint(uint256) (runs: 256, μ: 35463, ~: 31644) +JSONParserLibTest:testParseUint(uint256) (runs: 312, μ: 35350, ~: 31924) JSONParserLibTest:testParseUintFromHex() (gas: 1382724) -JSONParserLibTest:testParseValidObjectDoesNotRevert(string,string) (runs: 256, μ: 50040, ~: 48781) +JSONParserLibTest:testParseValidObjectDoesNotRevert(string,string) (runs: 312, μ: 50101, ~: 48844) JSONParserLibTest:test__codesize() (gas: 38087) LibBitTest:testAnd() (gas: 192789) -LibBitTest:testAnd(bool,bool) (runs: 256, μ: 632, ~: 634) -LibBitTest:testAutoClean(uint256,uint256) (runs: 256, μ: 468, ~: 468) -LibBitTest:testBoolToUint(bool) (runs: 256, μ: 485, ~: 485) +LibBitTest:testAnd(bool,bool) (runs: 312, μ: 632, ~: 634) +LibBitTest:testAutoClean(uint256,uint256) (runs: 312, μ: 468, ~: 468) +LibBitTest:testBoolToUint(bool) (runs: 312, μ: 485, ~: 485) LibBitTest:testCLZ() (gas: 297260) LibBitTest:testFFS() (gas: 152877) LibBitTest:testFLS() (gas: 245237) LibBitTest:testIsPo2() (gas: 57663) -LibBitTest:testIsPo2(uint256) (runs: 256, μ: 3562, ~: 1810) -LibBitTest:testIsPo2(uint8,uint8) (runs: 256, μ: 623, ~: 624) +LibBitTest:testIsPo2(uint256) (runs: 312, μ: 3531, ~: 2130) +LibBitTest:testIsPo2(uint8,uint8) (runs: 312, μ: 623, ~: 624) LibBitTest:testOr() (gas: 194336) -LibBitTest:testOr(bool,bool) (runs: 256, μ: 649, ~: 648) +LibBitTest:testOr(bool,bool) (runs: 312, μ: 649, ~: 648) LibBitTest:testPassInBool() (gas: 830) LibBitTest:testPopCount() (gas: 63738) -LibBitTest:testPopCount(uint256) (runs: 256, μ: 3704, ~: 1952) +LibBitTest:testPopCount(uint256) (runs: 312, μ: 3673, ~: 2272) LibBitTest:testReturnsBool() (gas: 779) LibBitTest:testReverseBits() (gas: 131521) -LibBitTest:testReverseBitsDifferential(uint256) (runs: 256, μ: 18724, ~: 18724) +LibBitTest:testReverseBitsDifferential(uint256) (runs: 312, μ: 18724, ~: 18724) LibBitTest:testReverseBytes() (gas: 12492) -LibBitTest:testReverseBytesDifferential(uint256) (runs: 256, μ: 2675, ~: 2675) +LibBitTest:testReverseBytesDifferential(uint256) (runs: 312, μ: 2675, ~: 2675) LibBitTest:test__codesize() (gas: 5842) LibBitmapTest:testBitmapClaimWithGetSet() (gas: 27156) LibBitmapTest:testBitmapClaimWithToggle() (gas: 17480) LibBitmapTest:testBitmapFindFirstUnset() (gas: 54669) -LibBitmapTest:testBitmapFindFirstUnset(uint256,uint256,bytes32) (runs: 256, μ: 140882, ~: 140160) +LibBitmapTest:testBitmapFindFirstUnset(uint256,uint256,bytes32) (runs: 312, μ: 140999, ~: 140204) LibBitmapTest:testBitmapFindLastSet() (gas: 1300541) -LibBitmapTest:testBitmapFindLastSet(uint256,bytes32) (runs: 256, μ: 75823, ~: 76235) +LibBitmapTest:testBitmapFindLastSet(uint256,bytes32) (runs: 312, μ: 75872, ~: 76217) LibBitmapTest:testBitmapFindLastSet2() (gas: 23882) LibBitmapTest:testBitmapGet() (gas: 2549) -LibBitmapTest:testBitmapGet(uint256) (runs: 256, μ: 2599, ~: 2599) +LibBitmapTest:testBitmapGet(uint256) (runs: 312, μ: 2599, ~: 2599) LibBitmapTest:testBitmapPopCount() (gas: 751877) -LibBitmapTest:testBitmapPopCount(uint256,uint256,uint256) (runs: 256, μ: 208813, ~: 174238) +LibBitmapTest:testBitmapPopCount(uint256,uint256,uint256) (runs: 312, μ: 210417, ~: 173650) LibBitmapTest:testBitmapPopCountAcrossMultipleBuckets() (gas: 73634) LibBitmapTest:testBitmapPopCountWithinSingleBucket() (gas: 34032) LibBitmapTest:testBitmapSet() (gas: 22771) -LibBitmapTest:testBitmapSet(uint256) (runs: 256, μ: 22843, ~: 22843) -LibBitmapTest:testBitmapSetAndGet(uint256) (runs: 256, μ: 22864, ~: 22864) +LibBitmapTest:testBitmapSet(uint256) (runs: 312, μ: 22843, ~: 22843) +LibBitmapTest:testBitmapSetAndGet(uint256) (runs: 312, μ: 22864, ~: 22864) LibBitmapTest:testBitmapSetBatch() (gas: 2918603) LibBitmapTest:testBitmapSetBatchAcrossMultipleBuckets() (gas: 438393) LibBitmapTest:testBitmapSetBatchWithinSingleBucket() (gas: 389011) LibBitmapTest:testBitmapSetTo() (gas: 14652) -LibBitmapTest:testBitmapSetTo(uint256,bool,uint256) (runs: 256, μ: 12914, ~: 3113) -LibBitmapTest:testBitmapSetTo(uint256,uint256) (runs: 256, μ: 47066, ~: 51391) +LibBitmapTest:testBitmapSetTo(uint256,bool,uint256) (runs: 312, μ: 12878, ~: 3113) +LibBitmapTest:testBitmapSetTo(uint256,uint256) (runs: 312, μ: 46810, ~: 51383) LibBitmapTest:testBitmapToggle() (gas: 31525) -LibBitmapTest:testBitmapToggle(uint256,bool) (runs: 256, μ: 19314, ~: 23572) +LibBitmapTest:testBitmapToggle(uint256,bool) (runs: 312, μ: 19298, ~: 23572) LibBitmapTest:testBitmapUnset() (gas: 22794) -LibBitmapTest:testBitmapUnset(uint256) (runs: 256, μ: 14511, ~: 14528) +LibBitmapTest:testBitmapUnset(uint256) (runs: 312, μ: 14510, ~: 14525) LibBitmapTest:testBitmapUnsetBatch() (gas: 2981123) LibBitmapTest:testBitmapUnsetBatchAcrossMultipleBuckets() (gas: 438470) LibBitmapTest:testBitmapUnsetBatchWithinSingleBucket() (gas: 445869) LibBitmapTest:test__codesize() (gas: 8720) LibCWIATest:testCloneDeteministicWithImmutableArgs() (gas: 191687) -LibCWIATest:testCloneDeteministicWithImmutableArgs(address,uint256,uint256[],bytes,uint64,uint8,uint256) (runs: 256, μ: 1107429, ~: 1060073) +LibCWIATest:testCloneDeteministicWithImmutableArgs(address,uint256,uint256[],bytes,uint64,uint8,uint256) (runs: 312, μ: 1094816, ~: 1045340) LibCWIATest:testCloneWithImmutableArgs() (gas: 120548) -LibCWIATest:testCloneWithImmutableArgs(uint256,address,uint256,uint256[],uint64,uint8) (runs: 256, μ: 986273, ~: 971819) +LibCWIATest:testCloneWithImmutableArgs(uint256,address,uint256,uint256[],uint64,uint8) (runs: 312, μ: 995964, ~: 978832) LibCWIATest:testCloneWithImmutableArgsRevertsIfDataTooBig() (gas: 97305787) LibCWIATest:test__codesize() (gas: 12272) LibCloneTest:testClone() (gas: 97436) -LibCloneTest:testClone(uint256) (runs: 256, μ: 97463, ~: 97463) +LibCloneTest:testClone(uint256) (runs: 312, μ: 97463, ~: 97463) LibCloneTest:testCloneDeterministic() (gas: 98317) -LibCloneTest:testCloneDeterministic(bytes32) (runs: 256, μ: 4268258, ~: 98594) +LibCloneTest:testCloneDeterministic(bytes32) (runs: 312, μ: 3829176, ~: 98591) LibCloneTest:testCloneDeterministicWithImmutableArgs() (gas: 125123) -LibCloneTest:testCloneDeterministicWithImmutableArgs(bytes32) (runs: 256, μ: 6535830, ~: 117551) +LibCloneTest:testCloneDeterministicWithImmutableArgs(bytes32) (runs: 312, μ: 6395632, ~: 117728) LibCloneTest:testCloneWithImmutableArgs() (gas: 125589) -LibCloneTest:testCloneWithImmutableArgs(uint256) (runs: 256, μ: 2724710, ~: 116732) +LibCloneTest:testCloneWithImmutableArgs(uint256) (runs: 312, μ: 2643102, ~: 117132) LibCloneTest:testCloneWithImmutableArgsSlicing() (gas: 57947) -LibCloneTest:testCreateDeterministicERC1967(bytes32) (runs: 256, μ: 179048, ~: 128025) -LibCloneTest:testCreateDeterministicERC1967BeaconProxy(bytes32) (runs: 256, μ: 372958, ~: 360493) -LibCloneTest:testCreateDeterministicERC1967I(bytes32) (runs: 256, μ: 178774, ~: 132426) -LibCloneTest:testCreateDeterministicERC1967WithImmutableArgs(bytes32) (runs: 256, μ: 423337, ~: 137296) +LibCloneTest:testCreateDeterministicERC1967(bytes32) (runs: 312, μ: 177949, ~: 128025) +LibCloneTest:testCreateDeterministicERC1967BeaconProxy(bytes32) (runs: 312, μ: 372953, ~: 360493) +LibCloneTest:testCreateDeterministicERC1967I(bytes32) (runs: 312, μ: 178479, ~: 132431) +LibCloneTest:testCreateDeterministicERC1967WithImmutableArgs(bytes32) (runs: 312, μ: 379218, ~: 137487) LibCloneTest:testDeployDeterministicERC1967() (gas: 133441) -LibCloneTest:testDeployDeterministicERC1967(bytes32) (runs: 256, μ: 3309304, ~: 133344) -LibCloneTest:testDeployDeterministicERC1967BeaconProxy(bytes32) (runs: 256, μ: 4449645, ~: 357493) +LibCloneTest:testDeployDeterministicERC1967(bytes32) (runs: 312, μ: 3379376, ~: 133342) +LibCloneTest:testDeployDeterministicERC1967BeaconProxy(bytes32) (runs: 312, μ: 4627262, ~: 357493) LibCloneTest:testDeployDeterministicERC1967I() (gas: 129465) -LibCloneTest:testDeployDeterministicERC1967I(bytes32) (runs: 256, μ: 2412595, ~: 129383) +LibCloneTest:testDeployDeterministicERC1967I(bytes32) (runs: 312, μ: 2019141, ~: 129383) LibCloneTest:testDeployDeterministicERC1967WithImmutableArgs() (gas: 166875) -LibCloneTest:testDeployDeterministicERC1967WithImmutableArgs(bytes32) (runs: 256, μ: 5162324, ~: 145457) +LibCloneTest:testDeployDeterministicERC1967WithImmutableArgs(bytes32) (runs: 312, μ: 5238464, ~: 144621) LibCloneTest:testDeployERC1967() (gas: 130814) -LibCloneTest:testDeployERC1967(bytes32) (runs: 256, μ: 245817, ~: 130917) -LibCloneTest:testDeployERC1967BeaconProxy(bytes32) (runs: 256, μ: 345640, ~: 294788) +LibCloneTest:testDeployERC1967(bytes32) (runs: 312, μ: 237161, ~: 130882) +LibCloneTest:testDeployERC1967BeaconProxy(bytes32) (runs: 312, μ: 351424, ~: 294788) LibCloneTest:testDeployERC1967BeaconProxyWithImmutableArgs() (gas: 293333) -LibCloneTest:testDeployERC1967BeaconProxyWithImmutableArgs(address,bytes32) (runs: 256, μ: 28506681, ~: 277471) +LibCloneTest:testDeployERC1967BeaconProxyWithImmutableArgs(address,bytes32) (runs: 312, μ: 28736809, ~: 277471) LibCloneTest:testDeployERC1967I() (gas: 128886) -LibCloneTest:testDeployERC1967I(bytes32) (runs: 256, μ: 129002, ~: 129002) +LibCloneTest:testDeployERC1967I(bytes32) (runs: 312, μ: 129002, ~: 129002) LibCloneTest:testDeployERC1967WithImmutableArgs() (gas: 141650) -LibCloneTest:testDeployERC1967WithImmutableArgs(bytes32) (runs: 256, μ: 5710799, ~: 142319) -LibCloneTest:testERC1967BeaconProxyGasBehavior(uint256,uint256) (runs: 256, μ: 376167, ~: 347220) -LibCloneTest:testERC1967ConstantBootstrap(address,bytes32) (runs: 256, μ: 199467, ~: 169474) -LibCloneTest:testInitCode(address) (runs: 256, μ: 217404, ~: 35288) +LibCloneTest:testDeployERC1967WithImmutableArgs(bytes32) (runs: 312, μ: 6046365, ~: 142521) +LibCloneTest:testERC1967BeaconProxyGasBehavior(uint256,uint256) (runs: 312, μ: 372561, ~: 346623) +LibCloneTest:testERC1967ConstantBootstrap(address,bytes32) (runs: 312, μ: 195786, ~: 169477) +LibCloneTest:testInitCode(address) (runs: 312, μ: 237016, ~: 35312) LibCloneTest:testInitialDeposit() (gas: 585537) -LibCloneTest:testSlicingRevertsOnZeroCodeAddress(address) (runs: 256, μ: 91886, ~: 30411) -LibCloneTest:testStartsWith(uint256) (runs: 256, μ: 29404, ~: 29468) +LibCloneTest:testSlicingRevertsOnZeroCodeAddress(address) (runs: 312, μ: 105502, ~: 30422) +LibCloneTest:testStartsWith(uint256) (runs: 312, μ: 29398, ~: 29468) LibCloneTest:test__codesize() (gas: 31023) -LibERC6551Test:testComputeAccountAddress(address,bytes32,uint256,address,uint256) (runs: 256, μ: 291234, ~: 28642) -LibERC6551Test:testContext(address,bytes32,uint256,address,uint256) (runs: 256, μ: 101743, ~: 101643) -LibERC6551Test:testInitCodeHash(address,bytes32,uint256,address,uint256) (runs: 256, μ: 199627, ~: 23818) -LibERC6551Test:testIsERC6551Account(address,bytes32,uint256,address,uint256) (runs: 256, μ: 111163, ~: 111183) +LibERC6551Test:testComputeAccountAddress(address,bytes32,uint256,address,uint256) (runs: 312, μ: 296920, ~: 28642) +LibERC6551Test:testContext(address,bytes32,uint256,address,uint256) (runs: 312, μ: 101745, ~: 101643) +LibERC6551Test:testInitCodeHash(address,bytes32,uint256,address,uint256) (runs: 312, μ: 237982, ~: 23818) +LibERC6551Test:testIsERC6551Account(address,bytes32,uint256,address,uint256) (runs: 312, μ: 111164, ~: 111183) LibERC6551Test:test__codesize() (gas: 6081) -LibMapTest:testFoundStatementDifferential(uint256,uint256,uint256) (runs: 256, μ: 499, ~: 499) +LibMapTest:testFoundStatementDifferential(uint256,uint256,uint256) (runs: 312, μ: 499, ~: 499) LibMapTest:testGeneralMapFunctionsGas() (gas: 3304775) -LibMapTest:testGeneralMapFunctionsWithSmallBitWidths(uint256) (runs: 256, μ: 84351, ~: 85701) +LibMapTest:testGeneralMapFunctionsWithSmallBitWidths(uint256) (runs: 312, μ: 84821, ~: 85698) LibMapTest:testGeneralMapFunctionsWithZeroBitWidth() (gas: 12260) -LibMapTest:testGeneralMapSearchSorted(uint256) (runs: 256, μ: 208964, ~: 152132) +LibMapTest:testGeneralMapSearchSorted(uint256) (runs: 312, μ: 208689, ~: 152132) LibMapTest:testMapGetFromBigArray() (gas: 3330) LibMapTest:testMapGetUint8() (gas: 3313) LibMapTest:testMapSetUint8() (gas: 23276) LibMapTest:testMapSetUint8FromBigArray() (gas: 23263) -LibMapTest:testUint128MapSearchSorted(uint256) (runs: 256, μ: 190324, ~: 131522) +LibMapTest:testUint128MapSearchSorted(uint256) (runs: 312, μ: 196108, ~: 130815) LibMapTest:testUint128MapSetAndGet() (gas: 1607264) -LibMapTest:testUint128MapSetAndGet(uint256) (runs: 256, μ: 180543, ~: 171280) -LibMapTest:testUint128MapSetAndGet2(uint256) (runs: 256, μ: 69113, ~: 69481) -LibMapTest:testUint16MapSearchSorted(uint256) (runs: 256, μ: 97167, ~: 86486) +LibMapTest:testUint128MapSetAndGet(uint256) (runs: 312, μ: 180217, ~: 170756) +LibMapTest:testUint128MapSetAndGet2(uint256) (runs: 312, μ: 68973, ~: 69405) +LibMapTest:testUint16MapSearchSorted(uint256) (runs: 312, μ: 96227, ~: 86334) LibMapTest:testUint16MapSetAndGet() (gas: 958101) -LibMapTest:testUint16MapSetAndGet(uint256) (runs: 256, μ: 81492, ~: 81717) -LibMapTest:testUint16MapSetAndGet2(uint256) (runs: 256, μ: 68462, ~: 69243) -LibMapTest:testUint32MapSearchSorted(uint256) (runs: 256, μ: 106382, ~: 86976) +LibMapTest:testUint16MapSetAndGet(uint256) (runs: 312, μ: 81509, ~: 81709) +LibMapTest:testUint16MapSetAndGet2(uint256) (runs: 312, μ: 68481, ~: 69242) +LibMapTest:testUint32MapSearchSorted(uint256) (runs: 312, μ: 106919, ~: 87361) LibMapTest:testUint32MapSetAndGet() (gas: 1067796) -LibMapTest:testUint32MapSetAndGet(uint256) (runs: 256, μ: 114300, ~: 124693) -LibMapTest:testUint32MapSetAndGet2(uint256) (runs: 256, μ: 68564, ~: 69197) -LibMapTest:testUint32Maps(uint256) (runs: 256, μ: 68797, ~: 72253) -LibMapTest:testUint40MapSearchSorted(uint256) (runs: 256, μ: 123266, ~: 108340) +LibMapTest:testUint32MapSetAndGet(uint256) (runs: 312, μ: 114280, ~: 124784) +LibMapTest:testUint32MapSetAndGet2(uint256) (runs: 312, μ: 68691, ~: 69197) +LibMapTest:testUint32Maps(uint256) (runs: 312, μ: 68455, ~: 72250) +LibMapTest:testUint40MapSearchSorted(uint256) (runs: 312, μ: 125441, ~: 108161) LibMapTest:testUint40MapSetAndGet() (gas: 1127509) -LibMapTest:testUint40MapSetAndGet(uint256) (runs: 256, μ: 136959, ~: 146770) -LibMapTest:testUint40MapSetAndGet2(uint256) (runs: 256, μ: 68419, ~: 69272) -LibMapTest:testUint64MapSearchSorted(uint256) (runs: 256, μ: 131401, ~: 108492) +LibMapTest:testUint40MapSetAndGet(uint256) (runs: 312, μ: 136763, ~: 146770) +LibMapTest:testUint40MapSetAndGet2(uint256) (runs: 312, μ: 68523, ~: 69272) +LibMapTest:testUint64MapSearchSorted(uint256) (runs: 312, μ: 134299, ~: 108774) LibMapTest:testUint64MapSetAndGet() (gas: 1220444) -LibMapTest:testUint64MapSetAndGet(uint256) (runs: 256, μ: 148586, ~: 147374) -LibMapTest:testUint64MapSetAndGet2(uint256) (runs: 256, μ: 68487, ~: 69408) -LibMapTest:testUint8MapSearchSorted(uint256) (runs: 256, μ: 98678, ~: 86167) +LibMapTest:testUint64MapSetAndGet(uint256) (runs: 312, μ: 149213, ~: 147401) +LibMapTest:testUint64MapSetAndGet2(uint256) (runs: 312, μ: 68446, ~: 69261) +LibMapTest:testUint8MapSearchSorted(uint256) (runs: 312, μ: 99676, ~: 86239) LibMapTest:testUint8MapSetAndGet() (gas: 884299) -LibMapTest:testUint8MapSetAndGet(uint256) (runs: 256, μ: 59489, ~: 59566) -LibMapTest:testUint8MapSetAndGet2(uint256) (runs: 256, μ: 68316, ~: 69180) +LibMapTest:testUint8MapSetAndGet(uint256) (runs: 312, μ: 59500, ~: 59566) +LibMapTest:testUint8MapSetAndGet2(uint256) (runs: 312, μ: 68226, ~: 69180) LibMapTest:test__codesize() (gas: 12065) LibPRNGTest:testExponentialWad() (gas: 4394348) LibPRNGTest:testLCGGas() (gas: 20803) LibPRNGTest:testLazyShufflerGet() (gas: 298845) -LibPRNGTest:testLazyShufflerGetOutOfBoundsReverts(uint256,uint256) (runs: 256, μ: 26616, ~: 26667) +LibPRNGTest:testLazyShufflerGetOutOfBoundsReverts(uint256,uint256) (runs: 312, μ: 26626, ~: 26667) LibPRNGTest:testLazyShufflerNoStorageCollisions() (gas: 266054) -LibPRNGTest:testLazyShufflerProducesShuffledRange(uint256) (runs: 256, μ: 178370, ~: 91178) +LibPRNGTest:testLazyShufflerProducesShuffledRange(uint256) (runs: 312, μ: 178074, ~: 91111) LibPRNGTest:testLazyShufflerProducesShuffledRange2() (gas: 9059432) -LibPRNGTest:testLazyShufflerProducesShuffledRangeWithGrow(uint256,uint256) (runs: 256, μ: 190063, ~: 177374) +LibPRNGTest:testLazyShufflerProducesShuffledRangeWithGrow(uint256,uint256) (runs: 312, μ: 188065, ~: 176203) LibPRNGTest:testLazyShufflerRestart() (gas: 276254) LibPRNGTest:testLazyShufflerRevertsOnDoubleInit() (gas: 26824) -LibPRNGTest:testLazyShufflerRevertsOnFinshedNext(uint256) (runs: 256, μ: 65460, ~: 74386) -LibPRNGTest:testLazyShufflerRevertsOnGrowWithInvalidLength(uint256,uint256) (runs: 256, μ: 24684, ~: 24600) -LibPRNGTest:testLazyShufflerRevertsOnInitWithInvalidLength(uint256) (runs: 256, μ: 23054, ~: 23497) +LibPRNGTest:testLazyShufflerRevertsOnFinshedNext(uint256) (runs: 312, μ: 64898, ~: 74386) +LibPRNGTest:testLazyShufflerRevertsOnGrowWithInvalidLength(uint256,uint256) (runs: 312, μ: 24690, ~: 24708) +LibPRNGTest:testLazyShufflerRevertsOnInitWithInvalidLength(uint256) (runs: 312, μ: 22905, ~: 23673) LibPRNGTest:testLazyShufflerRevertsOnZeroLengthNext() (gas: 27623) LibPRNGTest:testPRNGGas() (gas: 25667) LibPRNGTest:testPRNGNext() (gas: 16162) @@ -768,260 +768,260 @@ LibPRNGTest:testPRNGShuffleGas() (gas: 1610927) LibPRNGTest:testPRNGUniform() (gas: 559430) LibPRNGTest:testStandardNormalWad() (gas: 4425913) LibPRNGTest:test__codesize() (gas: 14376) -LibRLPTest:testComputeAddressDifferential(address,uint256) (runs: 256, μ: 4225, ~: 4015) +LibRLPTest:testComputeAddressDifferential(address,uint256) (runs: 312, μ: 4263, ~: 4099) LibRLPTest:testComputeAddressForLargeNonces() (gas: 1760) LibRLPTest:testComputeAddressForSmallNonces() (gas: 1007) LibRLPTest:testComputeAddressOriginalForLargeNonces() (gas: 3766) LibRLPTest:testComputeAddressOriginalForSmallNonces() (gas: 2185) -LibRLPTest:testRLPEncodeAddressDifferential(address) (runs: 256, μ: 224835, ~: 26102) -LibRLPTest:testRLPEncodeAddressViaList(address,address) (runs: 256, μ: 150955, ~: 27703) -LibRLPTest:testRLPEncodeBool(bool) (runs: 256, μ: 27566, ~: 27700) +LibRLPTest:testRLPEncodeAddressDifferential(address) (runs: 312, μ: 241142, ~: 26102) +LibRLPTest:testRLPEncodeAddressViaList(address,address) (runs: 312, μ: 165198, ~: 27693) +LibRLPTest:testRLPEncodeBool(bool) (runs: 312, μ: 27562, ~: 27700) LibRLPTest:testRLPEncodeBytes() (gas: 382181) LibRLPTest:testRLPEncodeBytes2() (gas: 156293) -LibRLPTest:testRLPEncodeBytesDifferential(bytes32) (runs: 256, μ: 274139, ~: 29085) +LibRLPTest:testRLPEncodeBytesDifferential(bytes32) (runs: 312, μ: 280814, ~: 29085) LibRLPTest:testRLPEncodeList() (gas: 723349) LibRLPTest:testRLPEncodeList2() (gas: 798535) -LibRLPTest:testRLPEncodeListDifferential(bytes,uint256) (runs: 256, μ: 392419, ~: 641754) +LibRLPTest:testRLPEncodeListDifferential(bytes,uint256) (runs: 312, μ: 391923, ~: 39179) LibRLPTest:testRLPEncodeUint() (gas: 1179038) -LibRLPTest:testRLPEncodeUint(uint256) (runs: 256, μ: 81824, ~: 24873) -LibRLPTest:testRLPEncodeUintDifferential(uint256) (runs: 256, μ: 233091, ~: 27105) -LibRLPTest:testRLPMemory(bytes32) (runs: 256, μ: 345795, ~: 33550) +LibRLPTest:testRLPEncodeUint(uint256) (runs: 312, μ: 90311, ~: 24909) +LibRLPTest:testRLPEncodeUintDifferential(uint256) (runs: 312, μ: 223418, ~: 27078) +LibRLPTest:testRLPMemory(bytes32) (runs: 312, μ: 325708, ~: 33605) LibRLPTest:testRLPPUint256() (gas: 364901) -LibRLPTest:testSmallLog256Equivalence(uint256) (runs: 256, μ: 23668, ~: 23698) +LibRLPTest:testSmallLog256Equivalence(uint256) (runs: 312, μ: 23675, ~: 23700) LibRLPTest:test__codesize() (gas: 15464) -LibSortTest:testCopy(uint256) (runs: 256, μ: 59942, ~: 25737) -LibSortTest:testInsertionSortAddressesDifferential(uint256) (runs: 256, μ: 32114, ~: 24856) +LibSortTest:testCopy(uint256) (runs: 312, μ: 55779, ~: 25744) +LibSortTest:testInsertionSortAddressesDifferential(uint256) (runs: 312, μ: 45239, ~: 24945) LibSortTest:testInsertionSortInts() (gas: 80727) LibSortTest:testInsertionSortPsuedorandom() (gas: 63725) -LibSortTest:testInsertionSortPsuedorandom(uint256) (runs: 256, μ: 62423, ~: 62430) -LibSortTest:testIsSortedAddressesDifferential(uint256) (runs: 256, μ: 38441, ~: 28881) -LibSortTest:testIsSortedAndUniquifiedAddressesDifferential(uint256) (runs: 256, μ: 36210, ~: 28948) -LibSortTest:testIsSortedAndUniquifiedDifferential(uint256) (runs: 256, μ: 31415, ~: 28442) -LibSortTest:testIsSortedAndUniquifiedIntsDifferential(uint256) (runs: 256, μ: 42629, ~: 29923) -LibSortTest:testIsSortedDifferential(uint256) (runs: 256, μ: 43737, ~: 28411) -LibSortTest:testIsSortedIntsDifferential(uint256) (runs: 256, μ: 47646, ~: 30015) +LibSortTest:testInsertionSortPsuedorandom(uint256) (runs: 312, μ: 62418, ~: 62480) +LibSortTest:testIsSortedAddressesDifferential(uint256) (runs: 312, μ: 37750, ~: 28942) +LibSortTest:testIsSortedAndUniquifiedAddressesDifferential(uint256) (runs: 312, μ: 36269, ~: 28889) +LibSortTest:testIsSortedAndUniquifiedDifferential(uint256) (runs: 312, μ: 32606, ~: 28383) +LibSortTest:testIsSortedAndUniquifiedIntsDifferential(uint256) (runs: 312, μ: 42018, ~: 29916) +LibSortTest:testIsSortedDifferential(uint256) (runs: 312, μ: 43295, ~: 28424) +LibSortTest:testIsSortedIntsDifferential(uint256) (runs: 312, μ: 47898, ~: 29820) LibSortTest:testReverse() (gas: 117297) LibSortTest:testSearchSorted() (gas: 118972) LibSortTest:testSearchSortedAddresses() (gas: 251950) LibSortTest:testSearchSortedBasicCases() (gas: 2244) -LibSortTest:testSearchSortedDifferential(uint256) (runs: 256, μ: 45515, ~: 30188) +LibSortTest:testSearchSortedDifferential(uint256) (runs: 312, μ: 45183, ~: 30874) LibSortTest:testSearchSortedEdgeCases() (gas: 1617) -LibSortTest:testSearchSortedElementInArray(uint256) (runs: 256, μ: 58676, ~: 31716) +LibSortTest:testSearchSortedElementInArray(uint256) (runs: 312, μ: 55781, ~: 31438) LibSortTest:testSearchSortedElementNotInArray() (gas: 6135) -LibSortTest:testSearchSortedElementNotInArray(uint256) (runs: 256, μ: 48559, ~: 33320) +LibSortTest:testSearchSortedElementNotInArray(uint256) (runs: 312, μ: 47851, ~: 33822) LibSortTest:testSearchSortedInts() (gas: 120794) -LibSortTest:testSearchSortedInts(int256[],int256) (runs: 256, μ: 12038, ~: 11669) +LibSortTest:testSearchSortedInts(int256[],int256) (runs: 312, μ: 12155, ~: 11736) LibSortTest:testSearchSortedWithEmptyArray() (gas: 709) -LibSortTest:testSort(uint256) (runs: 256, μ: 39518, ~: 28173) -LibSortTest:testSortAddressesDifferential(uint256) (runs: 256, μ: 60978, ~: 28994) +LibSortTest:testSort(uint256) (runs: 312, μ: 38718, ~: 28289) +LibSortTest:testSortAddressesDifferential(uint256) (runs: 312, μ: 65472, ~: 29011) LibSortTest:testSortAddressesPsuedorandom() (gas: 148711) -LibSortTest:testSortAddressesPsuedorandom(uint256) (runs: 256, μ: 148810, ~: 148688) +LibSortTest:testSortAddressesPsuedorandom(uint256) (runs: 312, μ: 148856, ~: 148790) LibSortTest:testSortAddressesPsuedorandomBrutalizeUpperBits() (gas: 200629) LibSortTest:testSortAddressesReversed() (gas: 45400) LibSortTest:testSortAddressesSorted() (gas: 42376) LibSortTest:testSortBasicCase() (gas: 1210) -LibSortTest:testSortChecksumed(uint256) (runs: 256, μ: 46675, ~: 31630) -LibSortTest:testSortDifferential(uint256) (runs: 256, μ: 61419, ~: 28589) +LibSortTest:testSortChecksumed(uint256) (runs: 312, μ: 47461, ~: 31480) +LibSortTest:testSortDifferential(uint256) (runs: 312, μ: 60780, ~: 28313) LibSortTest:testSortInts() (gas: 895631) LibSortTest:testSortMostlySame() (gas: 67374) LibSortTest:testSortOriginalMostlySame() (gas: 207985) LibSortTest:testSortOriginalPsuedorandom() (gas: 283954) -LibSortTest:testSortOriginalPsuedorandom(uint256) (runs: 256, μ: 287899, ~: 287589) +LibSortTest:testSortOriginalPsuedorandom(uint256) (runs: 312, μ: 287985, ~: 287589) LibSortTest:testSortOriginalReversed() (gas: 156282) LibSortTest:testSortOriginalSorted() (gas: 142263) LibSortTest:testSortPsuedorandom() (gas: 141932) -LibSortTest:testSortPsuedorandom(uint256) (runs: 256, μ: 142154, ~: 142128) +LibSortTest:testSortPsuedorandom(uint256) (runs: 312, μ: 142176, ~: 142172) LibSortTest:testSortPsuedorandomNonuniform() (gas: 147496) -LibSortTest:testSortPsuedorandomNonuniform(uint256) (runs: 256, μ: 147795, ~: 147654) +LibSortTest:testSortPsuedorandomNonuniform(uint256) (runs: 312, μ: 147837, ~: 147672) LibSortTest:testSortReversed() (gas: 38827) LibSortTest:testSortSorted() (gas: 35785) LibSortTest:testSortTestOverhead() (gas: 103630) LibSortTest:testSortedDifferenceDifferential() (gas: 183604) -LibSortTest:testSortedDifferenceDifferential(uint256) (runs: 256, μ: 34907, ~: 34822) -LibSortTest:testSortedDifferenceDifferentialInt(uint256) (runs: 256, μ: 36839, ~: 35548) -LibSortTest:testSortedDifferenceUnionIntersection(uint256) (runs: 256, μ: 58734, ~: 52924) +LibSortTest:testSortedDifferenceDifferential(uint256) (runs: 312, μ: 35309, ~: 35182) +LibSortTest:testSortedDifferenceDifferentialInt(uint256) (runs: 312, μ: 36978, ~: 35856) +LibSortTest:testSortedDifferenceUnionIntersection(uint256) (runs: 312, μ: 57978, ~: 52865) LibSortTest:testSortedIntersectionDifferential() (gas: 209797) -LibSortTest:testSortedIntersectionDifferential(uint256) (runs: 256, μ: 32862, ~: 32327) -LibSortTest:testSortedIntersectionDifferentialInt(uint256) (runs: 256, μ: 34896, ~: 34542) +LibSortTest:testSortedIntersectionDifferential(uint256) (runs: 312, μ: 32964, ~: 32422) +LibSortTest:testSortedIntersectionDifferentialInt(uint256) (runs: 312, μ: 35084, ~: 34881) LibSortTest:testSortedUnionDifferential() (gas: 217387) -LibSortTest:testSortedUnionDifferential(uint256) (runs: 256, μ: 35731, ~: 35106) -LibSortTest:testSortedUnionDifferentialInt(uint256) (runs: 256, μ: 38349, ~: 37809) -LibSortTest:testTwoComplementConversionSort(int256,int256) (runs: 256, μ: 515, ~: 514) +LibSortTest:testSortedUnionDifferential(uint256) (runs: 312, μ: 35804, ~: 35197) +LibSortTest:testSortedUnionDifferentialInt(uint256) (runs: 312, μ: 38573, ~: 38005) +LibSortTest:testTwoComplementConversionSort(int256,int256) (runs: 312, μ: 515, ~: 514) LibSortTest:testUniquifySorted() (gas: 1710) -LibSortTest:testUniquifySorted(uint256) (runs: 256, μ: 44352, ~: 27502) +LibSortTest:testUniquifySorted(uint256) (runs: 312, μ: 48048, ~: 27641) LibSortTest:testUniquifySortedAddress() (gas: 4039) -LibSortTest:testUniquifySortedAddress(uint256) (runs: 256, μ: 48822, ~: 29074) -LibSortTest:testUniquifySortedDifferential(uint256) (runs: 256, μ: 43277, ~: 32173) +LibSortTest:testUniquifySortedAddress(uint256) (runs: 312, μ: 48362, ~: 29297) +LibSortTest:testUniquifySortedDifferential(uint256) (runs: 312, μ: 43853, ~: 31791) LibSortTest:testUniquifySortedWithEmptyArray() (gas: 506) LibSortTest:test__codesize() (gas: 21619) -LibStringTest:testAddressToHexStringZeroRightPadded(address) (runs: 256, μ: 3414, ~: 3414) +LibStringTest:testAddressToHexStringZeroRightPadded(address) (runs: 312, μ: 3414, ~: 3414) LibStringTest:testBytesToHexString() (gas: 4801) -LibStringTest:testBytesToHexString(bytes) (runs: 256, μ: 735859, ~: 622210) +LibStringTest:testBytesToHexString(bytes) (runs: 312, μ: 722535, ~: 622261) LibStringTest:testBytesToHexStringNoPrefix() (gas: 4489) -LibStringTest:testBytesToHexStringNoPrefix(bytes) (runs: 256, μ: 783424, ~: 621893) +LibStringTest:testBytesToHexStringNoPrefix(bytes) (runs: 312, μ: 774435, ~: 621959) LibStringTest:testContains() (gas: 43988) LibStringTest:testFromAddressToHexString() (gas: 3137) LibStringTest:testFromAddressToHexStringChecksummed() (gas: 35217) -LibStringTest:testFromAddressToHexStringChecksummedDifferential(uint256) (runs: 256, μ: 749584, ~: 610947) +LibStringTest:testFromAddressToHexStringChecksummedDifferential(uint256) (runs: 312, μ: 768064, ~: 610942) LibStringTest:testFromAddressToHexStringWithLeadingZeros() (gas: 3113) -LibStringTest:testHexStringNoPrefixVariants(uint256,uint256) (runs: 256, μ: 778179, ~: 620471) +LibStringTest:testHexStringNoPrefixVariants(uint256,uint256) (runs: 312, μ: 766118, ~: 620491) LibStringTest:testNormalizeSmallString() (gas: 1387) -LibStringTest:testNormalizeSmallString(bytes32) (runs: 256, μ: 2931, ~: 3955) +LibStringTest:testNormalizeSmallString(bytes32) (runs: 312, μ: 3022, ~: 4213) LibStringTest:testStringConcat() (gas: 4003) -LibStringTest:testStringConcat(string,string) (runs: 256, μ: 651764, ~: 602421) +LibStringTest:testStringConcat(string,string) (runs: 312, μ: 663761, ~: 602421) LibStringTest:testStringConcatOriginal() (gas: 4654) LibStringTest:testStringDirectReturn() (gas: 6741) -LibStringTest:testStringDirectReturn(string) (runs: 256, μ: 3003, ~: 2916) +LibStringTest:testStringDirectReturn(string) (runs: 312, μ: 3001, ~: 2916) LibStringTest:testStringEndsWith() (gas: 2829) -LibStringTest:testStringEndsWith(uint256) (runs: 256, μ: 760504, ~: 634920) -LibStringTest:testStringEq(string,string) (runs: 256, μ: 1566, ~: 1567) +LibStringTest:testStringEndsWith(uint256) (runs: 312, μ: 761746, ~: 635222) +LibStringTest:testStringEq(string,string) (runs: 312, μ: 1566, ~: 1567) LibStringTest:testStringEqs() (gas: 2013) LibStringTest:testStringEscapeHTML() (gas: 8427) -LibStringTest:testStringEscapeHTML(uint256) (runs: 256, μ: 759315, ~: 639759) +LibStringTest:testStringEscapeHTML(uint256) (runs: 312, μ: 768173, ~: 639759) LibStringTest:testStringEscapeJSON() (gas: 39797) LibStringTest:testStringEscapeJSONHexEncode() (gas: 725650) LibStringTest:testStringIndexOf() (gas: 17375) -LibStringTest:testStringIndexOf(uint256) (runs: 256, μ: 790764, ~: 642436) +LibStringTest:testStringIndexOf(uint256) (runs: 312, μ: 789343, ~: 642507) LibStringTest:testStringIndicesOf() (gas: 11700) -LibStringTest:testStringIndicesOf(uint256) (runs: 256, μ: 818814, ~: 647156) +LibStringTest:testStringIndicesOf(uint256) (runs: 312, μ: 842424, ~: 647254) LibStringTest:testStringIs7BitASCII() (gas: 205346) -LibStringTest:testStringIs7BitASCIIDifferential(bytes) (runs: 256, μ: 717121, ~: 602180) +LibStringTest:testStringIs7BitASCIIDifferential(bytes) (runs: 312, μ: 744784, ~: 602137) LibStringTest:testStringIs7BitASCIIWithAllowedLookup() (gas: 4939) -LibStringTest:testStringIs7BitASCIIWithAllowedLookupDifferential(bytes,uint128) (runs: 256, μ: 673556, ~: 601900) +LibStringTest:testStringIs7BitASCIIWithAllowedLookupDifferential(bytes,uint128) (runs: 312, μ: 678038, ~: 601897) LibStringTest:testStringLastIndexOf() (gas: 24042) -LibStringTest:testStringLastIndexOf(uint256) (runs: 256, μ: 768427, ~: 643528) +LibStringTest:testStringLastIndexOf(uint256) (runs: 312, μ: 761342, ~: 644109) LibStringTest:testStringLowerDifferential() (gas: 3405674) -LibStringTest:testStringLowerDifferential(string) (runs: 256, μ: 8289, ~: 7991) +LibStringTest:testStringLowerDifferential(string) (runs: 312, μ: 8309, ~: 7991) LibStringTest:testStringLowerOriginal() (gas: 1219) LibStringTest:testStringPackAndUnpackOne() (gas: 753921) -LibStringTest:testStringPackAndUnpackOne(string) (runs: 256, μ: 699743, ~: 601192) -LibStringTest:testStringPackAndUnpackOneDifferential(string) (runs: 256, μ: 744270, ~: 601003) +LibStringTest:testStringPackAndUnpackOne(string) (runs: 312, μ: 717695, ~: 601187) +LibStringTest:testStringPackAndUnpackOneDifferential(string) (runs: 312, μ: 748573, ~: 601003) LibStringTest:testStringPackAndUnpackTwo() (gas: 913201) -LibStringTest:testStringPackAndUnpackTwo(string,string) (runs: 256, μ: 689692, ~: 602502) -LibStringTest:testStringPackAndUnpackTwoDifferential(string,string) (runs: 256, μ: 654655, ~: 601999) +LibStringTest:testStringPackAndUnpackTwo(string,string) (runs: 312, μ: 706448, ~: 602502) +LibStringTest:testStringPackAndUnpackTwoDifferential(string,string) (runs: 312, μ: 666618, ~: 601999) LibStringTest:testStringRepeat() (gas: 4986) -LibStringTest:testStringRepeat(string,uint256) (runs: 256, μ: 742326, ~: 604642) +LibStringTest:testStringRepeat(string,uint256) (runs: 312, μ: 752701, ~: 604551) LibStringTest:testStringRepeatOriginal() (gas: 9620) -LibStringTest:testStringReplace(uint256) (runs: 256, μ: 711315, ~: 647085) +LibStringTest:testStringReplace(uint256) (runs: 312, μ: 701494, ~: 648329) LibStringTest:testStringReplaceLong() (gas: 8573) LibStringTest:testStringReplaceMedium() (gas: 7581) LibStringTest:testStringReplaceShort() (gas: 12329) LibStringTest:testStringRuneCount() (gas: 3035897) -LibStringTest:testStringRuneCountDifferential(string) (runs: 256, μ: 6101, ~: 5878) +LibStringTest:testStringRuneCountDifferential(string) (runs: 312, μ: 6130, ~: 5878) LibStringTest:testStringSlice() (gas: 9257) -LibStringTest:testStringSlice(bytes,uint256,uint256) (runs: 256, μ: 769921, ~: 626165) -LibStringTest:testStringSlice(uint256) (runs: 256, μ: 825072, ~: 640895) +LibStringTest:testStringSlice(bytes,uint256,uint256) (runs: 312, μ: 777216, ~: 626064) +LibStringTest:testStringSlice(uint256) (runs: 312, μ: 802047, ~: 640969) LibStringTest:testStringSplit() (gas: 20309) -LibStringTest:testStringSplit(uint256) (runs: 256, μ: 737826, ~: 646029) +LibStringTest:testStringSplit(uint256) (runs: 312, μ: 740726, ~: 645967) LibStringTest:testStringStartsWith() (gas: 2544) -LibStringTest:testStringStartsWith(uint256) (runs: 256, μ: 749597, ~: 634377) +LibStringTest:testStringStartsWith(uint256) (runs: 312, μ: 733686, ~: 634186) LibStringTest:testStringUpperDifferential() (gas: 3084191) -LibStringTest:testStringUpperDifferential(string) (runs: 256, μ: 8288, ~: 7990) +LibStringTest:testStringUpperDifferential(string) (runs: 312, μ: 8308, ~: 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: 256, μ: 8363, ~: 6063) +LibStringTest:testToHexStringFixedLengthZeroRightPadded(uint256,uint256) (runs: 312, μ: 8313, ~: 6491) LibStringTest:testToHexStringPositiveNumber() (gas: 865) LibStringTest:testToHexStringUint256Max() (gas: 3398) LibStringTest:testToHexStringZero() (gas: 805) -LibStringTest:testToHexStringZeroRightPadded(uint256) (runs: 256, μ: 1940, ~: 1465) +LibStringTest:testToHexStringZeroRightPadded(uint256) (runs: 312, μ: 1934, ~: 1548) LibStringTest:testToMinimalHexStringNoPrefixPositiveNumber() (gas: 3426) LibStringTest:testToMinimalHexStringNoPrefixUint256Max() (gas: 3424) LibStringTest:testToMinimalHexStringNoPrefixZero() (gas: 831) -LibStringTest:testToMinimalHexStringNoPrefixZeroRightPadded(uint256) (runs: 256, μ: 1960, ~: 1487) +LibStringTest:testToMinimalHexStringNoPrefixZeroRightPadded(uint256) (runs: 312, μ: 1954, ~: 1570) LibStringTest:testToMinimalHexStringPositiveNumber() (gas: 3556) LibStringTest:testToMinimalHexStringUint256Max() (gas: 3470) LibStringTest:testToMinimalHexStringZero() (gas: 829) -LibStringTest:testToMinimalHexStringZeroRightPadded(uint256) (runs: 256, μ: 1987, ~: 1512) +LibStringTest:testToMinimalHexStringZeroRightPadded(uint256) (runs: 312, μ: 1982, ~: 1595) LibStringTest:testToSmallString() (gas: 4448) LibStringTest:testToStringPositiveNumber() (gas: 910) LibStringTest:testToStringPositiveNumberBrutalized() (gas: 3013089) -LibStringTest:testToStringSignedDifferential(int256) (runs: 256, μ: 707151, ~: 604266) +LibStringTest:testToStringSignedDifferential(int256) (runs: 312, μ: 704225, ~: 604222) LibStringTest:testToStringSignedGas() (gas: 7305) -LibStringTest:testToStringSignedMemory(int256) (runs: 256, μ: 757479, ~: 602375) +LibStringTest:testToStringSignedMemory(int256) (runs: 312, μ: 741276, ~: 602418) LibStringTest:testToStringSignedOriginalGas() (gas: 9839) LibStringTest:testToStringUint256Max() (gas: 6687) LibStringTest:testToStringUint256MaxBrutalized() (gas: 612683) LibStringTest:testToStringZero() (gas: 699) LibStringTest:testToStringZeroBrutalized() (gas: 600697) -LibStringTest:testToStringZeroRightPadded(uint256) (runs: 256, μ: 721465, ~: 601571) +LibStringTest:testToStringZeroRightPadded(uint256) (runs: 312, μ: 702936, ~: 601846) LibStringTest:test__codesize() (gas: 43051) LibZipTest:testCdCompress() (gas: 126842) -LibZipTest:testCdCompressDecompress(bytes) (runs: 256, μ: 758249, ~: 652089) -LibZipTest:testCdCompressDecompress(uint256) (runs: 256, μ: 804796, ~: 671491) +LibZipTest:testCdCompressDecompress(bytes) (runs: 312, μ: 758942, ~: 652660) +LibZipTest:testCdCompressDecompress(uint256) (runs: 312, μ: 782377, ~: 671640) LibZipTest:testCdDecompressOnInvalidInput() (gas: 1397) LibZipTest:testCdFallback() (gas: 5622174) -LibZipTest:testCdFallback(bytes,uint256) (runs: 256, μ: 1169178, ~: 1046708) -LibZipTest:testCdFallbackDecompressor(bytes) (runs: 256, μ: 121178, ~: 117600) -LibZipTest:testCdFallbackDecompressor(uint256) (runs: 256, μ: 177241, ~: 159781) -LibZipTest:testCdFallbackMaskTrick(uint256,uint256) (runs: 256, μ: 594, ~: 585) -LibZipTest:testDecompressWontRevert(bytes) (runs: 256, μ: 684186, ~: 631812) +LibZipTest:testCdFallback(bytes,uint256) (runs: 312, μ: 1168548, ~: 1052062) +LibZipTest:testCdFallbackDecompressor(bytes) (runs: 312, μ: 121504, ~: 118335) +LibZipTest:testCdFallbackDecompressor(uint256) (runs: 312, μ: 174417, ~: 159398) +LibZipTest:testCdFallbackMaskTrick(uint256,uint256) (runs: 312, μ: 595, ~: 585) +LibZipTest:testDecompressWontRevert(bytes) (runs: 312, μ: 681869, ~: 632952) LibZipTest:testFlzCompressDecompress() (gas: 1249620) -LibZipTest:testFlzCompressDecompress(bytes) (runs: 256, μ: 734442, ~: 665410) +LibZipTest:testFlzCompressDecompress(bytes) (runs: 312, μ: 763180, ~: 665538) LibZipTest:testFlzCompressDecompress2() (gas: 758656) LibZipTest:test__codesize() (gas: 20344) -LifebuoyTest:testLifebuoyCreateDeployment(address,address,uint256) (runs: 256, μ: 3198170, ~: 4084811) -LifebuoyTest:testLifebuoyOwnedCloneRescuePermissions(bytes32) (runs: 256, μ: 940811, ~: 940737) -LifebuoyTest:testLifebuoyOwnedRescuePermissions(bytes32) (runs: 256, μ: 945227, ~: 936312) -LifebuoyTest:testLifebuoyRescuePermissions(bytes32) (runs: 256, μ: 924903, ~: 904332) +LifebuoyTest:testLifebuoyCreateDeployment(address,address,uint256) (runs: 312, μ: 3120455, ~: 3570652) +LifebuoyTest:testLifebuoyOwnedCloneRescuePermissions(bytes32) (runs: 312, μ: 940784, ~: 940737) +LifebuoyTest:testLifebuoyOwnedRescuePermissions(bytes32) (runs: 312, μ: 944909, ~: 936423) +LifebuoyTest:testLifebuoyRescuePermissions(bytes32) (runs: 312, μ: 925094, ~: 904364) LifebuoyTest:testLockEverything() (gas: 659396) LifebuoyTest:testLockRescue() (gas: 686867) LifebuoyTest:testLockRescueETH() (gas: 697996) -LifebuoyTest:testRescueERC20(uint256) (runs: 256, μ: 654380, ~: 655852) -LifebuoyTest:testRescueERC721(bytes32) (runs: 256, μ: 650623, ~: 650882) -LifebuoyTest:testRescueETH(uint256) (runs: 256, μ: 663072, ~: 663967) +LifebuoyTest:testRescueERC20(uint256) (runs: 312, μ: 654420, ~: 655858) +LifebuoyTest:testRescueERC721(bytes32) (runs: 312, μ: 650623, ~: 650882) +LifebuoyTest:testRescueETH(uint256) (runs: 312, μ: 662914, ~: 663980) LifebuoyTest:test__codesize() (gas: 31162) MerkleProofLibTest:testEmptyCalldataHelpers() (gas: 985) -MerkleProofLibTest:testVerifyMultiProof(bool,bool,bool,bool,bytes32) (runs: 256, μ: 755652, ~: 633145) -MerkleProofLibTest:testVerifyMultiProofForHeightOneTree(bool,bool,bool,bool,bool,bool[]) (runs: 256, μ: 37908, ~: 38470) -MerkleProofLibTest:testVerifyMultiProofForHeightTwoTree(bool,bool,bool,bool,bool,bytes32) (runs: 256, μ: 6511, ~: 6467) -MerkleProofLibTest:testVerifyMultiProofForSingleLeaf(bytes32[],uint256) (runs: 256, μ: 908621, ~: 803854) +MerkleProofLibTest:testVerifyMultiProof(bool,bool,bool,bool,bytes32) (runs: 312, μ: 757059, ~: 633082) +MerkleProofLibTest:testVerifyMultiProofForHeightOneTree(bool,bool,bool,bool,bool,bool[]) (runs: 312, μ: 37748, ~: 38826) +MerkleProofLibTest:testVerifyMultiProofForHeightTwoTree(bool,bool,bool,bool,bool,bytes32) (runs: 312, μ: 6506, ~: 6478) +MerkleProofLibTest:testVerifyMultiProofForSingleLeaf(bytes32[],uint256) (runs: 312, μ: 900377, ~: 802840) MerkleProofLibTest:testVerifyMultiProofIsInvalid() (gas: 631963) MerkleProofLibTest:testVerifyMultiProofIsValid() (gas: 633237) MerkleProofLibTest:testVerifyMultiProofMalicious() (gas: 7918) -MerkleProofLibTest:testVerifyProof(bytes32[],uint256) (runs: 256, μ: 871539, ~: 782732) -MerkleProofLibTest:testVerifyProofBasicCase(bool,bool,bool,bytes32) (runs: 256, μ: 4039, ~: 3906) +MerkleProofLibTest:testVerifyProof(bytes32[],uint256) (runs: 312, μ: 868771, ~: 782357) +MerkleProofLibTest:testVerifyProofBasicCase(bool,bool,bool,bytes32) (runs: 312, μ: 4044, ~: 3906) MerkleProofLibTest:testVerifyProofBasicCaseIsInvalid() (gas: 3626) MerkleProofLibTest:testVerifyProofBasicCaseIsValid() (gas: 3590) -MerkleProofLibTest:testVerifyProofForHeightOneTree(bool,bool,bool,bool) (runs: 256, μ: 2693, ~: 2968) +MerkleProofLibTest:testVerifyProofForHeightOneTree(bool,bool,bool,bool) (runs: 312, μ: 2694, ~: 2968) MerkleProofLibTest:test__codesize() (gas: 11663) -MetadataReaderLibTest:testBoundsCheckDifferential(uint256) (runs: 256, μ: 25481, ~: 25478) +MetadataReaderLibTest:testBoundsCheckDifferential(uint256) (runs: 312, μ: 25478, ~: 25473) MetadataReaderLibTest:testReadBytes32String() (gas: 667978) MetadataReaderLibTest:testReadBytes32StringTruncated() (gas: 782746) -MetadataReaderLibTest:testReadString(uint256) (runs: 256, μ: 851624, ~: 725613) +MetadataReaderLibTest:testReadString(uint256) (runs: 312, μ: 843040, ~: 725350) MetadataReaderLibTest:testReadStringChopped() (gas: 272350) -MetadataReaderLibTest:testReadStringTruncated(uint256) (runs: 256, μ: 849956, ~: 712820) +MetadataReaderLibTest:testReadStringTruncated(uint256) (runs: 312, μ: 832462, ~: 712767) MetadataReaderLibTest:testReadUint() (gas: 921729) -MetadataReaderLibTest:testReadUint(uint256) (runs: 256, μ: 46824, ~: 47136) +MetadataReaderLibTest:testReadUint(uint256) (runs: 312, μ: 46692, ~: 47136) MetadataReaderLibTest:test__codesize() (gas: 8049) -MinHeapLibTest:testHeapEnqueue(uint256) (runs: 256, μ: 180726, ~: 181221) -MinHeapLibTest:testHeapEnqueue2(uint256) (runs: 256, μ: 606951, ~: 494164) +MinHeapLibTest:testHeapEnqueue(uint256) (runs: 312, μ: 181303, ~: 181221) +MinHeapLibTest:testHeapEnqueue2(uint256) (runs: 312, μ: 593316, ~: 451760) MinHeapLibTest:testHeapEnqueueGas() (gas: 841356) -MinHeapLibTest:testHeapEnqueueZeroMaxLengthReverts(uint256) (runs: 256, μ: 47142, ~: 28355) -MinHeapLibTest:testHeapPSiftTrick(uint256,uint256,uint256) (runs: 256, μ: 690, ~: 855) -MinHeapLibTest:testHeapPushAndPop(uint256) (runs: 256, μ: 112730, ~: 124625) -MinHeapLibTest:testHeapPushPop(uint256) (runs: 256, μ: 248313, ~: 242152) -MinHeapLibTest:testHeapPushPopLength(uint256) (runs: 256, μ: 923214, ~: 857081) -MinHeapLibTest:testHeapReplace(uint256) (runs: 256, μ: 296105, ~: 300971) -MinHeapLibTest:testHeapReplaceOrPopEmptyHeapReverts(uint256) (runs: 256, μ: 45442, ~: 50638) -MinHeapLibTest:testHeapRoot(uint256) (runs: 256, μ: 47617, ~: 47448) -MinHeapLibTest:testHeapSmallest(uint256) (runs: 256, μ: 1323444, ~: 1178947) +MinHeapLibTest:testHeapEnqueueZeroMaxLengthReverts(uint256) (runs: 312, μ: 46665, ~: 28352) +MinHeapLibTest:testHeapPSiftTrick(uint256,uint256,uint256) (runs: 312, μ: 687, ~: 517) +MinHeapLibTest:testHeapPushAndPop(uint256) (runs: 312, μ: 112950, ~: 124438) +MinHeapLibTest:testHeapPushPop(uint256) (runs: 312, μ: 244342, ~: 236557) +MinHeapLibTest:testHeapPushPopLength(uint256) (runs: 312, μ: 925930, ~: 858665) +MinHeapLibTest:testHeapReplace(uint256) (runs: 312, μ: 291059, ~: 288463) +MinHeapLibTest:testHeapReplaceOrPopEmptyHeapReverts(uint256) (runs: 312, μ: 45406, ~: 50632) +MinHeapLibTest:testHeapRoot(uint256) (runs: 312, μ: 47143, ~: 47448) +MinHeapLibTest:testHeapSmallest(uint256) (runs: 312, μ: 1312474, ~: 1179015) MinHeapLibTest:testHeapSmallestGas() (gas: 50069382) -MinHeapLibTest:testMemHeapEnqueue(uint256) (runs: 256, μ: 1559228, ~: 947072) -MinHeapLibTest:testMemHeapEnqueue2(uint256) (runs: 256, μ: 871981, ~: 753764) +MinHeapLibTest:testMemHeapEnqueue(uint256) (runs: 312, μ: 1589998, ~: 949556) +MinHeapLibTest:testMemHeapEnqueue2(uint256) (runs: 312, μ: 857780, ~: 751287) MinHeapLibTest:testMemHeapEnqueueGas() (gas: 249458) -MinHeapLibTest:testMemHeapEnqueueZeroMaxLengthReverts(uint256) (runs: 256, μ: 25083, ~: 25104) -MinHeapLibTest:testMemHeapPushAndPop(uint256) (runs: 256, μ: 955106, ~: 852297) +MinHeapLibTest:testMemHeapEnqueueZeroMaxLengthReverts(uint256) (runs: 312, μ: 25030, ~: 23899) +MinHeapLibTest:testMemHeapPushAndPop(uint256) (runs: 312, μ: 931876, ~: 842912) MinHeapLibTest:testMemHeapPushGas() (gas: 35596) -MinHeapLibTest:testMemHeapPushPop(uint256) (runs: 256, μ: 1158525, ~: 1033887) -MinHeapLibTest:testMemHeapPushPopLength(uint256) (runs: 256, μ: 785941, ~: 703550) -MinHeapLibTest:testMemHeapReplace(uint256) (runs: 256, μ: 932740, ~: 782126) -MinHeapLibTest:testMemHeapReplaceOrPopEmptyHeapReverts(uint256) (runs: 256, μ: 25701, ~: 25272) -MinHeapLibTest:testMemHeapRoot(uint256) (runs: 256, μ: 747793, ~: 649667) -MinHeapLibTest:testMemHeapSmallest(uint256) (runs: 256, μ: 868377, ~: 760205) +MinHeapLibTest:testMemHeapPushPop(uint256) (runs: 312, μ: 1174888, ~: 1050991) +MinHeapLibTest:testMemHeapPushPopLength(uint256) (runs: 312, μ: 787245, ~: 702133) +MinHeapLibTest:testMemHeapReplace(uint256) (runs: 312, μ: 906143, ~: 781948) +MinHeapLibTest:testMemHeapReplaceOrPopEmptyHeapReverts(uint256) (runs: 312, μ: 25697, ~: 25269) +MinHeapLibTest:testMemHeapRoot(uint256) (runs: 312, μ: 741169, ~: 649627) +MinHeapLibTest:testMemHeapSmallest(uint256) (runs: 312, μ: 877145, ~: 758521) MinHeapLibTest:testMemHeapSmallestGas() (gas: 2985537) MinHeapLibTest:testMemHeapWriteAndReadFromStorage() (gas: 67756) MinHeapLibTest:testMemHeapWriteAndReadFromStorage2() (gas: 67774) @@ -1030,66 +1030,66 @@ MulticallableTest:testMulticallableBenchmark() (gas: 29642) MulticallableTest:testMulticallableOriginalBenchmark() (gas: 38935) MulticallableTest:testMulticallablePreservesMsgSender() (gas: 11166) MulticallableTest:testMulticallableReturnDataIsProperlyEncoded() (gas: 11665) -MulticallableTest:testMulticallableReturnDataIsProperlyEncoded(string,string,uint256) (runs: 256, μ: 12085, ~: 7434) -MulticallableTest:testMulticallableReturnDataIsProperlyEncoded(uint256,uint256,uint256,uint256) (runs: 256, μ: 11811, ~: 11811) +MulticallableTest:testMulticallableReturnDataIsProperlyEncoded(string,string,uint256) (runs: 312, μ: 12116, ~: 7437) +MulticallableTest:testMulticallableReturnDataIsProperlyEncoded(uint256,uint256,uint256,uint256) (runs: 312, μ: 11811, ~: 11811) MulticallableTest:testMulticallableRevertWithCustomError() (gas: 11811) MulticallableTest:testMulticallableRevertWithMessage() (gas: 13483) -MulticallableTest:testMulticallableRevertWithMessage(string) (runs: 256, μ: 14096, ~: 13944) +MulticallableTest:testMulticallableRevertWithMessage(string) (runs: 312, μ: 14093, ~: 13944) MulticallableTest:testMulticallableRevertWithNothing() (gas: 11673) MulticallableTest:testMulticallableWithNoData() (gas: 6286) MulticallableTest:test__codesize() (gas: 8867) OwnableRolesTest:testBytecodeSize() (gas: 350635) -OwnableRolesTest:testGrantAndRemoveRolesDirect(address,uint256,uint256) (runs: 256, μ: 40104, ~: 40750) -OwnableRolesTest:testGrantAndRevokeOrRenounceRoles(address,bool,bool,bool,uint256,uint256) (runs: 256, μ: 27257, ~: 16047) +OwnableRolesTest:testGrantAndRemoveRolesDirect(address,uint256,uint256) (runs: 312, μ: 40116, ~: 40750) +OwnableRolesTest:testGrantAndRevokeOrRenounceRoles(address,bool,bool,bool,uint256,uint256) (runs: 312, μ: 27451, ~: 27899) OwnableRolesTest:testGrantRoles() (gas: 36136) OwnableRolesTest:testHandoverOwnership() (gas: 32394) -OwnableRolesTest:testHandoverOwnership(address) (runs: 256, μ: 32435, ~: 32420) +OwnableRolesTest:testHandoverOwnership(address) (runs: 312, μ: 32434, ~: 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: 256, μ: 33584, ~: 33588) -OwnableRolesTest:testHasAnyRole(address,uint256,uint256) (runs: 256, μ: 33219, ~: 33375) +OwnableRolesTest:testHasAllRoles(address,uint256,uint256,uint256,bool) (runs: 312, μ: 33583, ~: 33580) +OwnableRolesTest:testHasAnyRole(address,uint256,uint256) (runs: 312, μ: 33183, ~: 33375) OwnableRolesTest:testInitializeOwnerDirect() (gas: 16738) -OwnableRolesTest:testOnlyOwnerModifier(address,bool) (runs: 256, μ: 20965, ~: 30023) +OwnableRolesTest:testOnlyOwnerModifier(address,bool) (runs: 312, μ: 21080, ~: 30023) OwnableRolesTest:testOnlyOwnerOrRolesModifier() (gas: 36238) -OwnableRolesTest:testOnlyOwnerOrRolesModifier(address,bool,uint256,uint256) (runs: 256, μ: 55524, ~: 56641) -OwnableRolesTest:testOnlyRolesModifier(address,uint256,uint256) (runs: 256, μ: 56133, ~: 57903) -OwnableRolesTest:testOnlyRolesOrOwnerModifier(address,bool,uint256,uint256) (runs: 256, μ: 56446, ~: 57657) +OwnableRolesTest:testOnlyOwnerOrRolesModifier(address,bool,uint256,uint256) (runs: 312, μ: 55561, ~: 55110) +OwnableRolesTest:testOnlyRolesModifier(address,uint256,uint256) (runs: 312, μ: 56038, ~: 57903) +OwnableRolesTest:testOnlyRolesOrOwnerModifier(address,bool,uint256,uint256) (runs: 312, μ: 56522, ~: 57277) OwnableRolesTest:testOrdinalsFromRoles() (gas: 3756443) -OwnableRolesTest:testOrdinalsFromRoles(uint256) (runs: 256, μ: 59525, ~: 42037) +OwnableRolesTest:testOrdinalsFromRoles(uint256) (runs: 312, μ: 59177, ~: 44958) OwnableRolesTest:testOwnershipHandoverValidForDefaultValue() (gas: 5825) OwnableRolesTest:testRenounceOwnership() (gas: 12921) OwnableRolesTest:testRolesFromOrdinals() (gas: 652364) -OwnableRolesTest:testRolesFromOrdinals(uint8[]) (runs: 256, μ: 81222, ~: 85587) +OwnableRolesTest:testRolesFromOrdinals(uint8[]) (runs: 312, μ: 81413, ~: 84732) OwnableRolesTest:testSetOwnerDirect() (gas: 17790) -OwnableRolesTest:testSetOwnerDirect(address) (runs: 256, μ: 17915, ~: 17915) -OwnableRolesTest:testSetRolesDirect(uint256) (runs: 256, μ: 99781, ~: 99925) +OwnableRolesTest:testSetOwnerDirect(address) (runs: 312, μ: 17915, ~: 17915) +OwnableRolesTest:testSetRolesDirect(uint256) (runs: 312, μ: 99806, ~: 99925) OwnableRolesTest:testTransferOwnership() (gas: 19313) -OwnableRolesTest:testTransferOwnership(address,bool,bool) (runs: 256, μ: 14230, ~: 12377) +OwnableRolesTest:testTransferOwnership(address,bool,bool) (runs: 312, μ: 14214, ~: 12377) OwnableRolesTest:test__codesize() (gas: 21655) OwnableTest:testBytecodeSize() (gas: 235158) OwnableTest:testHandoverOwnership() (gas: 32127) -OwnableTest:testHandoverOwnership(address) (runs: 256, μ: 32150, ~: 32136) +OwnableTest:testHandoverOwnership(address) (runs: 312, μ: 32149, ~: 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: 256, μ: 20911, ~: 30001) +OwnableTest:testOnlyOwnerModifier(address,bool) (runs: 312, μ: 21027, ~: 30001) OwnableTest:testOwnershipHandoverValidForDefaultValue() (gas: 5737) OwnableTest:testRenounceOwnership() (gas: 12755) OwnableTest:testSetOwnerDirect() (gas: 17700) -OwnableTest:testSetOwnerDirect(address) (runs: 256, μ: 17807, ~: 17826) +OwnableTest:testSetOwnerDirect(address) (runs: 312, μ: 17810, ~: 17826) OwnableTest:testTransferOwnership() (gas: 19210) -OwnableTest:testTransferOwnership(address,bool,bool) (runs: 256, μ: 14003, ~: 12183) +OwnableTest:testTransferOwnership(address,bool,bool) (runs: 312, μ: 13992, ~: 12183) OwnableTest:test__codesize() (gas: 11003) -P256Test:testP256Verify(uint256,bytes32) (runs: 256, μ: 493491, ~: 493436) +P256Test:testP256Verify(uint256,bytes32) (runs: 312, μ: 493363, ~: 493174) 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: 256, μ: 10815, ~: 10799) +P256Test:testP256VerifyNotDeployedReverts(bytes32,bytes32,bytes32,bytes32,bytes32,bool) (runs: 312, μ: 10815, ~: 10799) P256Test:testP256VerifyOutOfBounds() (gas: 201377) P256Test:testP256VerifyWycheproof() (gas: 3268) P256Test:test__codesize() (gas: 11373) @@ -1100,8 +1100,8 @@ ReceiverTest:testOnERC721Received() (gas: 64593) ReceiverTest:test__codesize() (gas: 3053) RedBlackTreeLibTest:testRedBlackTreeBenchUint160() (gas: 3428194) RedBlackTreeLibTest:testRedBlackTreeBenchUint256() (gas: 5841865) -RedBlackTreeLibTest:testRedBlackTreeInsertAndRemove(uint256) (runs: 256, μ: 548981, ~: 535382) -RedBlackTreeLibTest:testRedBlackTreeInsertAndRemove2(uint256) (runs: 256, μ: 415915, ~: 423682) +RedBlackTreeLibTest:testRedBlackTreeInsertAndRemove(uint256) (runs: 312, μ: 549832, ~: 535382) +RedBlackTreeLibTest:testRedBlackTreeInsertAndRemove2(uint256) (runs: 312, μ: 426892, ~: 433250) RedBlackTreeLibTest:testRedBlackTreeInsertAndRemove3() (gas: 21527899) RedBlackTreeLibTest:testRedBlackTreeInsertBenchStep() (gas: 3702908) RedBlackTreeLibTest:testRedBlackTreeInsertBenchUint160() (gas: 3468526) @@ -1110,16 +1110,16 @@ RedBlackTreeLibTest:testRedBlackTreeInsertOneGas() (gas: 45558) RedBlackTreeLibTest:testRedBlackTreeInsertTenGas() (gas: 282691) RedBlackTreeLibTest:testRedBlackTreeInsertThreeGas() (gas: 96175) RedBlackTreeLibTest:testRedBlackTreeInsertTwoGas() (gas: 69785) -RedBlackTreeLibTest:testRedBlackTreeNearest(uint256) (runs: 256, μ: 247785, ~: 249207) -RedBlackTreeLibTest:testRedBlackTreeNearestAfter(uint256) (runs: 256, μ: 246205, ~: 231492) -RedBlackTreeLibTest:testRedBlackTreeNearestBefore(uint256) (runs: 256, μ: 275290, ~: 282235) +RedBlackTreeLibTest:testRedBlackTreeNearest(uint256) (runs: 312, μ: 251703, ~: 249019) +RedBlackTreeLibTest:testRedBlackTreeNearestAfter(uint256) (runs: 312, μ: 244992, ~: 227366) +RedBlackTreeLibTest:testRedBlackTreeNearestBefore(uint256) (runs: 312, μ: 272441, ~: 274022) RedBlackTreeLibTest:testRedBlackTreePointers() (gas: 91643) RedBlackTreeLibTest:testRedBlackTreeRejectsEmptyValue() (gas: 3232) RedBlackTreeLibTest:testRedBlackTreeRemoveViaPointer() (gas: 58157) RedBlackTreeLibTest:testRedBlackTreeTreeFullReverts() (gas: 50317) RedBlackTreeLibTest:testRedBlackTreeTryInsertAndRemove() (gas: 56062) RedBlackTreeLibTest:testRedBlackTreeValues() (gas: 188548) -RedBlackTreeLibTest:testRedBlackTreeValues(uint256) (runs: 256, μ: 375020, ~: 240658) +RedBlackTreeLibTest:testRedBlackTreeValues(uint256) (runs: 312, μ: 382915, ~: 243302) RedBlackTreeLibTest:test__codesize() (gas: 13131) ReentrancyGuardTest:testRecursiveDirectUnguardedCall() (gas: 34276) ReentrancyGuardTest:testRecursiveIndirectUnguardedCall() (gas: 47727) @@ -1129,109 +1129,109 @@ ReentrancyGuardTest:testRevertRecursiveDirectGuardedCall() (gas: 55123) ReentrancyGuardTest:testRevertRecursiveIndirectGuardedCall() (gas: 56529) ReentrancyGuardTest:testRevertRemoteCallback() (gas: 56230) ReentrancyGuardTest:test__codesize() (gas: 4403) -SSTORE2Test:testReadRevertsOnZeroCodeAddress(address) (runs: 256, μ: 109243, ~: 29905) +SSTORE2Test:testReadRevertsOnZeroCodeAddress(address) (runs: 312, μ: 102029, ~: 29905) SSTORE2Test:testReadSlicing() (gas: 48874) SSTORE2Test:testWriteRead() (gas: 35880) -SSTORE2Test:testWriteRead(uint256,uint256) (runs: 256, μ: 1093652, ~: 67527) -SSTORE2Test:testWriteReadCounterfactual(bytes,bytes32,address) (runs: 256, μ: 4271622, ~: 108268) +SSTORE2Test:testWriteRead(uint256,uint256) (runs: 312, μ: 1066177, ~: 67384) +SSTORE2Test:testWriteReadCounterfactual(bytes,bytes32,address) (runs: 312, μ: 4145659, ~: 108268) SSTORE2Test:testWriteReadCustomBounds() (gas: 33936) SSTORE2Test:testWriteReadCustomStartBound() (gas: 34020) SSTORE2Test:testWriteReadDeterministic() (gas: 70156) -SSTORE2Test:testWriteReadDeterministic(bytes,bytes32) (runs: 256, μ: 2745391, ~: 96728) +SSTORE2Test:testWriteReadDeterministic(bytes,bytes32) (runs: 312, μ: 3511260, ~: 96728) SSTORE2Test:testWriteReadEmptyBound() (gas: 33734) SSTORE2Test:testWriteReadFullBoundedRead() (gas: 35937) SSTORE2Test:testWriteReadFullStartBound() (gas: 33983) SSTORE2Test:testWriteWithTooBigDataReverts() (gas: 97303641) SSTORE2Test:test__codesize() (gas: 8483) -SafeCastLibTest:testSafeCastInt256ToInt(int256,uint256) (runs: 256, μ: 19549, ~: 24780) +SafeCastLibTest:testSafeCastInt256ToInt(int256,uint256) (runs: 312, μ: 19048, ~: 24771) SafeCastLibTest:testSafeCastInt256ToIntBench() (gas: 341694) -SafeCastLibTest:testSafeCastInt256ToIntTrickEquivalence(int256) (runs: 256, μ: 406, ~: 406) -SafeCastLibTest:testSafeCastToInt256(uint256) (runs: 256, μ: 505, ~: 405) -SafeCastLibTest:testSafeCastToUint256(int256) (runs: 256, μ: 1316, ~: 428) -SafeCastLibTest:testSafeCastUint256ToInt(uint256,uint256) (runs: 256, μ: 26903, ~: 26158) +SafeCastLibTest:testSafeCastInt256ToIntTrickEquivalence(int256) (runs: 312, μ: 406, ~: 406) +SafeCastLibTest:testSafeCastToInt256(uint256) (runs: 312, μ: 496, ~: 405) +SafeCastLibTest:testSafeCastToUint256(int256) (runs: 312, μ: 1302, ~: 428) +SafeCastLibTest:testSafeCastUint256ToInt(uint256,uint256) (runs: 312, μ: 26988, ~: 26186) SafeCastLibTest:testSafeCastUint256ToInt256Bench() (gas: 29380) SafeCastLibTest:testSafeCastUint256ToIntBench() (gas: 330222) SafeCastLibTest:testSafeCastUint256ToUintBench() (gas: 326262) -SafeCastLibTest:testSafeCastUintToUint(uint256,uint256) (runs: 256, μ: 19254, ~: 24810) +SafeCastLibTest:testSafeCastUintToUint(uint256,uint256) (runs: 312, μ: 19139, ~: 24811) SafeCastLibTest:test__codesize() (gas: 23416) -SafeTransferLibTest:testApproveWithGarbageReverts(address,uint256) (runs: 256, μ: 110653, ~: 123532) +SafeTransferLibTest:testApproveWithGarbageReverts(address,uint256) (runs: 312, μ: 110234, ~: 123658) SafeTransferLibTest:testApproveWithMissingReturn() (gas: 32065) -SafeTransferLibTest:testApproveWithMissingReturn(address,uint256) (runs: 256, μ: 32207, ~: 32285) +SafeTransferLibTest:testApproveWithMissingReturn(address,uint256) (runs: 312, μ: 32157, ~: 32285) SafeTransferLibTest:testApproveWithNonContract() (gas: 2967) -SafeTransferLibTest:testApproveWithNonContract(address,address,uint256) (runs: 256, μ: 3539, ~: 3613) -SafeTransferLibTest:testApproveWithNonGarbage(address,uint256) (runs: 256, μ: 79454, ~: 59367) +SafeTransferLibTest:testApproveWithNonContract(address,address,uint256) (runs: 312, μ: 3552, ~: 3613) +SafeTransferLibTest:testApproveWithNonGarbage(address,uint256) (runs: 312, μ: 79580, ~: 59368) SafeTransferLibTest:testApproveWithRetry() (gas: 839894) -SafeTransferLibTest:testApproveWithRetry(address,uint256,uint256) (runs: 256, μ: 839830, ~: 840010) +SafeTransferLibTest:testApproveWithRetry(address,uint256,uint256) (runs: 312, μ: 839742, ~: 840010) SafeTransferLibTest:testApproveWithRetryWithNonContract() (gas: 2990) -SafeTransferLibTest:testApproveWithRetryWithNonContract(address,address,uint256) (runs: 256, μ: 3558, ~: 3632) +SafeTransferLibTest:testApproveWithRetryWithNonContract(address,address,uint256) (runs: 312, μ: 3571, ~: 3632) SafeTransferLibTest:testApproveWithReturnsFalseReverts() (gas: 9713) -SafeTransferLibTest:testApproveWithReturnsFalseReverts(address,uint256) (runs: 256, μ: 9866, ~: 9866) +SafeTransferLibTest:testApproveWithReturnsFalseReverts(address,uint256) (runs: 312, μ: 9866, ~: 9866) SafeTransferLibTest:testApproveWithReturnsTooLittleReverts() (gas: 9617) -SafeTransferLibTest:testApproveWithReturnsTooLittleReverts(address,uint256) (runs: 256, μ: 9795, ~: 9795) +SafeTransferLibTest:testApproveWithReturnsTooLittleReverts(address,uint256) (runs: 312, μ: 9795, ~: 9795) SafeTransferLibTest:testApproveWithReturnsTooMuch() (gas: 32511) -SafeTransferLibTest:testApproveWithReturnsTooMuch(address,uint256) (runs: 256, μ: 32591, ~: 32669) -SafeTransferLibTest:testApproveWithReturnsTwoReverts(address,uint256) (runs: 256, μ: 9823, ~: 9823) +SafeTransferLibTest:testApproveWithReturnsTooMuch(address,uint256) (runs: 312, μ: 32541, ~: 32669) +SafeTransferLibTest:testApproveWithReturnsTwoReverts(address,uint256) (runs: 312, μ: 9823, ~: 9823) SafeTransferLibTest:testApproveWithRevertingReverts() (gas: 9574) -SafeTransferLibTest:testApproveWithRevertingReverts(address,uint256) (runs: 256, μ: 9784, ~: 9784) +SafeTransferLibTest:testApproveWithRevertingReverts(address,uint256) (runs: 312, μ: 9784, ~: 9784) SafeTransferLibTest:testApproveWithStandardERC20() (gas: 31951) -SafeTransferLibTest:testApproveWithStandardERC20(address,uint256) (runs: 256, μ: 32095, ~: 32173) +SafeTransferLibTest:testApproveWithStandardERC20(address,uint256) (runs: 312, μ: 32045, ~: 32173) SafeTransferLibTest:testBalanceOfStandardERC20() (gas: 7852) -SafeTransferLibTest:testBalanceOfStandardERC20(address,uint256) (runs: 256, μ: 37124, ~: 37498) +SafeTransferLibTest:testBalanceOfStandardERC20(address,uint256) (runs: 312, μ: 37176, ~: 37498) SafeTransferLibTest:testForceTransferETHToGriever() (gas: 1511587) -SafeTransferLibTest:testForceTransferETHToGriever(uint256,uint256) (runs: 256, μ: 537735, ~: 570885) +SafeTransferLibTest:testForceTransferETHToGriever(uint256,uint256) (runs: 312, μ: 536028, ~: 570885) SafeTransferLibTest:testPermit2() (gas: 88950) -SafeTransferLibTest:testPermit2InvalidAmount(uint256) (runs: 256, μ: 102086, ~: 102121) +SafeTransferLibTest:testPermit2InvalidAmount(uint256) (runs: 312, μ: 102081, ~: 102079) SafeTransferLibTest:testPermit2OnDAI() (gas: 89147) -SafeTransferLibTest:testPermit2TransferFromInvalidAmount(uint256) (runs: 256, μ: 135550, ~: 135894) +SafeTransferLibTest:testPermit2TransferFromInvalidAmount(uint256) (runs: 312, μ: 135539, ~: 135892) SafeTransferLibTest:testSimplePermit2AndPermit2TransferFrom() (gas: 1117812) SafeTransferLibTest:testSimplePermit2AndPermit2TransferFromGas() (gas: 139429) SafeTransferLibTest:testTransferAllETH() (gas: 34643) -SafeTransferLibTest:testTransferAllETH(bytes32) (runs: 256, μ: 57052, ~: 57052) +SafeTransferLibTest:testTransferAllETH(bytes32) (runs: 312, μ: 57052, ~: 57052) SafeTransferLibTest:testTransferAllETHToContractWithoutFallbackReverts() (gas: 10782) -SafeTransferLibTest:testTransferAllETHToContractWithoutFallbackReverts(uint256) (runs: 256, μ: 10869, ~: 10869) +SafeTransferLibTest:testTransferAllETHToContractWithoutFallbackReverts(uint256) (runs: 312, μ: 10869, ~: 10869) SafeTransferLibTest:testTransferAllFromWithStandardERC20() (gas: 33323) -SafeTransferLibTest:testTransferAllFromWithStandardERC20(address,address,uint256) (runs: 256, μ: 56741, ~: 56725) +SafeTransferLibTest:testTransferAllFromWithStandardERC20(address,address,uint256) (runs: 312, μ: 56738, ~: 56720) SafeTransferLibTest:testTransferAllWithStandardERC20() (gas: 30832) -SafeTransferLibTest:testTransferAllWithStandardERC20(address,uint256) (runs: 256, μ: 39342, ~: 39342) +SafeTransferLibTest:testTransferAllWithStandardERC20(address,uint256) (runs: 312, μ: 39342, ~: 39342) SafeTransferLibTest:testTransferETH() (gas: 34622) -SafeTransferLibTest:testTransferETH(bytes32,uint256) (runs: 256, μ: 57018, ~: 57320) +SafeTransferLibTest:testTransferETH(bytes32,uint256) (runs: 312, μ: 56986, ~: 57320) SafeTransferLibTest:testTransferETHToContractWithoutFallbackReverts() (gas: 10851) -SafeTransferLibTest:testTransferETHToContractWithoutFallbackReverts(uint256) (runs: 256, μ: 10766, ~: 10888) -SafeTransferLibTest:testTransferFromWithGarbageReverts(address,address,uint256) (runs: 256, μ: 817409, ~: 699300) +SafeTransferLibTest:testTransferETHToContractWithoutFallbackReverts(uint256) (runs: 312, μ: 10720, ~: 10888) +SafeTransferLibTest:testTransferFromWithGarbageReverts(address,address,uint256) (runs: 312, μ: 801153, ~: 699300) SafeTransferLibTest:testTransferFromWithMissingReturn() (gas: 564163) -SafeTransferLibTest:testTransferFromWithMissingReturn(address,address,uint256) (runs: 256, μ: 679078, ~: 564850) +SafeTransferLibTest:testTransferFromWithMissingReturn(address,address,uint256) (runs: 312, μ: 687038, ~: 564840) SafeTransferLibTest:testTransferFromWithNonContract() (gas: 3066) -SafeTransferLibTest:testTransferFromWithNonContract(address,address,address,uint256) (runs: 256, μ: 3836, ~: 3861) -SafeTransferLibTest:testTransferFromWithNonGarbage(address,address,uint256) (runs: 256, μ: 757186, ~: 615035) +SafeTransferLibTest:testTransferFromWithNonContract(address,address,address,uint256) (runs: 312, μ: 3840, ~: 3861) +SafeTransferLibTest:testTransferFromWithNonGarbage(address,address,uint256) (runs: 312, μ: 741645, ~: 615035) SafeTransferLibTest:testTransferFromWithReturnsFalseReverts() (gas: 530320) -SafeTransferLibTest:testTransferFromWithReturnsFalseReverts(address,address,uint256) (runs: 256, μ: 627027, ~: 530700) +SafeTransferLibTest:testTransferFromWithReturnsFalseReverts(address,address,uint256) (runs: 312, μ: 644254, ~: 530740) SafeTransferLibTest:testTransferFromWithReturnsTooLittleReverts() (gas: 530297) -SafeTransferLibTest:testTransferFromWithReturnsTooLittleReverts(address,address,uint256) (runs: 256, μ: 650659, ~: 530535) +SafeTransferLibTest:testTransferFromWithReturnsTooLittleReverts(address,address,uint256) (runs: 312, μ: 691363, ~: 530535) SafeTransferLibTest:testTransferFromWithReturnsTooMuch() (gas: 564800) -SafeTransferLibTest:testTransferFromWithReturnsTooMuch(address,address,uint256) (runs: 256, μ: 705132, ~: 565302) -SafeTransferLibTest:testTransferFromWithReturnsTwoReverts(address,address,uint256) (runs: 256, μ: 589729, ~: 530629) +SafeTransferLibTest:testTransferFromWithReturnsTooMuch(address,address,uint256) (runs: 312, μ: 688404, ~: 565446) +SafeTransferLibTest:testTransferFromWithReturnsTwoReverts(address,address,uint256) (runs: 312, μ: 607617, ~: 530619) SafeTransferLibTest:testTransferFromWithRevertingReverts() (gas: 523583) -SafeTransferLibTest:testTransferFromWithRevertingReverts(address,address,uint256) (runs: 256, μ: 605497, ~: 523720) +SafeTransferLibTest:testTransferFromWithRevertingReverts(address,address,uint256) (runs: 312, μ: 596709, ~: 523730) SafeTransferLibTest:testTransferFromWithStandardERC20() (gas: 562845) -SafeTransferLibTest:testTransferFromWithStandardERC20(address,address,uint256) (runs: 256, μ: 726564, ~: 562386) -SafeTransferLibTest:testTransferWithGarbageReverts(address,uint256) (runs: 256, μ: 717207, ~: 642743) +SafeTransferLibTest:testTransferFromWithStandardERC20(address,address,uint256) (runs: 312, μ: 705628, ~: 562356) +SafeTransferLibTest:testTransferWithGarbageReverts(address,uint256) (runs: 312, μ: 722198, ~: 643692) SafeTransferLibTest:testTransferWithMissingReturn() (gas: 550861) -SafeTransferLibTest:testTransferWithMissingReturn(address,uint256) (runs: 256, μ: 634050, ~: 551229) +SafeTransferLibTest:testTransferWithMissingReturn(address,uint256) (runs: 312, μ: 632993, ~: 551229) SafeTransferLibTest:testTransferWithNonContract() (gas: 3010) -SafeTransferLibTest:testTransferWithNonContract(bytes32,address,uint256) (runs: 256, μ: 25919, ~: 25919) -SafeTransferLibTest:testTransferWithNonGarbage(address,uint256) (runs: 256, μ: 664535, ~: 578415) +SafeTransferLibTest:testTransferWithNonContract(bytes32,address,uint256) (runs: 312, μ: 25919, ~: 25919) +SafeTransferLibTest:testTransferWithNonGarbage(address,uint256) (runs: 312, μ: 666854, ~: 578440) SafeTransferLibTest:testTransferWithReturnsFalseReverts() (gas: 527368) -SafeTransferLibTest:testTransferWithReturnsFalseReverts(address,uint256) (runs: 256, μ: 628043, ~: 527646) +SafeTransferLibTest:testTransferWithReturnsFalseReverts(address,uint256) (runs: 312, μ: 622986, ~: 527646) SafeTransferLibTest:testTransferWithReturnsTooLittleReverts() (gas: 527576) -SafeTransferLibTest:testTransferWithReturnsTooLittleReverts(address,uint256) (runs: 256, μ: 564470, ~: 527570) +SafeTransferLibTest:testTransferWithReturnsTooLittleReverts(address,uint256) (runs: 312, μ: 557842, ~: 527549) SafeTransferLibTest:testTransferWithReturnsTooMuch() (gas: 551262) -SafeTransferLibTest:testTransferWithReturnsTooMuch(address,uint256) (runs: 256, μ: 666239, ~: 551686) -SafeTransferLibTest:testTransferWithReturnsTwoReverts(address,uint256) (runs: 256, μ: 659085, ~: 527646) +SafeTransferLibTest:testTransferWithReturnsTooMuch(address,uint256) (runs: 312, μ: 646867, ~: 551686) +SafeTransferLibTest:testTransferWithReturnsTwoReverts(address,uint256) (runs: 312, μ: 647668, ~: 527646) SafeTransferLibTest:testTransferWithRevertingReverts() (gas: 527283) -SafeTransferLibTest:testTransferWithRevertingReverts(address,uint256) (runs: 256, μ: 651820, ~: 527582) +SafeTransferLibTest:testTransferWithRevertingReverts(address,uint256) (runs: 312, μ: 663707, ~: 527582) SafeTransferLibTest:testTransferWithStandardERC20() (gas: 551528) -SafeTransferLibTest:testTransferWithStandardERC20(address,uint256) (runs: 256, μ: 626102, ~: 551499) -SafeTransferLibTest:testTrySafeTransferFrom(address,address,uint256) (runs: 256, μ: 108582, ~: 111595) +SafeTransferLibTest:testTransferWithStandardERC20(address,uint256) (runs: 312, μ: 643191, ~: 551499) +SafeTransferLibTest:testTrySafeTransferFrom(address,address,uint256) (runs: 312, μ: 108520, ~: 111595) SafeTransferLibTest:testTryTransferAllETH() (gas: 148698) SafeTransferLibTest:testTryTransferETH() (gas: 148701) SafeTransferLibTest:testTryTransferETHWithNoGrief() (gas: 537025) @@ -1244,7 +1244,7 @@ SignatureCheckerLibTest:testERC6492PreDeploy() (gas: 1226946) SignatureCheckerLibTest:testERC6492WithoutRevertingVerifier() (gas: 61787) SignatureCheckerLibTest:testEmptyCalldataHelpers() (gas: 3987) SignatureCheckerLibTest:testEtchERC6492RevertingVerifier() (gas: 56459) -SignatureCheckerLibTest:testSignatureChecker(bytes32) (runs: 256, μ: 55671, ~: 45424) +SignatureCheckerLibTest:testSignatureChecker(bytes32) (runs: 312, μ: 55445, ~: 45424) SignatureCheckerLibTest:testSignatureCheckerOnEOAWithInvalidSignature() (gas: 21300) SignatureCheckerLibTest:testSignatureCheckerOnEOAWithInvalidSigner() (gas: 30800) SignatureCheckerLibTest:testSignatureCheckerOnEOAWithMatchingSignerAndSignature() (gas: 17697) @@ -1255,8 +1255,8 @@ SignatureCheckerLibTest:testSignatureCheckerOnWalletWithInvalidSigner() (gas: 25 SignatureCheckerLibTest:testSignatureCheckerOnWalletWithMatchingSignerAndSignature() (gas: 64518) SignatureCheckerLibTest:testSignatureCheckerOnWalletWithWrongSignedMessageHash() (gas: 64597) SignatureCheckerLibTest:testSignatureCheckerOnWalletWithZeroAddressSigner() (gas: 12364) -SignatureCheckerLibTest:testToEthSignedMessageHashDifferential(bytes) (runs: 256, μ: 1284, ~: 1284) -SignatureCheckerLibTest:testToEthSignedMessageHashDifferential(bytes32) (runs: 256, μ: 481, ~: 481) +SignatureCheckerLibTest:testToEthSignedMessageHashDifferential(bytes) (runs: 312, μ: 1285, ~: 1284) +SignatureCheckerLibTest:testToEthSignedMessageHashDifferential(bytes32) (runs: 312, μ: 481, ~: 481) SignatureCheckerLibTest:test__codesize() (gas: 15454) SoladyTest:test__codesize() (gas: 840) TestPlus:test__codesize() (gas: 406) @@ -1272,7 +1272,7 @@ UUPSUpgradeableTest:testUpgradeToRevertWithUpgradeFailed() (gas: 18583) UUPSUpgradeableTest:test__codesize() (gas: 6048) UpgradeableBeaconTest:testInitializeUpgradeableSolidityBeacon() (gas: 296434) UpgradeableBeaconTest:testInitializeUpgradeableYulBeacon() (gas: 335455) -UpgradeableBeaconTest:testUpgradeableBeacon(uint256) (runs: 256, μ: 246873, ~: 255829) +UpgradeableBeaconTest:testUpgradeableBeacon(uint256) (runs: 312, μ: 245942, ~: 255829) UpgradeableBeaconTest:testUpgradeableSolidityBeaconOnlyFnSelectorNotRecognised() (gas: 234560) UpgradeableBeaconTest:testUpgradeableSolidityBeaconOnlyOwnerFunctions() (gas: 260339) UpgradeableBeaconTest:testUpgradeableYulBeaconOnlyFnSelectorNotRecognised() (gas: 172796) @@ -1281,12 +1281,12 @@ UpgradeableBeaconTest:test__codesize() (gas: 8511) WETHInvariants:invariantTotalSupplyEqualsBalance() (runs: 10, calls: 150, reverts: 74) WETHInvariants:test__codesize() (gas: 5178) WETHTest:testDeposit() (gas: 62272) -WETHTest:testDeposit(uint256) (runs: 256, μ: 61908, ~: 62566) +WETHTest:testDeposit(uint256) (runs: 312, μ: 61443, ~: 62566) WETHTest:testFallbackDeposit() (gas: 61978) -WETHTest:testFallbackDeposit(uint256) (runs: 256, μ: 61569, ~: 62227) +WETHTest:testFallbackDeposit(uint256) (runs: 312, μ: 61104, ~: 62227) WETHTest:testMetadata() (gas: 9013) WETHTest:testPartialWithdraw() (gas: 70422) WETHTest:testWithdraw() (gas: 52047) -WETHTest:testWithdraw(uint256,uint256) (runs: 256, μ: 70547, ~: 71175) +WETHTest:testWithdraw(uint256,uint256) (runs: 312, μ: 69912, ~: 71175) WETHTest:testWithdrawToContractWithoutReceiveReverts() (gas: 90164) WETHTest:test__codesize() (gas: 9410) \ No newline at end of file diff --git a/test/ECDSA.t.sol b/test/ECDSA.t.sol index 3368bafc4..6cc4ad356 100644 --- a/test/ECDSA.t.sol +++ b/test/ECDSA.t.sol @@ -510,8 +510,9 @@ contract ECDSATest is SoladyTest { bytes memory shortsignature = hex"8688e590483917863a35ef230c0f839be8418aa4ee765228eddfcea7fe2652815db01c2c84b0ec746e1b74d97475c599b3d3419fa7181b4e01de62c02b721aea"; + /// @solidity memory-safe-assembly assembly { - mstore(shortsignature, 63) // corrupt memory length + mstore(shortsignature, 63) // Corrupt memory length. } assertNotEq(ECDSA.canonicalHash(shortsignature), keccak256(signature)); assertEq(this.canonicalHashCalldata(shortsignature), ECDSA.canonicalHash(shortsignature)); From 1cb7bd951d33b1df836f32b2c4bf7247f6b19f69 Mon Sep 17 00:00:00 2001 From: Vectorized Date: Thu, 15 Aug 2024 11:59:02 +0000 Subject: [PATCH 08/11] Strengthen tests --- .gas-snapshot | 1204 +++++++++++++++++++++---------------------- src/utils/ECDSA.sol | 8 +- test/ECDSA.t.sol | 111 +++- 3 files changed, 693 insertions(+), 630 deletions(-) diff --git a/.gas-snapshot b/.gas-snapshot index 5f71719de..20d609bc3 100644 --- a/.gas-snapshot +++ b/.gas-snapshot @@ -1,9 +1,9 @@ Base64Test:testBase64DecodeSentenceGas() (gas: 3663) Base64Test:testBase64DecodeShortStringGas() (gas: 896) -Base64Test:testBase64EncodeDecode(bytes) (runs: 312, μ: 6066, ~: 4968) -Base64Test:testBase64EncodeDecodeAltModes(bytes) (runs: 312, μ: 881150, ~: 731603) +Base64Test:testBase64EncodeDecode(bytes) (runs: 313, μ: 6063, ~: 4968) +Base64Test:testBase64EncodeDecodeAltModes(bytes) (runs: 313, μ: 880638, ~: 731498) Base64Test:testBase64EncodeEmptyString() (gas: 902) -Base64Test:testBase64EncodeFileSafeAndNoPadding(bytes,bool,bool) (runs: 312, μ: 15786, ~: 14264) +Base64Test:testBase64EncodeFileSafeAndNoPadding(bytes,bool,bool) (runs: 313, μ: 15795, ~: 14264) Base64Test:testBase64EncodeSentence() (gas: 4333) Base64Test:testBase64EncodeShortStrings() (gas: 7610) Base64Test:testBase64EncodeToStringWithDoublePadding() (gas: 1553) @@ -12,125 +12,125 @@ Base64Test:testBase64EncodeToStringWithSinglePadding() (gas: 1487) Base64Test:testBase64WordBoundary() (gas: 11624) Base64Test:test__codesize() (gas: 6768) CREATE3Test:testDeployERC20() (gas: 833235) -CREATE3Test:testDeployERC20(bytes32,string,string,uint8) (runs: 312, μ: 879240, ~: 879319) +CREATE3Test:testDeployERC20(bytes32,string,string,uint8) (runs: 313, μ: 879240, ~: 879319) CREATE3Test:testDeployedUpperBitsSafeForPlainSolidity() (gas: 613) CREATE3Test:testDoubleDeployDifferentBytecodeReverts() (gas: 96898738) -CREATE3Test:testDoubleDeployDifferentBytecodeReverts(bytes32,bytes,bytes) (runs: 312, μ: 96880294, ~: 96880242) +CREATE3Test:testDoubleDeployDifferentBytecodeReverts(bytes32,bytes,bytes) (runs: 313, μ: 96880298, ~: 96880246) CREATE3Test:testDoubleDeploySameBytecodeReverts() (gas: 96889196) -CREATE3Test:testDoubleDeploySameBytecodeReverts(bytes32,bytes) (runs: 312, μ: 96881047, ~: 96880998) +CREATE3Test:testDoubleDeploySameBytecodeReverts(bytes32,bytes) (runs: 313, μ: 96881049, ~: 96880999) CREATE3Test:test__codesize() (gas: 14114) -DateTimeLibTest:testAddSubDiffDays(uint256,uint256) (runs: 312, μ: 4205, ~: 4209) -DateTimeLibTest:testAddSubDiffHours(uint256,uint256) (runs: 312, μ: 4147, ~: 4155) -DateTimeLibTest:testAddSubDiffMinutes(uint256,uint256) (runs: 312, μ: 4141, ~: 4129) -DateTimeLibTest:testAddSubDiffMonths(uint256,uint256) (runs: 312, μ: 7251, ~: 7257) -DateTimeLibTest:testAddSubDiffSeconds(uint256,uint256) (runs: 312, μ: 3757, ~: 3721) -DateTimeLibTest:testAddSubDiffYears(uint256,uint256) (runs: 312, μ: 6815, ~: 6822) +DateTimeLibTest:testAddSubDiffDays(uint256,uint256) (runs: 313, μ: 4205, ~: 4209) +DateTimeLibTest:testAddSubDiffHours(uint256,uint256) (runs: 313, μ: 4147, ~: 4155) +DateTimeLibTest:testAddSubDiffMinutes(uint256,uint256) (runs: 313, μ: 4141, ~: 4129) +DateTimeLibTest:testAddSubDiffMonths(uint256,uint256) (runs: 313, μ: 7250, ~: 7257) +DateTimeLibTest:testAddSubDiffSeconds(uint256,uint256) (runs: 313, μ: 3757, ~: 3721) +DateTimeLibTest:testAddSubDiffYears(uint256,uint256) (runs: 313, μ: 6815, ~: 6822) DateTimeLibTest:testDateTimeArithmeticReverts() (gas: 4495) DateTimeLibTest:testDateTimeMaxSupported() (gas: 2823) -DateTimeLibTest:testDateTimeToAndFroTimestamp((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 312, μ: 4135, ~: 4089) -DateTimeLibTest:testDateToAndFroEpochDay((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 312, μ: 2563, ~: 2588) +DateTimeLibTest:testDateTimeToAndFroTimestamp((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 313, μ: 4135, ~: 4089) +DateTimeLibTest:testDateToAndFroEpochDay((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 313, μ: 2563, ~: 2588) DateTimeLibTest:testDateToAndFroEpochDay() (gas: 877945) DateTimeLibTest:testDateToAndFroTimestamp() (gas: 926776) DateTimeLibTest:testDateToEpochDay() (gas: 1559) -DateTimeLibTest:testDateToEpochDayDifferential((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 312, μ: 2302, ~: 2322) -DateTimeLibTest:testDateToEpochDayDifferential2((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 312, μ: 2224, ~: 2249) +DateTimeLibTest:testDateToEpochDayDifferential((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 313, μ: 2302, ~: 2322) +DateTimeLibTest:testDateToEpochDayDifferential2((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 313, μ: 2224, ~: 2249) DateTimeLibTest:testDateToEpochDayGas() (gas: 764427) DateTimeLibTest:testDateToEpochDayGas2() (gas: 770404) DateTimeLibTest:testDayOfWeek() (gas: 175255) DateTimeLibTest:testDaysInMonth() (gas: 1226) -DateTimeLibTest:testDaysInMonth(uint256,uint256) (runs: 312, μ: 1072, ~: 1084) +DateTimeLibTest:testDaysInMonth(uint256,uint256) (runs: 313, μ: 1072, ~: 1084) DateTimeLibTest:testDaysToDate() (gas: 8377) -DateTimeLibTest:testEpochDayToDate(uint256) (runs: 312, μ: 1045, ~: 1045) -DateTimeLibTest:testEpochDayToDateDifferential(uint256) (runs: 312, μ: 1778, ~: 1721) -DateTimeLibTest:testEpochDayToDateDifferential2(uint256) (runs: 312, μ: 1786, ~: 1709) +DateTimeLibTest:testEpochDayToDate(uint256) (runs: 313, μ: 1045, ~: 1045) +DateTimeLibTest:testEpochDayToDateDifferential(uint256) (runs: 313, μ: 1778, ~: 1721) +DateTimeLibTest:testEpochDayToDateDifferential2(uint256) (runs: 313, μ: 1785, ~: 1709) DateTimeLibTest:testEpochDayToDateGas() (gas: 348457) DateTimeLibTest:testEpochDayToDateGas2() (gas: 360513) DateTimeLibTest:testIsLeapYear() (gas: 741) -DateTimeLibTest:testIsLeapYear(uint256) (runs: 312, μ: 541, ~: 517) +DateTimeLibTest:testIsLeapYear(uint256) (runs: 313, μ: 541, ~: 517) DateTimeLibTest:testIsSupportedDateFalse() (gas: 1180) -DateTimeLibTest:testIsSupportedDateTime((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 312, μ: 2950, ~: 2949) +DateTimeLibTest:testIsSupportedDateTime((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 313, μ: 2951, ~: 2949) DateTimeLibTest:testIsSupportedDateTrue() (gas: 626) DateTimeLibTest:testIsSupportedEpochDayFalse() (gas: 494) DateTimeLibTest:testIsSupportedEpochDayTrue() (gas: 305) DateTimeLibTest:testIsSupportedTimestampFalse() (gas: 541) DateTimeLibTest:testIsSupportedTimestampTrue() (gas: 326) -DateTimeLibTest:testIsWeekEnd(uint256) (runs: 312, μ: 693, ~: 617) +DateTimeLibTest:testIsWeekEnd(uint256) (runs: 313, μ: 692, ~: 617) DateTimeLibTest:testMondayTimestamp() (gas: 1106) -DateTimeLibTest:testMondayTimestamp(uint256) (runs: 312, μ: 769, ~: 836) +DateTimeLibTest:testMondayTimestamp(uint256) (runs: 313, μ: 769, ~: 836) DateTimeLibTest:testNthWeekdayInMonthOfYearTimestamp() (gas: 12053) -DateTimeLibTest:testNthWeekdayInMonthOfYearTimestamp(uint256,uint256,uint256,uint256) (runs: 312, μ: 3536, ~: 3576) +DateTimeLibTest:testNthWeekdayInMonthOfYearTimestamp(uint256,uint256,uint256,uint256) (runs: 313, μ: 3534, ~: 3576) DateTimeLibTest:testWeekday() (gas: 682) DateTimeLibTest:test__codesize() (gas: 19163) DelegateCheckerLibTest:testCheckDelegateForAll() (gas: 35639) -DelegateCheckerLibTest:testCheckDelegateForAll(address,address,bytes32) (runs: 312, μ: 228424, ~: 242449) +DelegateCheckerLibTest:testCheckDelegateForAll(address,address,bytes32) (runs: 313, μ: 228549, ~: 242600) DelegateCheckerLibTest:testCheckDelegateForContract() (gas: 54172) -DelegateCheckerLibTest:testCheckDelegateForContract(address,address,address,bytes32) (runs: 312, μ: 354882, ~: 305165) +DelegateCheckerLibTest:testCheckDelegateForContract(address,address,address,bytes32) (runs: 313, μ: 354689, ~: 304093) DelegateCheckerLibTest:testCheckDelegateForERC1155() (gas: 62242) -DelegateCheckerLibTest:testCheckDelegateForERC1155(address,address,address,uint256,bytes32) (runs: 312, μ: 296531, ~: 303784) +DelegateCheckerLibTest:testCheckDelegateForERC1155(address,address,address,uint256,bytes32) (runs: 313, μ: 295894, ~: 303565) DelegateCheckerLibTest:testCheckDelegateForERC20() (gas: 61708) -DelegateCheckerLibTest:testCheckDelegateForERC20(address,address,address,bytes32) (runs: 312, μ: 297559, ~: 279707) +DelegateCheckerLibTest:testCheckDelegateForERC20(address,address,address,bytes32) (runs: 313, μ: 297560, ~: 279782) DelegateCheckerLibTest:testCheckDelegateForERC721() (gas: 69938) -DelegateCheckerLibTest:testCheckDelegateForERC721(address,address,address,uint256,bytes32) (runs: 312, μ: 422037, ~: 379327) +DelegateCheckerLibTest:testCheckDelegateForERC721(address,address,address,uint256,bytes32) (runs: 313, μ: 423275, ~: 380383) DelegateCheckerLibTest:test__codesize() (gas: 33189) -DeploylessPredeployQueryerTest:testPredeployQueryer(bytes32) (runs: 312, μ: 264692, ~: 222329) +DeploylessPredeployQueryerTest:testPredeployQueryer(bytes32) (runs: 313, μ: 264414, ~: 222329) DeploylessPredeployQueryerTest:testTargetGenerate() (gas: 366064) DeploylessPredeployQueryerTest:test__codesize() (gas: 8284) -DynamicBufferLibTest:testClear(uint256) (runs: 312, μ: 34608, ~: 34661) -DynamicBufferLibTest:testDynamicBuffer(bytes[],uint256) (runs: 312, μ: 915761, ~: 786910) -DynamicBufferLibTest:testDynamicBuffer(uint256) (runs: 312, μ: 835948, ~: 670494) +DynamicBufferLibTest:testClear(uint256) (runs: 313, μ: 34607, ~: 34658) +DynamicBufferLibTest:testDynamicBuffer(bytes[],uint256) (runs: 313, μ: 915395, ~: 788200) +DynamicBufferLibTest:testDynamicBuffer(uint256) (runs: 313, μ: 835436, ~: 670533) DynamicBufferLibTest:testDynamicBufferChaining() (gas: 12661) -DynamicBufferLibTest:testDynamicBufferPushSingles(uint256,uint256,uint256) (runs: 312, μ: 242390, ~: 34449) +DynamicBufferLibTest:testDynamicBufferPushSingles(uint256,uint256,uint256) (runs: 313, μ: 241715, ~: 34413) DynamicBufferLibTest:testDynamicBufferPushSinglesReinterpretCast() (gas: 21959) DynamicBufferLibTest:testDynamicBufferReserveFromEmpty() (gas: 2754) DynamicBufferLibTest:testDynamicBufferReserveFromEmpty2() (gas: 2463) -DynamicBufferLibTest:testDynamicBufferReserveFromEmpty3(bytes,uint256) (runs: 312, μ: 2838, ~: 2069) +DynamicBufferLibTest:testDynamicBufferReserveFromEmpty3(bytes,uint256) (runs: 313, μ: 2834, ~: 2069) DynamicBufferLibTest:testJoinWithConcat() (gas: 31429) DynamicBufferLibTest:testJoinWithDynamicBuffer() (gas: 10830) DynamicBufferLibTest:test__codesize() (gas: 12662) -ECDSATest:testBytes32ToEthSignedMessageHash() (gas: 425) -ECDSATest:testBytesToEthSignedMessageHash() (gas: 11581949) -ECDSATest:testBytesToEthSignedMessageHashEmpty() (gas: 578) -ECDSATest:testBytesToEthSignedMessageHashExceedsMaxLengthReverts() (gas: 613975) -ECDSATest:testBytesToEthSignedMessageHashLong() (gas: 725) -ECDSATest:testBytesToEthSignedMessageHashShort() (gas: 576) -ECDSATest:testCanonicalHashCalldataWith64bytesSignature() (gas: 1230928) -ECDSATest:testCanonicalHashCalldataWithRegularSignature() (gas: 1230402) -ECDSATest:testCanonicalHashWith64bytesSignature() (gas: 612570) -ECDSATest:testCanonicalHashWithIncorrectLengthSignature() (gas: 1233610) -ECDSATest:testCanonicalHashWithRegularSignature() (gas: 612413) -ECDSATest:testEmptyCalldataHelpers() (gas: 3201) -ECDSATest:testRecoverAndTryRecover(bytes32) (runs: 312, μ: 2821507, ~: 2527510) -ECDSATest:testRecoverWithInvalidLongSignatureReverts() (gas: 7417) -ECDSATest:testRecoverWithInvalidShortSignatureReturnsZero() (gas: 7253) -ECDSATest:testRecoverWithInvalidSignatureReverts() (gas: 8040) -ECDSATest:testRecoverWithV0SignatureWithShortEIP2098Format() (gas: 4566) -ECDSATest:testRecoverWithV0SignatureWithShortEIP2098FormatAsCalldata() (gas: 8731) -ECDSATest:testRecoverWithV0SignatureWithVersion00Reverts() (gas: 8005) -ECDSATest:testRecoverWithV0SignatureWithVersion27() (gas: 8897) -ECDSATest:testRecoverWithV0SignatureWithWrongVersionReverts() (gas: 7983) -ECDSATest:testRecoverWithV1SignatureWithShortEIP2098Format() (gas: 4522) -ECDSATest:testRecoverWithV1SignatureWithShortEIP2098FormatAsCalldata() (gas: 8707) -ECDSATest:testRecoverWithV1SignatureWithVersion01Reverts() (gas: 7928) -ECDSATest:testRecoverWithV1SignatureWithVersion28() (gas: 8920) -ECDSATest:testRecoverWithV1SignatureWithWrongVersionReverts() (gas: 7984) -ECDSATest:testRecoverWithValidSignature() (gas: 8935) -ECDSATest:testRecoverWithWrongSigner() (gas: 8914) -ECDSATest:testTryRecoverWithInvalidLongSignatureReturnsZero() (gas: 5263) -ECDSATest:testTryRecoverWithInvalidShortSignatureReturnsZero() (gas: 5112) -ECDSATest:testTryRecoverWithInvalidSignature() (gas: 8987) -ECDSATest:testTryRecoverWithV0SignatureWithShortEIP2098Format() (gas: 4577) -ECDSATest:testTryRecoverWithV0SignatureWithShortEIP2098FormatAsCalldata() (gas: 8798) -ECDSATest:testTryRecoverWithV0SignatureWithVersion00ReturnsZero() (gas: 8894) -ECDSATest:testTryRecoverWithV0SignatureWithVersion27() (gas: 8850) -ECDSATest:testTryRecoverWithV0SignatureWithWrongVersionReturnsZero() (gas: 8851) -ECDSATest:testTryRecoverWithV1SignatureWithShortEIP2098Format() (gas: 4522) -ECDSATest:testTryRecoverWithV1SignatureWithShortEIP2098FormatAsCalldata() (gas: 8820) -ECDSATest:testTryRecoverWithV1SignatureWithVersion01ReturnsZero() (gas: 8874) -ECDSATest:testTryRecoverWithV1SignatureWithVersion28() (gas: 8851) -ECDSATest:testTryRecoverWithV1SignatureWithWrongVersionReturnsZero() (gas: 8916) -ECDSATest:testTryRecoverWithValidSignature() (gas: 8921) -ECDSATest:testTryRecoverWithWrongSigner() (gas: 8934) -ECDSATest:test__codesize() (gas: 16531) +ECDSATest:testBytes32ToEthSignedMessageHash() (gas: 403) +ECDSATest:testBytesToEthSignedMessageHash() (gas: 11581864) +ECDSATest:testBytesToEthSignedMessageHashEmpty() (gas: 556) +ECDSATest:testBytesToEthSignedMessageHashExceedsMaxLengthReverts() (gas: 615831) +ECDSATest:testBytesToEthSignedMessageHashLong() (gas: 703) +ECDSATest:testBytesToEthSignedMessageHashShort() (gas: 642) +ECDSATest:testCanonicalHash(bytes32) (runs: 313, μ: 98359, ~: 28355) +ECDSATest:testCanonicalHashCalldataWith64bytesSignature() (gas: 1234607) +ECDSATest:testCanonicalHashCalldataWithRegularSignature() (gas: 1233968) +ECDSATest:testCanonicalHashWith64bytesSignature() (gas: 614369) +ECDSATest:testCanonicalHashWithRegularSignature() (gas: 614293) +ECDSATest:testEmptyCalldataHelpers() (gas: 3246) +ECDSATest:testRecoverAndTryRecover(bytes32) (runs: 313, μ: 2995381, ~: 2535596) +ECDSATest:testRecoverWithInvalidLongSignatureReverts() (gas: 7373) +ECDSATest:testRecoverWithInvalidShortSignatureReturnsZero() (gas: 7209) +ECDSATest:testRecoverWithInvalidSignatureReverts() (gas: 7996) +ECDSATest:testRecoverWithV0SignatureWithShortEIP2098Format() (gas: 4611) +ECDSATest:testRecoverWithV0SignatureWithShortEIP2098FormatAsCalldata() (gas: 8687) +ECDSATest:testRecoverWithV0SignatureWithVersion00Reverts() (gas: 7961) +ECDSATest:testRecoverWithV0SignatureWithVersion27() (gas: 8853) +ECDSATest:testRecoverWithV0SignatureWithWrongVersionReverts() (gas: 7939) +ECDSATest:testRecoverWithV1SignatureWithShortEIP2098Format() (gas: 4567) +ECDSATest:testRecoverWithV1SignatureWithShortEIP2098FormatAsCalldata() (gas: 8685) +ECDSATest:testRecoverWithV1SignatureWithVersion01Reverts() (gas: 7973) +ECDSATest:testRecoverWithV1SignatureWithVersion28() (gas: 8876) +ECDSATest:testRecoverWithV1SignatureWithWrongVersionReverts() (gas: 7940) +ECDSATest:testRecoverWithValidSignature() (gas: 8979) +ECDSATest:testRecoverWithWrongSigner() (gas: 8870) +ECDSATest:testTryRecoverWithInvalidLongSignatureReturnsZero() (gas: 5286) +ECDSATest:testTryRecoverWithInvalidShortSignatureReturnsZero() (gas: 5090) +ECDSATest:testTryRecoverWithInvalidSignature() (gas: 8965) +ECDSATest:testTryRecoverWithV0SignatureWithShortEIP2098Format() (gas: 4533) +ECDSATest:testTryRecoverWithV0SignatureWithShortEIP2098FormatAsCalldata() (gas: 8754) +ECDSATest:testTryRecoverWithV0SignatureWithVersion00ReturnsZero() (gas: 8850) +ECDSATest:testTryRecoverWithV0SignatureWithVersion27() (gas: 8895) +ECDSATest:testTryRecoverWithV0SignatureWithWrongVersionReturnsZero() (gas: 8895) +ECDSATest:testTryRecoverWithV1SignatureWithShortEIP2098Format() (gas: 4565) +ECDSATest:testTryRecoverWithV1SignatureWithShortEIP2098FormatAsCalldata() (gas: 8776) +ECDSATest:testTryRecoverWithV1SignatureWithVersion01ReturnsZero() (gas: 8830) +ECDSATest:testTryRecoverWithV1SignatureWithVersion28() (gas: 8895) +ECDSATest:testTryRecoverWithV1SignatureWithWrongVersionReturnsZero() (gas: 8872) +ECDSATest:testTryRecoverWithValidSignature() (gas: 8964) +ECDSATest:testTryRecoverWithWrongSigner() (gas: 8890) +ECDSATest:test__codesize() (gas: 17081) EIP712Test:testDomainSeparator() (gas: 6048) EIP712Test:testDomainSeparatorOnClone() (gas: 8842) EIP712Test:testDomainSeparatorOnCloneDynamicWithChainIdChange() (gas: 69580) @@ -149,60 +149,60 @@ EIP712Test:testHashTypedDataWithChaindIdChange() (gas: 45206) EIP712Test:test__codesize() (gas: 11400) ERC1155HooksTest:testERC1155Hooks() (gas: 4512310) ERC1155HooksTest:test__codesize() (gas: 12474) -ERC1155Test:testApproveAll(address,bool) (runs: 312, μ: 49172, ~: 58445) -ERC1155Test:testAuthorizedEquivalence(address,address,bool) (runs: 312, μ: 715, ~: 715) -ERC1155Test:testBalanceOfBatchWithArrayMismatchReverts(uint256) (runs: 312, μ: 32081, ~: 34870) -ERC1155Test:testBatchBalanceOf(uint256) (runs: 312, μ: 154012, ~: 150768) -ERC1155Test:testBatchBurn(uint256) (runs: 312, μ: 193299, ~: 173471) -ERC1155Test:testBatchBurnInsufficientBalanceReverts(uint256) (runs: 312, μ: 200239, ~: 189402) -ERC1155Test:testBatchBurnWithArrayLengthMismatchReverts(uint256) (runs: 312, μ: 54705, ~: 54392) -ERC1155Test:testBatchMintToEOA(uint256) (runs: 312, μ: 149812, ~: 151142) -ERC1155Test:testBatchMintToERC1155Recipient(uint256) (runs: 312, μ: 1486761, ~: 770583) -ERC1155Test:testBatchMintToNonERC1155RecipientReverts(uint256) (runs: 312, μ: 194232, ~: 186184) -ERC1155Test:testBatchMintToRevertingERC1155RecipientReverts(uint256) (runs: 312, μ: 372951, ~: 366861) -ERC1155Test:testBatchMintToWrongReturnDataERC1155RecipientReverts(uint256) (runs: 312, μ: 321834, ~: 289146) -ERC1155Test:testBatchMintToZeroReverts(uint256) (runs: 312, μ: 97551, ~: 90599) -ERC1155Test:testBatchMintWithArrayMismatchReverts(uint256) (runs: 312, μ: 42686, ~: 35656) -ERC1155Test:testBurn(uint256) (runs: 312, μ: 115432, ~: 103901) -ERC1155Test:testBurnInsufficientBalanceReverts(uint256) (runs: 312, μ: 117392, ~: 105919) -ERC1155Test:testDirectSetApprovalForAll(address,address,bool) (runs: 312, μ: 25194, ~: 15691) -ERC1155Test:testMintToEOA(uint256) (runs: 312, μ: 90379, ~: 82236) -ERC1155Test:testMintToERC1155Recipient(uint256) (runs: 312, μ: 1177323, ~: 663225) -ERC1155Test:testMintToNonERC155RecipientReverts(uint256) (runs: 312, μ: 120352, ~: 103536) -ERC1155Test:testMintToRevertingERC155RecipientReverts(uint256) (runs: 312, μ: 298241, ~: 283996) -ERC1155Test:testMintToWrongReturnDataERC155RecipientReverts(uint256) (runs: 312, μ: 260921, ~: 238671) -ERC1155Test:testMintToZeroReverts(uint256) (runs: 312, μ: 55524, ~: 33409) +ERC1155Test:testApproveAll(address,bool) (runs: 313, μ: 49202, ~: 58445) +ERC1155Test:testAuthorizedEquivalence(address,address,bool) (runs: 313, μ: 715, ~: 715) +ERC1155Test:testBalanceOfBatchWithArrayMismatchReverts(uint256) (runs: 313, μ: 32090, ~: 34870) +ERC1155Test:testBatchBalanceOf(uint256) (runs: 313, μ: 153670, ~: 150698) +ERC1155Test:testBatchBurn(uint256) (runs: 313, μ: 193478, ~: 173511) +ERC1155Test:testBatchBurnInsufficientBalanceReverts(uint256) (runs: 313, μ: 200190, ~: 189382) +ERC1155Test:testBatchBurnWithArrayLengthMismatchReverts(uint256) (runs: 313, μ: 54657, ~: 54384) +ERC1155Test:testBatchMintToEOA(uint256) (runs: 313, μ: 150161, ~: 151165) +ERC1155Test:testBatchMintToERC1155Recipient(uint256) (runs: 313, μ: 1484287, ~: 769283) +ERC1155Test:testBatchMintToNonERC1155RecipientReverts(uint256) (runs: 313, μ: 194085, ~: 186151) +ERC1155Test:testBatchMintToRevertingERC1155RecipientReverts(uint256) (runs: 313, μ: 373138, ~: 366911) +ERC1155Test:testBatchMintToWrongReturnDataERC1155RecipientReverts(uint256) (runs: 313, μ: 322267, ~: 289498) +ERC1155Test:testBatchMintToZeroReverts(uint256) (runs: 313, μ: 97531, ~: 90604) +ERC1155Test:testBatchMintWithArrayMismatchReverts(uint256) (runs: 313, μ: 42662, ~: 35656) +ERC1155Test:testBurn(uint256) (runs: 313, μ: 115440, ~: 103939) +ERC1155Test:testBurnInsufficientBalanceReverts(uint256) (runs: 313, μ: 117381, ~: 106270) +ERC1155Test:testDirectSetApprovalForAll(address,address,bool) (runs: 313, μ: 25227, ~: 15691) +ERC1155Test:testMintToEOA(uint256) (runs: 313, μ: 90319, ~: 81840) +ERC1155Test:testMintToERC1155Recipient(uint256) (runs: 313, μ: 1175610, ~: 663194) +ERC1155Test:testMintToNonERC155RecipientReverts(uint256) (runs: 313, μ: 120334, ~: 103537) +ERC1155Test:testMintToRevertingERC155RecipientReverts(uint256) (runs: 313, μ: 298230, ~: 283999) +ERC1155Test:testMintToWrongReturnDataERC155RecipientReverts(uint256) (runs: 313, μ: 260849, ~: 238671) +ERC1155Test:testMintToZeroReverts(uint256) (runs: 313, μ: 55454, ~: 33409) ERC1155Test:testSafeBatchTransfer() (gas: 8288837) -ERC1155Test:testSafeBatchTransferFromToEOA(uint256) (runs: 312, μ: 255834, ~: 261975) -ERC1155Test:testSafeBatchTransferFromToERC1155Recipient(uint256) (runs: 312, μ: 2699914, ~: 981124) -ERC1155Test:testSafeBatchTransferFromToNonERC1155RecipientReverts(uint256) (runs: 312, μ: 264611, ~: 268276) -ERC1155Test:testSafeBatchTransferFromToRevertingERC1155RecipientReverts(uint256) (runs: 312, μ: 457705, ~: 449706) -ERC1155Test:testSafeBatchTransferFromToWrongReturnDataERC1155RecipientReverts(uint256) (runs: 312, μ: 413590, ~: 405742) -ERC1155Test:testSafeBatchTransferFromToZeroReverts(uint256) (runs: 312, μ: 179528, ~: 173471) -ERC1155Test:testSafeBatchTransferFromWithArrayLengthMismatchReverts(uint256) (runs: 312, μ: 68271, ~: 67084) -ERC1155Test:testSafeBatchTransferInsufficientBalanceReverts(uint256) (runs: 312, μ: 211165, ~: 193483) -ERC1155Test:testSafeTransferFromInsufficientBalanceReverts(uint256) (runs: 312, μ: 128428, ~: 108513) -ERC1155Test:testSafeTransferFromSelf(uint256) (runs: 312, μ: 142691, ~: 117652) -ERC1155Test:testSafeTransferFromSelfInsufficientBalanceReverts(uint256) (runs: 312, μ: 115281, ~: 81367) -ERC1155Test:testSafeTransferFromToEOA(uint256) (runs: 312, μ: 149528, ~: 130099) -ERC1155Test:testSafeTransferFromToERC1155Recipient(uint256) (runs: 312, μ: 1676978, ~: 741101) -ERC1155Test:testSafeTransferFromToNonERC155RecipientReverts(uint256) (runs: 312, μ: 175640, ~: 151127) -ERC1155Test:testSafeTransferFromToRevertingERC1155RecipientReverts(uint256) (runs: 312, μ: 357881, ~: 331989) -ERC1155Test:testSafeTransferFromToWrongReturnDataERC1155RecipientReverts(uint256) (runs: 312, μ: 320941, ~: 287375) -ERC1155Test:testSafeTransferFromToZeroReverts(uint256) (runs: 312, μ: 106160, ~: 80942) +ERC1155Test:testSafeBatchTransferFromToEOA(uint256) (runs: 313, μ: 256441, ~: 261975) +ERC1155Test:testSafeBatchTransferFromToERC1155Recipient(uint256) (runs: 313, μ: 2694450, ~: 984270) +ERC1155Test:testSafeBatchTransferFromToNonERC1155RecipientReverts(uint256) (runs: 313, μ: 264199, ~: 268271) +ERC1155Test:testSafeBatchTransferFromToRevertingERC1155RecipientReverts(uint256) (runs: 313, μ: 457913, ~: 450007) +ERC1155Test:testSafeBatchTransferFromToWrongReturnDataERC1155RecipientReverts(uint256) (runs: 313, μ: 413793, ~: 405747) +ERC1155Test:testSafeBatchTransferFromToZeroReverts(uint256) (runs: 313, μ: 179191, ~: 173401) +ERC1155Test:testSafeBatchTransferFromWithArrayLengthMismatchReverts(uint256) (runs: 313, μ: 68129, ~: 67076) +ERC1155Test:testSafeBatchTransferInsufficientBalanceReverts(uint256) (runs: 313, μ: 210893, ~: 192766) +ERC1155Test:testSafeTransferFromInsufficientBalanceReverts(uint256) (runs: 313, μ: 128370, ~: 108592) +ERC1155Test:testSafeTransferFromSelf(uint256) (runs: 313, μ: 142602, ~: 117592) +ERC1155Test:testSafeTransferFromSelfInsufficientBalanceReverts(uint256) (runs: 313, μ: 115136, ~: 81359) +ERC1155Test:testSafeTransferFromToEOA(uint256) (runs: 313, μ: 149477, ~: 130409) +ERC1155Test:testSafeTransferFromToERC1155Recipient(uint256) (runs: 313, μ: 1674111, ~: 741169) +ERC1155Test:testSafeTransferFromToNonERC155RecipientReverts(uint256) (runs: 313, μ: 175544, ~: 151075) +ERC1155Test:testSafeTransferFromToRevertingERC1155RecipientReverts(uint256) (runs: 313, μ: 357818, ~: 331992) +ERC1155Test:testSafeTransferFromToWrongReturnDataERC1155RecipientReverts(uint256) (runs: 313, μ: 320846, ~: 287454) +ERC1155Test:testSafeTransferFromToZeroReverts(uint256) (runs: 313, μ: 106162, ~: 80943) ERC1155Test:test__codesize() (gas: 42627) ERC1271Test:testBasefeeBytecodeContract() (gas: 45430) ERC1271Test:testIsValidSignature() (gas: 2374582) -ERC1271Test:testIsValidSignature(uint256) (runs: 312, μ: 238178, ~: 209750) +ERC1271Test:testIsValidSignature(uint256) (runs: 313, μ: 238133, ~: 209786) ERC1271Test:testSupportsNestedTypedDataSign() (gas: 165049) ERC1271Test:test__codesize() (gas: 30965) ERC1967FactoryTest:testChangeAdmin() (gas: 265913) ERC1967FactoryTest:testChangeAdminUnauthorized() (gas: 256913) ERC1967FactoryTest:testDeploy() (gas: 256955) -ERC1967FactoryTest:testDeployAndCall(uint256) (runs: 312, μ: 340039, ~: 340693) +ERC1967FactoryTest:testDeployAndCall(uint256) (runs: 313, μ: 340040, ~: 340693) ERC1967FactoryTest:testDeployAndCallWithRevert() (gas: 211455) -ERC1967FactoryTest:testDeployBrutalized(uint256) (runs: 312, μ: 99369, ~: 43570) -ERC1967FactoryTest:testDeployDeterministicAndCall(uint256) (runs: 312, μ: 318205, ~: 349635) +ERC1967FactoryTest:testDeployBrutalized(uint256) (runs: 313, μ: 99191, ~: 43570) +ERC1967FactoryTest:testDeployDeterministicAndCall(uint256) (runs: 313, μ: 318305, ~: 349635) ERC1967FactoryTest:testFactoryDeployment() (gas: 494423) ERC1967FactoryTest:testProxyFails() (gas: 258252) ERC1967FactoryTest:testProxySucceeds() (gas: 255277) @@ -215,45 +215,45 @@ ERC1967FactoryTest:test__codesize() (gas: 32279) ERC20Invariants:invariantBalanceSum() (runs: 10, calls: 150, reverts: 84) ERC20Invariants:test__codesize() (gas: 7532) ERC20Test:testApprove() (gas: 35730) -ERC20Test:testApprove(address,uint256) (runs: 312, μ: 31053, ~: 31181) +ERC20Test:testApprove(address,uint256) (runs: 313, μ: 31053, ~: 31181) ERC20Test:testBurn() (gas: 62048) -ERC20Test:testBurn(address,uint256,uint256) (runs: 312, μ: 62034, ~: 62663) -ERC20Test:testBurnInsufficientBalanceReverts(address,uint256,uint256) (runs: 312, μ: 56212, ~: 56578) -ERC20Test:testDirectSpendAllowance(uint256) (runs: 312, μ: 61339, ~: 61140) -ERC20Test:testDirectTransfer(uint256) (runs: 312, μ: 99235, ~: 111899) +ERC20Test:testBurn(address,uint256,uint256) (runs: 313, μ: 62036, ~: 62663) +ERC20Test:testBurnInsufficientBalanceReverts(address,uint256,uint256) (runs: 313, μ: 56213, ~: 56578) +ERC20Test:testDirectSpendAllowance(uint256) (runs: 313, μ: 61337, ~: 61137) +ERC20Test:testDirectTransfer(uint256) (runs: 313, μ: 99276, ~: 111899) ERC20Test:testInfiniteApproveTransferFrom() (gas: 90288) ERC20Test:testMetadata() (gas: 16516) ERC20Test:testMint() (gas: 58700) -ERC20Test:testMint(address,uint256) (runs: 312, μ: 58687, ~: 58943) +ERC20Test:testMint(address,uint256) (runs: 313, μ: 58688, ~: 58943) ERC20Test:testMintOverMaxUintReverts() (gas: 55969) ERC20Test:testPermit() (gas: 89282) -ERC20Test:testPermit(uint256) (runs: 312, μ: 89254, ~: 89373) -ERC20Test:testPermitBadDeadlineReverts(uint256) (runs: 312, μ: 41139, ~: 41139) -ERC20Test:testPermitBadNonceReverts(uint256) (runs: 312, μ: 41557, ~: 41535) -ERC20Test:testPermitPastDeadlineReverts(uint256) (runs: 312, μ: 35665, ~: 35665) -ERC20Test:testPermitReplayReverts(uint256) (runs: 312, μ: 92082, ~: 92084) +ERC20Test:testPermit(uint256) (runs: 313, μ: 89255, ~: 89373) +ERC20Test:testPermitBadDeadlineReverts(uint256) (runs: 313, μ: 41139, ~: 41139) +ERC20Test:testPermitBadNonceReverts(uint256) (runs: 313, μ: 41557, ~: 41533) +ERC20Test:testPermitPastDeadlineReverts(uint256) (runs: 313, μ: 35665, ~: 35665) +ERC20Test:testPermitReplayReverts(uint256) (runs: 313, μ: 92082, ~: 92084) ERC20Test:testTransfer() (gas: 65514) -ERC20Test:testTransfer(address,uint256) (runs: 312, μ: 65474, ~: 65730) +ERC20Test:testTransfer(address,uint256) (runs: 313, μ: 65475, ~: 65730) ERC20Test:testTransferFrom() (gas: 85869) -ERC20Test:testTransferFrom(address,address,address,uint256,uint256) (runs: 312, μ: 92644, ~: 95053) +ERC20Test:testTransferFrom(address,address,address,uint256,uint256) (runs: 313, μ: 92653, ~: 95053) ERC20Test:testTransferFromInsufficientAllowanceReverts() (gas: 81760) -ERC20Test:testTransferFromInsufficientAllowanceReverts(address,uint256,uint256) (runs: 312, μ: 82100, ~: 82275) +ERC20Test:testTransferFromInsufficientAllowanceReverts(address,uint256,uint256) (runs: 313, μ: 82101, ~: 82275) ERC20Test:testTransferFromInsufficientBalanceReverts() (gas: 62108) -ERC20Test:testTransferFromInsufficientBalanceReverts(address,uint256,uint256) (runs: 312, μ: 62728, ~: 62710) +ERC20Test:testTransferFromInsufficientBalanceReverts(address,uint256,uint256) (runs: 313, μ: 62727, ~: 62710) ERC20Test:testTransferInsufficientBalanceReverts() (gas: 56113) -ERC20Test:testTransferInsufficientBalanceReverts(address,uint256,uint256) (runs: 312, μ: 56271, ~: 56637) +ERC20Test:testTransferInsufficientBalanceReverts(address,uint256,uint256) (runs: 313, μ: 56272, ~: 56637) ERC20Test:test__codesize() (gas: 22868) -ERC2981Test:testRoyaltyOverflowCheckDifferential(uint256,uint256) (runs: 312, μ: 479, ~: 480) -ERC2981Test:testSetAndGetRoyaltyInfo(uint256) (runs: 312, μ: 106956, ~: 104400) +ERC2981Test:testRoyaltyOverflowCheckDifferential(uint256,uint256) (runs: 313, μ: 479, ~: 480) +ERC2981Test:testSetAndGetRoyaltyInfo(uint256) (runs: 313, μ: 106948, ~: 104398) ERC2981Test:test__codesize() (gas: 7247) ERC4337FactoryTest:testCreateAccountRepeatedDeployment() (gas: 149753) -ERC4337FactoryTest:testCreateAccountRepeatedDeployment(uint256) (runs: 312, μ: 171337, ~: 171295) -ERC4337FactoryTest:testDeployDeterministic(uint256) (runs: 312, μ: 130633, ~: 139611) +ERC4337FactoryTest:testCreateAccountRepeatedDeployment(uint256) (runs: 313, μ: 171336, ~: 171295) +ERC4337FactoryTest:testDeployDeterministic(uint256) (runs: 313, μ: 130661, ~: 139611) ERC4337FactoryTest:test__codesize() (gas: 13049) ERC4337Test:testCdFallback() (gas: 438041) ERC4337Test:testCdFallback2() (gas: 1135303) ERC4337Test:testDelegateExecute() (gas: 366407) -ERC4337Test:testDelegateExecute(uint256) (runs: 312, μ: 356290, ~: 345250) +ERC4337Test:testDelegateExecute(uint256) (runs: 313, μ: 356254, ~: 345250) ERC4337Test:testDelegateExecuteRevertsIfOwnerSlotValueChanged() (gas: 320067) ERC4337Test:testDepositFunctions() (gas: 497021) ERC4337Test:testDirectStorage() (gas: 70503) @@ -261,10 +261,10 @@ ERC4337Test:testDisableInitializerForImplementation() (gas: 1335854) ERC4337Test:testETHReceived() (gas: 16584) ERC4337Test:testExecute() (gas: 383460) ERC4337Test:testExecuteBatch() (gas: 694187) -ERC4337Test:testExecuteBatch(uint256) (runs: 312, μ: 554345, ~: 670564) +ERC4337Test:testExecuteBatch(uint256) (runs: 313, μ: 552767, ~: 670564) ERC4337Test:testInitializer() (gas: 285469) ERC4337Test:testIsValidSignature() (gas: 120389) -ERC4337Test:testIsValidSignaturePersonalSign(bytes32) (runs: 312, μ: 103666, ~: 103792) +ERC4337Test:testIsValidSignaturePersonalSign(bytes32) (runs: 313, μ: 103667, ~: 103792) ERC4337Test:testIsValidSignatureViaRPC() (gas: 96881547) ERC4337Test:testIsValidSignatureWrapped() (gas: 446290) ERC4337Test:testOnERC1155BatchReceived() (gas: 1567013) @@ -275,15 +275,15 @@ ERC4337Test:testValidateUserOp() (gas: 484606) ERC4337Test:test__codesize() (gas: 57576) ERC4626Test:testDepositWithNoApprovalReverts() (gas: 16569) ERC4626Test:testDepositWithNotEnoughApprovalReverts() (gas: 90179) -ERC4626Test:testDifferentialFullMulDiv(uint256,uint256,uint256) (runs: 312, μ: 3319, ~: 3107) +ERC4626Test:testDifferentialFullMulDiv(uint256,uint256,uint256) (runs: 313, μ: 3318, ~: 3107) 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: 312, μ: 201955, ~: 201960) -ERC4626Test:testSingleMintRedeem(uint128) (runs: 312, μ: 200921, ~: 200926) +ERC4626Test:testSingleDepositWithdraw(uint128) (runs: 313, μ: 201955, ~: 201960) +ERC4626Test:testSingleMintRedeem(uint128) (runs: 313, μ: 200921, ~: 200926) ERC4626Test:testTryGetAssetDecimals() (gas: 31508026) ERC4626Test:testUseVirtualShares() (gas: 2428448) ERC4626Test:testVaultInteractionsForSomeoneElse() (gas: 296637) @@ -294,292 +294,292 @@ ERC4626Test:testWithdrawZero() (gas: 51874) ERC4626Test:test__codesize() (gas: 37159) ERC6551Test:testBaseFeeMini() (gas: 39514) ERC6551Test:testCdFallback() (gas: 895410) -ERC6551Test:testDeployERC6551(uint256) (runs: 312, μ: 169798, ~: 168368) +ERC6551Test:testDeployERC6551(uint256) (runs: 313, μ: 169794, ~: 168368) ERC6551Test:testDeployERC6551Proxy() (gas: 80395) ERC6551Test:testExecute() (gas: 507128) ERC6551Test:testExecuteBatch() (gas: 817215) -ERC6551Test:testExecuteBatch(uint256) (runs: 312, μ: 659476, ~: 768687) +ERC6551Test:testExecuteBatch(uint256) (runs: 313, μ: 658911, ~: 768680) ERC6551Test:testInitializeERC6551ProxyImplementation() (gas: 189772) -ERC6551Test:testIsValidSigner(address) (runs: 312, μ: 167134, ~: 167120) +ERC6551Test:testIsValidSigner(address) (runs: 313, μ: 167134, ~: 167120) ERC6551Test:testOnERC1155BatchReceived() (gas: 1702178) ERC6551Test:testOnERC1155Received() (gas: 1699450) ERC6551Test:testOnERC721Received() (gas: 1738043) ERC6551Test:testOnERC721ReceivedCycles() (gas: 2910842) -ERC6551Test:testOnERC721ReceivedCyclesWithDifferentChainIds(uint256) (runs: 312, μ: 449730, ~: 454716) -ERC6551Test:testOwnerWorksWithChainIdChange(uint256,uint256) (runs: 312, μ: 1386479, ~: 1386487) +ERC6551Test:testOnERC721ReceivedCyclesWithDifferentChainIds(uint256) (runs: 313, μ: 449746, ~: 454718) +ERC6551Test:testOwnerWorksWithChainIdChange(uint256,uint256) (runs: 313, μ: 1386479, ~: 1386487) ERC6551Test:testSupportsInterface() (gas: 168794) -ERC6551Test:testUpdateState(uint256) (runs: 312, μ: 234528, ~: 234457) +ERC6551Test:testUpdateState(uint256) (runs: 313, μ: 234531, ~: 234457) ERC6551Test:testUpgrade() (gas: 248210) ERC6551Test:test__codesize() (gas: 52683) ERC6909Test:testApprove() (gas: 36872) -ERC6909Test:testApprove(address,uint256,uint256) (runs: 312, μ: 37386, ~: 37514) +ERC6909Test:testApprove(address,uint256,uint256) (runs: 313, μ: 37386, ~: 37514) ERC6909Test:testBurn() (gas: 40870) -ERC6909Test:testBurn(address,uint256,uint256,uint256) (runs: 312, μ: 40693, ~: 41381) -ERC6909Test:testBurnInsufficientBalanceReverts(address,uint256,uint256,uint256) (runs: 312, μ: 35046, ~: 35166) +ERC6909Test:testBurn(address,uint256,uint256,uint256) (runs: 313, μ: 40696, ~: 41381) +ERC6909Test:testBurnInsufficientBalanceReverts(address,uint256,uint256,uint256) (runs: 313, μ: 35046, ~: 35166) ERC6909Test:testDecimals() (gas: 5676) ERC6909Test:testDirectApprove() (gas: 36737) -ERC6909Test:testDirectFunctions(uint256) (runs: 312, μ: 199924, ~: 200649) +ERC6909Test:testDirectFunctions(uint256) (runs: 313, μ: 199928, ~: 200653) ERC6909Test:testDirectSetOperator() (gas: 35937) ERC6909Test:testDirectTransfer() (gas: 66221) ERC6909Test:testInfiniteApproveTransferFrom() (gas: 78590) -ERC6909Test:testMetadata(uint256) (runs: 312, μ: 8257, ~: 8257) +ERC6909Test:testMetadata(uint256) (runs: 313, μ: 8257, ~: 8257) ERC6909Test:testMint() (gas: 37035) -ERC6909Test:testMint(address,uint256,uint256) (runs: 312, μ: 37143, ~: 37271) +ERC6909Test:testMint(address,uint256,uint256) (runs: 313, μ: 37143, ~: 37271) ERC6909Test:testMintOverMaxUintReverts() (gas: 34604) -ERC6909Test:testMintOverMaxUintReverts(address,uint256,uint256,uint256) (runs: 312, μ: 35514, ~: 35528) +ERC6909Test:testMintOverMaxUintReverts(address,uint256,uint256,uint256) (runs: 313, μ: 35514, ~: 35528) ERC6909Test:testOperatorTransferFrom() (gas: 74112) ERC6909Test:testSetOperator() (gas: 37139) -ERC6909Test:testSetOperator(address,address,bool) (runs: 312, μ: 26270, ~: 16767) +ERC6909Test:testSetOperator(address,address,bool) (runs: 313, μ: 26303, ~: 16767) ERC6909Test:testTokenURI() (gas: 32671) ERC6909Test:testTransfer() (gas: 48262) -ERC6909Test:testTransfer(address,uint256,uint256) (runs: 312, μ: 47258, ~: 47390) +ERC6909Test:testTransfer(address,uint256,uint256) (runs: 313, μ: 47259, ~: 47390) ERC6909Test:testTransferFrom() (gas: 74676) -ERC6909Test:testTransferFrom(address,address,address,uint256,uint256,uint256) (runs: 312, μ: 79961, ~: 81173) -ERC6909Test:testTransferFromCallerIsNotOperator(address,uint256,uint256) (runs: 312, μ: 39606, ~: 39606) -ERC6909Test:testTransferFromInsufficientAllowanceReverts(address,uint256,uint256,uint256) (runs: 312, μ: 67204, ~: 67771) +ERC6909Test:testTransferFrom(address,address,address,uint256,uint256,uint256) (runs: 313, μ: 79965, ~: 81173) +ERC6909Test:testTransferFromCallerIsNotOperator(address,uint256,uint256) (runs: 313, μ: 39606, ~: 39606) +ERC6909Test:testTransferFromInsufficientAllowanceReverts(address,uint256,uint256,uint256) (runs: 313, μ: 67205, ~: 67771) ERC6909Test:testTransferFromInsufficientBalanceReverts() (gas: 49861) -ERC6909Test:testTransferFromInsufficientBalanceReverts(address,uint256,uint256,uint256) (runs: 312, μ: 50477, ~: 50092) +ERC6909Test:testTransferFromInsufficientBalanceReverts(address,uint256,uint256,uint256) (runs: 313, μ: 50476, ~: 50092) ERC6909Test:testTransferFromInsufficientPermission() (gas: 67246) ERC6909Test:testTransferFromOverMaxUintReverts() (gas: 90493) -ERC6909Test:testTransferFromOverMaxUintReverts(address,uint256,uint256,uint256) (runs: 312, μ: 113398, ~: 113592) +ERC6909Test:testTransferFromOverMaxUintReverts(address,uint256,uint256,uint256) (runs: 313, μ: 113399, ~: 113592) ERC6909Test:testTransferInsufficientBalanceReverts() (gas: 34728) -ERC6909Test:testTransferInsufficientBalanceReverts(address,uint256,uint256,uint256) (runs: 312, μ: 34894, ~: 35270) +ERC6909Test:testTransferInsufficientBalanceReverts(address,uint256,uint256,uint256) (runs: 313, μ: 34895, ~: 35270) ERC6909Test:testTransferOverMaxUintReverts() (gas: 63748) -ERC6909Test:testTransferOverMaxUintReverts(address,uint256,uint256,uint256) (runs: 312, μ: 64303, ~: 64292) +ERC6909Test:testTransferOverMaxUintReverts(address,uint256,uint256,uint256) (runs: 313, μ: 64304, ~: 64292) ERC6909Test:test__codesize() (gas: 25915) ERC721HooksTest:testERC721Hooks() (gas: 3183310) ERC721HooksTest:test__codesize() (gas: 11072) -ERC721Test:testApprove(uint256) (runs: 312, μ: 107756, ~: 107561) -ERC721Test:testApproveAll(uint256) (runs: 312, μ: 50139, ~: 59583) -ERC721Test:testApproveBurn(uint256) (runs: 312, μ: 86292, ~: 86143) -ERC721Test:testApproveNonExistentReverts(uint256,address) (runs: 312, μ: 33463, ~: 33471) -ERC721Test:testApproveUnauthorizedReverts(uint256) (runs: 312, μ: 83071, ~: 84124) -ERC721Test:testAuthorizedEquivalence(address,bool,bool) (runs: 312, μ: 684, ~: 678) -ERC721Test:testAux(uint256) (runs: 312, μ: 192589, ~: 191199) -ERC721Test:testBurn(uint256) (runs: 312, μ: 81588, ~: 68910) -ERC721Test:testBurnNonExistentReverts(uint256) (runs: 312, μ: 10805, ~: 10805) +ERC721Test:testApprove(uint256) (runs: 313, μ: 107757, ~: 107561) +ERC721Test:testApproveAll(uint256) (runs: 313, μ: 50170, ~: 59583) +ERC721Test:testApproveBurn(uint256) (runs: 313, μ: 86292, ~: 86143) +ERC721Test:testApproveNonExistentReverts(uint256,address) (runs: 313, μ: 33463, ~: 33471) +ERC721Test:testApproveUnauthorizedReverts(uint256) (runs: 313, μ: 83075, ~: 84124) +ERC721Test:testAuthorizedEquivalence(address,bool,bool) (runs: 313, μ: 684, ~: 678) +ERC721Test:testAux(uint256) (runs: 313, μ: 192584, ~: 191199) +ERC721Test:testBurn(uint256) (runs: 313, μ: 81628, ~: 68912) +ERC721Test:testBurnNonExistentReverts(uint256) (runs: 313, μ: 10805, ~: 10805) ERC721Test:testCannotExceedMaxBalance() (gas: 169848) -ERC721Test:testDoubleBurnReverts(uint256) (runs: 312, μ: 63402, ~: 63412) -ERC721Test:testDoubleMintReverts(uint256) (runs: 312, μ: 79001, ~: 79014) -ERC721Test:testEverything(uint256) (runs: 312, μ: 289664, ~: 300942) -ERC721Test:testExtraData(uint256) (runs: 312, μ: 98799, ~: 98711) -ERC721Test:testExtraData2(uint256,uint256) (runs: 312, μ: 53889, ~: 53889) -ERC721Test:testIsApprovedOrOwner(uint256) (runs: 312, μ: 135436, ~: 135425) -ERC721Test:testMint(uint256) (runs: 312, μ: 82599, ~: 82558) -ERC721Test:testMintAndSetExtraDataUnchecked(uint256) (runs: 312, μ: 84231, ~: 84319) -ERC721Test:testMintAndSetExtraDataUncheckedWithOverwrite(uint256,uint96) (runs: 312, μ: 83683, ~: 83678) -ERC721Test:testMintToZeroReverts(uint256) (runs: 312, μ: 39510, ~: 39510) -ERC721Test:testOwnerOfNonExistent(uint256) (runs: 312, μ: 33175, ~: 33185) -ERC721Test:testSafeMintToEOA(uint256) (runs: 312, μ: 83032, ~: 83117) -ERC721Test:testSafeMintToERC721Recipient(uint256) (runs: 312, μ: 409373, ~: 409728) -ERC721Test:testSafeMintToERC721RecipientWithData(uint256,bytes) (runs: 312, μ: 459434, ~: 453669) -ERC721Test:testSafeMintToERC721RecipientWithWrongReturnData(uint256) (runs: 312, μ: 170407, ~: 170407) -ERC721Test:testSafeMintToERC721RecipientWithWrongReturnDataWithData(uint256,bytes) (runs: 312, μ: 171612, ~: 171569) -ERC721Test:testSafeMintToNonERC721RecipientReverts(uint256) (runs: 312, μ: 100507, ~: 100507) -ERC721Test:testSafeMintToNonERC721RecipientWithDataReverts(uint256,bytes) (runs: 312, μ: 101744, ~: 101701) -ERC721Test:testSafeMintToRevertingERC721RecipientReverts(uint256) (runs: 312, μ: 203343, ~: 203343) -ERC721Test:testSafeMintToRevertingERC721RecipientWithDataReverts(uint256,bytes) (runs: 312, μ: 204569, ~: 204526) -ERC721Test:testSafeTransferFromToEOA(uint256) (runs: 312, μ: 121529, ~: 121523) -ERC721Test:testSafeTransferFromToERC721Recipient(uint256) (runs: 312, μ: 470748, ~: 471194) -ERC721Test:testSafeTransferFromToERC721RecipientWithData(uint256,bytes) (runs: 312, μ: 520832, ~: 515009) -ERC721Test:testSafeTransferFromToERC721RecipientWithWrongReturnDataReverts(uint256) (runs: 312, μ: 201386, ~: 201420) -ERC721Test:testSafeTransferFromToERC721RecipientWithWrongReturnDataWithDataReverts(uint256,bytes) (runs: 312, μ: 202697, ~: 202710) -ERC721Test:testSafeTransferFromToNonERC721RecipientReverts(uint256) (runs: 312, μ: 131493, ~: 131523) -ERC721Test:testSafeTransferFromToNonERC721RecipientWithDataReverts(uint256,bytes) (runs: 312, μ: 132789, ~: 132802) -ERC721Test:testSafeTransferFromToRevertingERC721RecipientReverts(uint256) (runs: 312, μ: 234343, ~: 234311) -ERC721Test:testSafeTransferFromToRevertingERC721RecipientWithDataReverts(uint256,bytes) (runs: 312, μ: 235581, ~: 235600) -ERC721Test:testSafetyOfCustomStorage(uint256,uint256) (runs: 312, μ: 713, ~: 713) +ERC721Test:testDoubleBurnReverts(uint256) (runs: 313, μ: 63402, ~: 63412) +ERC721Test:testDoubleMintReverts(uint256) (runs: 313, μ: 79001, ~: 79014) +ERC721Test:testEverything(uint256) (runs: 313, μ: 289953, ~: 300968) +ERC721Test:testExtraData(uint256) (runs: 313, μ: 98804, ~: 98731) +ERC721Test:testExtraData2(uint256,uint256) (runs: 313, μ: 53889, ~: 53889) +ERC721Test:testIsApprovedOrOwner(uint256) (runs: 313, μ: 135438, ~: 135427) +ERC721Test:testMint(uint256) (runs: 313, μ: 82599, ~: 82558) +ERC721Test:testMintAndSetExtraDataUnchecked(uint256) (runs: 313, μ: 84231, ~: 84319) +ERC721Test:testMintAndSetExtraDataUncheckedWithOverwrite(uint256,uint96) (runs: 313, μ: 83683, ~: 83678) +ERC721Test:testMintToZeroReverts(uint256) (runs: 313, μ: 39510, ~: 39510) +ERC721Test:testOwnerOfNonExistent(uint256) (runs: 313, μ: 33175, ~: 33185) +ERC721Test:testSafeMintToEOA(uint256) (runs: 313, μ: 83032, ~: 83117) +ERC721Test:testSafeMintToERC721Recipient(uint256) (runs: 313, μ: 409375, ~: 409728) +ERC721Test:testSafeMintToERC721RecipientWithData(uint256,bytes) (runs: 313, μ: 459415, ~: 453669) +ERC721Test:testSafeMintToERC721RecipientWithWrongReturnData(uint256) (runs: 313, μ: 170407, ~: 170407) +ERC721Test:testSafeMintToERC721RecipientWithWrongReturnDataWithData(uint256,bytes) (runs: 313, μ: 171612, ~: 171569) +ERC721Test:testSafeMintToNonERC721RecipientReverts(uint256) (runs: 313, μ: 100507, ~: 100507) +ERC721Test:testSafeMintToNonERC721RecipientWithDataReverts(uint256,bytes) (runs: 313, μ: 101744, ~: 101701) +ERC721Test:testSafeMintToRevertingERC721RecipientReverts(uint256) (runs: 313, μ: 203343, ~: 203343) +ERC721Test:testSafeMintToRevertingERC721RecipientWithDataReverts(uint256,bytes) (runs: 313, μ: 204569, ~: 204526) +ERC721Test:testSafeTransferFromToEOA(uint256) (runs: 313, μ: 121529, ~: 121523) +ERC721Test:testSafeTransferFromToERC721Recipient(uint256) (runs: 313, μ: 470749, ~: 471194) +ERC721Test:testSafeTransferFromToERC721RecipientWithData(uint256,bytes) (runs: 313, μ: 520813, ~: 514991) +ERC721Test:testSafeTransferFromToERC721RecipientWithWrongReturnDataReverts(uint256) (runs: 313, μ: 201387, ~: 201420) +ERC721Test:testSafeTransferFromToERC721RecipientWithWrongReturnDataWithDataReverts(uint256,bytes) (runs: 313, μ: 202697, ~: 202710) +ERC721Test:testSafeTransferFromToNonERC721RecipientReverts(uint256) (runs: 313, μ: 131493, ~: 131523) +ERC721Test:testSafeTransferFromToNonERC721RecipientWithDataReverts(uint256,bytes) (runs: 313, μ: 132789, ~: 132802) +ERC721Test:testSafeTransferFromToRevertingERC721RecipientReverts(uint256) (runs: 313, μ: 234343, ~: 234311) +ERC721Test:testSafeTransferFromToRevertingERC721RecipientWithDataReverts(uint256,bytes) (runs: 313, μ: 235581, ~: 235600) +ERC721Test:testSafetyOfCustomStorage(uint256,uint256) (runs: 313, μ: 713, ~: 713) ERC721Test:testTransferFrom() (gas: 85739) -ERC721Test:testTransferFrom(uint256) (runs: 312, μ: 113382, ~: 112187) -ERC721Test:testTransferFromApproveAll(uint256) (runs: 312, μ: 118760, ~: 118733) -ERC721Test:testTransferFromNotExistentReverts(address,address,uint256) (runs: 312, μ: 34038, ~: 33940) -ERC721Test:testTransferFromNotOwner(uint256) (runs: 312, μ: 84547, ~: 84636) -ERC721Test:testTransferFromSelf(uint256) (runs: 312, μ: 92235, ~: 92237) -ERC721Test:testTransferFromToZeroReverts(uint256) (runs: 312, μ: 62888, ~: 62831) -ERC721Test:testTransferFromWrongFromReverts(address,uint256) (runs: 312, μ: 80277, ~: 80355) +ERC721Test:testTransferFrom(uint256) (runs: 313, μ: 113379, ~: 112188) +ERC721Test:testTransferFromApproveAll(uint256) (runs: 313, μ: 118760, ~: 118733) +ERC721Test:testTransferFromNotExistentReverts(address,address,uint256) (runs: 313, μ: 34038, ~: 33940) +ERC721Test:testTransferFromNotOwner(uint256) (runs: 313, μ: 84547, ~: 84636) +ERC721Test:testTransferFromSelf(uint256) (runs: 313, μ: 92235, ~: 92237) +ERC721Test:testTransferFromToZeroReverts(uint256) (runs: 313, μ: 62889, ~: 62831) +ERC721Test:testTransferFromWrongFromReverts(address,uint256) (runs: 313, μ: 80278, ~: 80355) ERC721Test:test__codesize() (gas: 43206) EfficientHashLibTest:testEfficientHash() (gas: 7544) -EfficientHashLibTest:testEfficientHash(uint256) (runs: 312, μ: 7615, ~: 7615) +EfficientHashLibTest:testEfficientHash(uint256) (runs: 313, μ: 7615, ~: 7615) EfficientHashLibTest:testEfficientHashFree() (gas: 372) -EfficientHashLibTest:testEfficientHashFree(uint8,bool,uint8) (runs: 312, μ: 972, ~: 908) +EfficientHashLibTest:testEfficientHashFree(uint8,bool,uint8) (runs: 313, μ: 972, ~: 908) 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: 312, μ: 47893, ~: 40272) +EnumerableSetLibTest:testEnumerableAddressSetRevertsOnSentinel(uint256) (runs: 313, μ: 47841, ~: 39039) EnumerableSetLibTest:testEnumerableBytes32SetBasic() (gas: 271282) EnumerableSetLibTest:testEnumerableBytes32SetBasic2() (gas: 178471) EnumerableSetLibTest:testEnumerableBytes32SetNoStorageCollision() (gas: 103477) -EnumerableSetLibTest:testEnumerableBytes32SetRevertsOnSentinel(uint256) (runs: 312, μ: 51789, ~: 49215) -EnumerableSetLibTest:testEnumerableSetFuzz(uint256) (runs: 312, μ: 593920, ~: 511282) +EnumerableSetLibTest:testEnumerableBytes32SetRevertsOnSentinel(uint256) (runs: 313, μ: 51731, ~: 49215) +EnumerableSetLibTest:testEnumerableSetFuzz(uint256) (runs: 313, μ: 592867, ~: 510694) EnumerableSetLibTest:test__codesize() (gas: 14243) FixedPointMathLibTest:testAbs() (gas: 702) -FixedPointMathLibTest:testAbs(int256) (runs: 312, μ: 489, ~: 457) +FixedPointMathLibTest:testAbs(int256) (runs: 313, μ: 488, ~: 457) FixedPointMathLibTest:testAbsEdgeCases() (gas: 469) FixedPointMathLibTest:testAvg() (gas: 443) FixedPointMathLibTest:testAvgEdgeCase() (gas: 470) FixedPointMathLibTest:testAvgSigned() (gas: 900) FixedPointMathLibTest:testCbrt() (gas: 10283) -FixedPointMathLibTest:testCbrt(uint256) (runs: 312, μ: 1522, ~: 1535) -FixedPointMathLibTest:testCbrtBack(uint256) (runs: 312, μ: 34682, ~: 43208) +FixedPointMathLibTest:testCbrt(uint256) (runs: 313, μ: 1522, ~: 1535) +FixedPointMathLibTest:testCbrtBack(uint256) (runs: 313, μ: 34606, ~: 42887) FixedPointMathLibTest:testCbrtWad() (gas: 12051) -FixedPointMathLibTest:testCbrtWad(uint256) (runs: 312, μ: 2149, ~: 1973) +FixedPointMathLibTest:testCbrtWad(uint256) (runs: 313, μ: 2148, ~: 1973) FixedPointMathLibTest:testCbrtWadConverged() (gas: 2664) -FixedPointMathLibTest:testCbrtWadConverged(uint256) (runs: 312, μ: 2184, ~: 2236) +FixedPointMathLibTest:testCbrtWadConverged(uint256) (runs: 313, μ: 2184, ~: 2236) FixedPointMathLibTest:testCbrtWadDebug() (gas: 7338) FixedPointMathLibTest:testCbrtWadMonotonicallyIncreasing() (gas: 4140) -FixedPointMathLibTest:testCbrtWadMonotonicallyIncreasing(uint256,uint256) (runs: 312, μ: 3084, ~: 2933) -FixedPointMathLibTest:testClamp(uint256,uint256,uint256) (runs: 312, μ: 569, ~: 568) -FixedPointMathLibTest:testClampSigned(int256,int256,int256) (runs: 312, μ: 548, ~: 547) +FixedPointMathLibTest:testCbrtWadMonotonicallyIncreasing(uint256,uint256) (runs: 313, μ: 3082, ~: 2933) +FixedPointMathLibTest:testClamp(uint256,uint256,uint256) (runs: 313, μ: 569, ~: 568) +FixedPointMathLibTest:testClampSigned(int256,int256,int256) (runs: 313, μ: 548, ~: 547) FixedPointMathLibTest:testDist() (gas: 678) -FixedPointMathLibTest:testDist(int256,int256) (runs: 312, μ: 541, ~: 537) +FixedPointMathLibTest:testDist(int256,int256) (runs: 313, μ: 541, ~: 537) FixedPointMathLibTest:testDistEdgeCases() (gas: 570) FixedPointMathLibTest:testDivWad() (gas: 747) -FixedPointMathLibTest:testDivWad(uint256,uint256) (runs: 312, μ: 7018, ~: 891) +FixedPointMathLibTest:testDivWad(uint256,uint256) (runs: 313, μ: 6998, ~: 891) FixedPointMathLibTest:testDivWadEdgeCases() (gas: 414) -FixedPointMathLibTest:testDivWadOverflowReverts(uint256,uint256) (runs: 312, μ: 22390, ~: 26501) +FixedPointMathLibTest:testDivWadOverflowReverts(uint256,uint256) (runs: 313, μ: 22403, ~: 26501) FixedPointMathLibTest:testDivWadUp() (gas: 3129) -FixedPointMathLibTest:testDivWadUp(uint256,uint256) (runs: 312, μ: 7230, ~: 1009) +FixedPointMathLibTest:testDivWadUp(uint256,uint256) (runs: 313, μ: 7210, ~: 1009) FixedPointMathLibTest:testDivWadUpEdgeCases() (gas: 439) -FixedPointMathLibTest:testDivWadUpOverflowReverts(uint256,uint256) (runs: 312, μ: 22392, ~: 26500) +FixedPointMathLibTest:testDivWadUpOverflowReverts(uint256,uint256) (runs: 313, μ: 22406, ~: 26500) FixedPointMathLibTest:testDivWadUpZeroDenominatorReverts() (gas: 3261) -FixedPointMathLibTest:testDivWadUpZeroDenominatorReverts(uint256) (runs: 312, μ: 3295, ~: 3295) +FixedPointMathLibTest:testDivWadUpZeroDenominatorReverts(uint256) (runs: 313, μ: 3295, ~: 3295) FixedPointMathLibTest:testDivWadZeroDenominatorReverts() (gas: 3218) -FixedPointMathLibTest:testDivWadZeroDenominatorReverts(uint256) (runs: 312, μ: 3337, ~: 3337) +FixedPointMathLibTest:testDivWadZeroDenominatorReverts(uint256) (runs: 313, μ: 3337, ~: 3337) FixedPointMathLibTest:testExpWad() (gas: 8047) FixedPointMathLibTest:testFactorial() (gas: 98491) FixedPointMathLibTest:testFactorialOriginal() (gas: 94187) FixedPointMathLibTest:testFullMulDiv() (gas: 1128) -FixedPointMathLibTest:testFullMulDiv(uint256,uint256,uint256) (runs: 312, μ: 1397, ~: 983) -FixedPointMathLibTest:testFullMulDivAlwaysRevertsIfDivisorIsZero(uint256,uint256) (runs: 312, μ: 3478, ~: 3478) +FixedPointMathLibTest:testFullMulDiv(uint256,uint256,uint256) (runs: 313, μ: 1396, ~: 983) +FixedPointMathLibTest:testFullMulDivAlwaysRevertsIfDivisorIsZero(uint256,uint256) (runs: 313, μ: 3478, ~: 3478) FixedPointMathLibTest:testFullMulDivUnchecked() (gas: 1635) -FixedPointMathLibTest:testFullMulDivUnchecked(uint256,uint256,uint256) (runs: 312, μ: 1668, ~: 1565) -FixedPointMathLibTest:testFullMulDivUp(uint256,uint256,uint256) (runs: 312, μ: 1750, ~: 1427) +FixedPointMathLibTest:testFullMulDivUnchecked(uint256,uint256,uint256) (runs: 313, μ: 1668, ~: 1565) +FixedPointMathLibTest:testFullMulDivUp(uint256,uint256,uint256) (runs: 313, μ: 1749, ~: 1427) FixedPointMathLibTest:testFullMulDivUpRevertsIfRoundedUpResultOverflowsCase1() (gas: 3694) FixedPointMathLibTest:testFullMulDivUpRevertsIfRoundedUpResultOverflowsCase2() (gas: 3727) FixedPointMathLibTest:testGcd() (gas: 4206) -FixedPointMathLibTest:testGcd(uint256,uint256) (runs: 312, μ: 6646, ~: 2822) -FixedPointMathLibTest:testIsEven(uint256) (runs: 312, μ: 519, ~: 519) +FixedPointMathLibTest:testGcd(uint256,uint256) (runs: 313, μ: 6633, ~: 2822) +FixedPointMathLibTest:testIsEven(uint256) (runs: 313, μ: 519, ~: 519) FixedPointMathLibTest:testLambertW0WadAccuracy() (gas: 7160) -FixedPointMathLibTest:testLambertW0WadAccuracy(uint184) (runs: 312, μ: 2442, ~: 431) +FixedPointMathLibTest:testLambertW0WadAccuracy(uint184) (runs: 313, μ: 2435, ~: 431) FixedPointMathLibTest:testLambertW0WadKnownValues() (gas: 1685570) FixedPointMathLibTest:testLambertW0WadMonoDebug() (gas: 770645) FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasing() (gas: 18416531) -FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasing(int256,int256) (runs: 312, μ: 7239, ~: 6978) +FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasing(int256,int256) (runs: 313, μ: 7231, ~: 6978) FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasing2() (gas: 4035368) -FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasingAround(int256) (runs: 312, μ: 29465, ~: 35428) -FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasingAround2(uint96) (runs: 312, μ: 50888, ~: 17640) +FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasingAround(int256) (runs: 313, μ: 29426, ~: 35428) +FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasingAround2(uint96) (runs: 313, μ: 50781, ~: 17640) FixedPointMathLibTest:testLambertW0WadRevertsForOutOfDomain() (gas: 16608) FixedPointMathLibTest:testLambertW0WadWithinBounds() (gas: 122061) -FixedPointMathLibTest:testLambertW0WadWithinBounds(int256) (runs: 312, μ: 3766, ~: 4984) +FixedPointMathLibTest:testLambertW0WadWithinBounds(int256) (runs: 313, μ: 3758, ~: 4984) FixedPointMathLibTest:testLerpInt() (gas: 6461) -FixedPointMathLibTest:testLerpInt(int256,int256,int256,int256,int256) (runs: 312, μ: 1655, ~: 1198) +FixedPointMathLibTest:testLerpInt(int256,int256,int256,int256,int256) (runs: 313, μ: 1654, ~: 1198) FixedPointMathLibTest:testLerpUint() (gas: 6442) -FixedPointMathLibTest:testLerpUint(uint256,uint256,uint256,uint256,uint256) (runs: 312, μ: 1095, ~: 797) +FixedPointMathLibTest:testLerpUint(uint256,uint256,uint256,uint256,uint256) (runs: 313, μ: 1094, ~: 797) FixedPointMathLibTest:testLnWad() (gas: 2054) FixedPointMathLibTest:testLnWadBig() (gas: 2087) FixedPointMathLibTest:testLnWadNegativeReverts() (gas: 3318) FixedPointMathLibTest:testLnWadOverflowReverts() (gas: 3316) FixedPointMathLibTest:testLnWadSmall() (gas: 2644) FixedPointMathLibTest:testLog10() (gas: 76168) -FixedPointMathLibTest:testLog10(uint256,uint256) (runs: 312, μ: 2161, ~: 2195) +FixedPointMathLibTest:testLog10(uint256,uint256) (runs: 313, μ: 2161, ~: 2195) FixedPointMathLibTest:testLog10Up() (gas: 4369) FixedPointMathLibTest:testLog2() (gas: 243209) FixedPointMathLibTest:testLog256() (gas: 22831) -FixedPointMathLibTest:testLog256(uint256,uint256) (runs: 312, μ: 2086, ~: 2152) +FixedPointMathLibTest:testLog256(uint256,uint256) (runs: 313, μ: 2086, ~: 2152) FixedPointMathLibTest:testLog256Up() (gas: 1293) -FixedPointMathLibTest:testLog2Differential(uint256) (runs: 312, μ: 889, ~: 886) +FixedPointMathLibTest:testLog2Differential(uint256) (runs: 313, μ: 889, ~: 886) FixedPointMathLibTest:testLog2Up() (gas: 297368) -FixedPointMathLibTest:testMax(uint256,uint256) (runs: 312, μ: 476, ~: 472) -FixedPointMathLibTest:testMaxCasted(uint32,uint32,uint256) (runs: 312, μ: 891, ~: 896) -FixedPointMathLibTest:testMaxSigned(int256,int256) (runs: 312, μ: 520, ~: 525) -FixedPointMathLibTest:testMin(uint256,uint256) (runs: 312, μ: 477, ~: 482) -FixedPointMathLibTest:testMinBrutalized(uint256,uint256) (runs: 312, μ: 872, ~: 863) -FixedPointMathLibTest:testMinSigned(int256,int256) (runs: 312, μ: 497, ~: 493) +FixedPointMathLibTest:testMax(uint256,uint256) (runs: 313, μ: 476, ~: 472) +FixedPointMathLibTest:testMaxCasted(uint32,uint32,uint256) (runs: 313, μ: 891, ~: 896) +FixedPointMathLibTest:testMaxSigned(int256,int256) (runs: 313, μ: 520, ~: 525) +FixedPointMathLibTest:testMin(uint256,uint256) (runs: 313, μ: 477, ~: 482) +FixedPointMathLibTest:testMinBrutalized(uint256,uint256) (runs: 313, μ: 872, ~: 863) +FixedPointMathLibTest:testMinSigned(int256,int256) (runs: 313, μ: 497, ~: 493) FixedPointMathLibTest:testMulDiv() (gas: 1890) -FixedPointMathLibTest:testMulDiv(uint256,uint256,uint256) (runs: 312, μ: 1666, ~: 858) +FixedPointMathLibTest:testMulDiv(uint256,uint256,uint256) (runs: 313, μ: 1664, ~: 858) FixedPointMathLibTest:testMulDivEdgeCases() (gas: 784) -FixedPointMathLibTest:testMulDivOverflowReverts(uint256,uint256,uint256) (runs: 312, μ: 20152, ~: 27078) +FixedPointMathLibTest:testMulDivOverflowReverts(uint256,uint256,uint256) (runs: 313, μ: 20174, ~: 27078) FixedPointMathLibTest:testMulDivUp() (gas: 2148) -FixedPointMathLibTest:testMulDivUp(uint256,uint256,uint256) (runs: 312, μ: 1834, ~: 1121) +FixedPointMathLibTest:testMulDivUp(uint256,uint256,uint256) (runs: 313, μ: 1832, ~: 1121) FixedPointMathLibTest:testMulDivUpEdgeCases() (gas: 817) -FixedPointMathLibTest:testMulDivUpOverflowReverts(uint256,uint256,uint256) (runs: 312, μ: 20143, ~: 27044) +FixedPointMathLibTest:testMulDivUpOverflowReverts(uint256,uint256,uint256) (runs: 313, μ: 20170, ~: 27044) FixedPointMathLibTest:testMulDivUpZeroDenominator() (gas: 3234) -FixedPointMathLibTest:testMulDivUpZeroDenominatorReverts(uint256,uint256) (runs: 312, μ: 3357, ~: 3357) +FixedPointMathLibTest:testMulDivUpZeroDenominatorReverts(uint256,uint256) (runs: 313, μ: 3357, ~: 3357) FixedPointMathLibTest:testMulDivZeroDenominatorReverts() (gas: 3256) -FixedPointMathLibTest:testMulDivZeroDenominatorReverts(uint256,uint256) (runs: 312, μ: 3380, ~: 3380) +FixedPointMathLibTest:testMulDivZeroDenominatorReverts(uint256,uint256) (runs: 313, μ: 3380, ~: 3380) FixedPointMathLibTest:testMulWad() (gas: 736) -FixedPointMathLibTest:testMulWad(uint256,uint256) (runs: 312, μ: 717, ~: 855) +FixedPointMathLibTest:testMulWad(uint256,uint256) (runs: 313, μ: 718, ~: 855) FixedPointMathLibTest:testMulWadEdgeCases() (gas: 714) -FixedPointMathLibTest:testMulWadOverflowReverts(uint256,uint256) (runs: 312, μ: 18691, ~: 26336) +FixedPointMathLibTest:testMulWadOverflowReverts(uint256,uint256) (runs: 313, μ: 18716, ~: 26336) FixedPointMathLibTest:testMulWadUp() (gas: 837) -FixedPointMathLibTest:testMulWadUp(uint256,uint256) (runs: 312, μ: 21354, ~: 1065) +FixedPointMathLibTest:testMulWadUp(uint256,uint256) (runs: 313, μ: 21289, ~: 1065) FixedPointMathLibTest:testMulWadUpEdgeCases() (gas: 815) -FixedPointMathLibTest:testMulWadUpOverflowReverts(uint256,uint256) (runs: 312, μ: 18719, ~: 26379) +FixedPointMathLibTest:testMulWadUpOverflowReverts(uint256,uint256) (runs: 313, μ: 18745, ~: 26379) FixedPointMathLibTest:testPackUnpackSci() (gas: 129327) -FixedPointMathLibTest:testPackUnpackSci(uint256) (runs: 312, μ: 30411, ~: 30420) +FixedPointMathLibTest:testPackUnpackSci(uint256) (runs: 313, μ: 30410, ~: 30420) FixedPointMathLibTest:testRPow() (gas: 3320) FixedPointMathLibTest:testRPowOverflowReverts() (gas: 4974) -FixedPointMathLibTest:testRawAdd(int256,int256) (runs: 312, μ: 462, ~: 462) -FixedPointMathLibTest:testRawAdd(uint256,uint256) (runs: 312, μ: 463, ~: 463) -FixedPointMathLibTest:testRawAddMod(uint256,uint256,uint256) (runs: 312, μ: 512, ~: 512) -FixedPointMathLibTest:testRawDiv(uint256,uint256) (runs: 312, μ: 443, ~: 443) -FixedPointMathLibTest:testRawMod(uint256,uint256) (runs: 312, μ: 464, ~: 464) -FixedPointMathLibTest:testRawMul(int256,int256) (runs: 312, μ: 412, ~: 412) -FixedPointMathLibTest:testRawMul(uint256,uint256) (runs: 312, μ: 485, ~: 485) -FixedPointMathLibTest:testRawMulMod(uint256,uint256,uint256) (runs: 312, μ: 579, ~: 579) -FixedPointMathLibTest:testRawSDiv(int256,int256) (runs: 312, μ: 465, ~: 465) -FixedPointMathLibTest:testRawSMod(int256,int256) (runs: 312, μ: 466, ~: 466) -FixedPointMathLibTest:testRawSub(int256,int256) (runs: 312, μ: 441, ~: 441) -FixedPointMathLibTest:testRawSub(uint256,uint256) (runs: 312, μ: 440, ~: 440) +FixedPointMathLibTest:testRawAdd(int256,int256) (runs: 313, μ: 462, ~: 462) +FixedPointMathLibTest:testRawAdd(uint256,uint256) (runs: 313, μ: 463, ~: 463) +FixedPointMathLibTest:testRawAddMod(uint256,uint256,uint256) (runs: 313, μ: 512, ~: 512) +FixedPointMathLibTest:testRawDiv(uint256,uint256) (runs: 313, μ: 443, ~: 443) +FixedPointMathLibTest:testRawMod(uint256,uint256) (runs: 313, μ: 464, ~: 464) +FixedPointMathLibTest:testRawMul(int256,int256) (runs: 313, μ: 412, ~: 412) +FixedPointMathLibTest:testRawMul(uint256,uint256) (runs: 313, μ: 485, ~: 485) +FixedPointMathLibTest:testRawMulMod(uint256,uint256,uint256) (runs: 313, μ: 579, ~: 579) +FixedPointMathLibTest:testRawSDiv(int256,int256) (runs: 313, μ: 465, ~: 465) +FixedPointMathLibTest:testRawSMod(int256,int256) (runs: 313, μ: 466, ~: 466) +FixedPointMathLibTest:testRawSub(int256,int256) (runs: 313, μ: 441, ~: 441) +FixedPointMathLibTest:testRawSub(uint256,uint256) (runs: 313, μ: 440, ~: 440) FixedPointMathLibTest:testSDivWad() (gas: 916) -FixedPointMathLibTest:testSDivWad(int256,int256) (runs: 312, μ: 6194, ~: 971) +FixedPointMathLibTest:testSDivWad(int256,int256) (runs: 313, μ: 6177, ~: 971) FixedPointMathLibTest:testSDivWadEdgeCases() (gas: 422) -FixedPointMathLibTest:testSDivWadOverflowReverts(int256,int256) (runs: 312, μ: 22657, ~: 26511) -FixedPointMathLibTest:testSDivWadZeroDenominatorReverts(int256) (runs: 312, μ: 3330, ~: 3330) +FixedPointMathLibTest:testSDivWadOverflowReverts(int256,int256) (runs: 313, μ: 22669, ~: 26511) +FixedPointMathLibTest:testSDivWadZeroDenominatorReverts(int256) (runs: 313, μ: 3330, ~: 3330) FixedPointMathLibTest:testSMulWad() (gas: 1032) -FixedPointMathLibTest:testSMulWad(int256,int256) (runs: 312, μ: 883, ~: 1047) +FixedPointMathLibTest:testSMulWad(int256,int256) (runs: 313, μ: 884, ~: 1047) FixedPointMathLibTest:testSMulWadEdgeCases() (gas: 1309) -FixedPointMathLibTest:testSMulWadOverflowRevertsOnCondition1(int256,int256) (runs: 312, μ: 19923, ~: 26556) -FixedPointMathLibTest:testSMulWadOverflowRevertsOnCondition2(int256) (runs: 312, μ: 19382, ~: 25957) -FixedPointMathLibTest:testSMulWadOverflowTrickDifferential(int256,int256) (runs: 312, μ: 621, ~: 632) +FixedPointMathLibTest:testSMulWadOverflowRevertsOnCondition1(int256,int256) (runs: 313, μ: 19945, ~: 26556) +FixedPointMathLibTest:testSMulWadOverflowRevertsOnCondition2(int256) (runs: 313, μ: 19403, ~: 25957) +FixedPointMathLibTest:testSMulWadOverflowTrickDifferential(int256,int256) (runs: 313, μ: 621, ~: 632) FixedPointMathLibTest:testSci() (gas: 1838614) -FixedPointMathLibTest:testSci(uint256) (runs: 312, μ: 33321, ~: 35112) -FixedPointMathLibTest:testSci2(uint256) (runs: 312, μ: 956, ~: 955) +FixedPointMathLibTest:testSci(uint256) (runs: 313, μ: 33379, ~: 35821) +FixedPointMathLibTest:testSci2(uint256) (runs: 313, μ: 956, ~: 955) FixedPointMathLibTest:testSqrt() (gas: 43798) -FixedPointMathLibTest:testSqrt(uint256) (runs: 312, μ: 1047, ~: 1054) -FixedPointMathLibTest:testSqrtBack(uint256) (runs: 312, μ: 10010, ~: 386) -FixedPointMathLibTest:testSqrtHashed(uint256) (runs: 312, μ: 54682, ~: 54659) +FixedPointMathLibTest:testSqrt(uint256) (runs: 313, μ: 1047, ~: 1054) +FixedPointMathLibTest:testSqrtBack(uint256) (runs: 313, μ: 9979, ~: 386) +FixedPointMathLibTest:testSqrtHashed(uint256) (runs: 313, μ: 54683, ~: 54659) FixedPointMathLibTest:testSqrtHashedSingle() (gas: 54587) FixedPointMathLibTest:testSqrtWad() (gas: 7937) -FixedPointMathLibTest:testSqrtWad(uint256) (runs: 312, μ: 1655, ~: 1580) -FixedPointMathLibTest:testSqrtWadConverged(uint256) (runs: 312, μ: 1962, ~: 1992) -FixedPointMathLibTest:testSqrtWadMonotonicallyIncreasing(uint256,uint256) (runs: 312, μ: 2240, ~: 1825) -FixedPointMathLibTest:testTernary(bool,uint256,uint256) (runs: 312, μ: 518, ~: 514) -FixedPointMathLibTest:testZeroFloorSub(uint256,uint256) (runs: 312, μ: 571, ~: 601) -FixedPointMathLibTest:testZeroFloorSubCasted(uint32,uint32,uint256) (runs: 312, μ: 880, ~: 846) +FixedPointMathLibTest:testSqrtWad(uint256) (runs: 313, μ: 1654, ~: 1580) +FixedPointMathLibTest:testSqrtWadConverged(uint256) (runs: 313, μ: 1962, ~: 1992) +FixedPointMathLibTest:testSqrtWadMonotonicallyIncreasing(uint256,uint256) (runs: 313, μ: 2239, ~: 1825) +FixedPointMathLibTest:testTernary(bool,uint256,uint256) (runs: 313, μ: 518, ~: 514) +FixedPointMathLibTest:testZeroFloorSub(uint256,uint256) (runs: 313, μ: 571, ~: 601) +FixedPointMathLibTest:testZeroFloorSubCasted(uint32,uint32,uint256) (runs: 313, μ: 880, ~: 846) FixedPointMathLibTest:test__codesize() (gas: 45155) GasBurnerLibTest:testBurn() (gas: 105035) -GasBurnerLibTest:testBurn(uint256) (runs: 312, μ: 43676, ~: 33930) +GasBurnerLibTest:testBurn(uint256) (runs: 313, μ: 43618, ~: 33838) GasBurnerLibTest:testBurnPure() (gas: 1700850) -GasBurnerLibTest:testBurnPure(uint256) (runs: 312, μ: 25016, ~: 24585) +GasBurnerLibTest:testBurnPure(uint256) (runs: 313, μ: 25015, ~: 24543) GasBurnerLibTest:testBurnPureTiming() (gas: 300223) GasBurnerLibTest:testBurnTiming() (gas: 293139) GasBurnerLibTest:testBurnView() (gas: 66700) -GasBurnerLibTest:testBurnView(uint256) (runs: 312, μ: 27185, ~: 26318) +GasBurnerLibTest:testBurnView(uint256) (runs: 313, μ: 27171, ~: 26318) GasBurnerLibTest:testBurnViewTiming() (gas: 294223) GasBurnerLibTest:test__codesize() (gas: 2389) InitializableTest:testDisableInitializers() (gas: 42010) InitializableTest:testInitializableConstructor() (gas: 691882) InitializableTest:testInitialize() (gas: 54688) -InitializableTest:testInitializeInititalizerTrick(bool,uint64,uint16) (runs: 312, μ: 790, ~: 791) -InitializableTest:testInitializeReinititalize(uint256) (runs: 312, μ: 95945, ~: 94564) -InitializableTest:testInitializeReinititalizerTrick(bool,uint64,uint64) (runs: 312, μ: 674, ~: 687) +InitializableTest:testInitializeInititalizerTrick(bool,uint64,uint16) (runs: 313, μ: 790, ~: 791) +InitializableTest:testInitializeReinititalize(uint256) (runs: 313, μ: 95990, ~: 94564) +InitializableTest:testInitializeReinititalizerTrick(bool,uint64,uint64) (runs: 313, μ: 674, ~: 687) InitializableTest:testOnlyInitializing() (gas: 10420) InitializableTest:test__codesize() (gas: 10480) -JSONParserLibTest:testDecodeEncodedStringDoesNotRevert(string) (runs: 312, μ: 57455, ~: 56403) +JSONParserLibTest:testDecodeEncodedStringDoesNotRevert(string) (runs: 313, μ: 57479, ~: 56403) JSONParserLibTest:testDecodeInvalidStringReverts() (gas: 172924) JSONParserLibTest:testDecodeString() (gas: 193269) JSONParserLibTest:testEmptyItem() (gas: 2913) @@ -587,9 +587,9 @@ JSONParserLibTest:testParseEmptyArrays() (gas: 499245) JSONParserLibTest:testParseEmptyObjects() (gas: 500206) JSONParserLibTest:testParseGas() (gas: 151909) JSONParserLibTest:testParseInt() (gas: 204229) -JSONParserLibTest:testParseInt(int256) (runs: 312, μ: 18734, ~: 17408) -JSONParserLibTest:testParseIntReverts(uint256) (runs: 312, μ: 55938, ~: 55929) -JSONParserLibTest:testParseIntTrick(uint256,bool) (runs: 312, μ: 528, ~: 532) +JSONParserLibTest:testParseInt(int256) (runs: 313, μ: 18765, ~: 17408) +JSONParserLibTest:testParseIntReverts(uint256) (runs: 313, μ: 55938, ~: 55929) +JSONParserLibTest:testParseIntTrick(uint256,bool) (runs: 313, μ: 528, ~: 532) JSONParserLibTest:testParseInvalidIntReverts() (gas: 210681) JSONParserLibTest:testParseInvalidNumberReverts() (gas: 4068682) JSONParserLibTest:testParseInvalidReverts() (gas: 8589165) @@ -605,156 +605,156 @@ JSONParserLibTest:testParseSimpleUintArray() (gas: 1175003) JSONParserLibTest:testParseSpecials() (gas: 260199) JSONParserLibTest:testParseString() (gas: 1237483) JSONParserLibTest:testParseUint() (gas: 95659) -JSONParserLibTest:testParseUint(uint256) (runs: 312, μ: 35350, ~: 31924) +JSONParserLibTest:testParseUint(uint256) (runs: 313, μ: 35395, ~: 31924) JSONParserLibTest:testParseUintFromHex() (gas: 1382724) -JSONParserLibTest:testParseValidObjectDoesNotRevert(string,string) (runs: 312, μ: 50101, ~: 48844) +JSONParserLibTest:testParseValidObjectDoesNotRevert(string,string) (runs: 313, μ: 50090, ~: 48837) JSONParserLibTest:test__codesize() (gas: 38087) LibBitTest:testAnd() (gas: 192789) -LibBitTest:testAnd(bool,bool) (runs: 312, μ: 632, ~: 634) -LibBitTest:testAutoClean(uint256,uint256) (runs: 312, μ: 468, ~: 468) -LibBitTest:testBoolToUint(bool) (runs: 312, μ: 485, ~: 485) +LibBitTest:testAnd(bool,bool) (runs: 313, μ: 632, ~: 634) +LibBitTest:testAutoClean(uint256,uint256) (runs: 313, μ: 468, ~: 468) +LibBitTest:testBoolToUint(bool) (runs: 313, μ: 485, ~: 485) LibBitTest:testCLZ() (gas: 297260) LibBitTest:testFFS() (gas: 152877) LibBitTest:testFLS() (gas: 245237) LibBitTest:testIsPo2() (gas: 57663) -LibBitTest:testIsPo2(uint256) (runs: 312, μ: 3531, ~: 2130) -LibBitTest:testIsPo2(uint8,uint8) (runs: 312, μ: 623, ~: 624) +LibBitTest:testIsPo2(uint256) (runs: 313, μ: 3524, ~: 2130) +LibBitTest:testIsPo2(uint8,uint8) (runs: 313, μ: 623, ~: 624) LibBitTest:testOr() (gas: 194336) -LibBitTest:testOr(bool,bool) (runs: 312, μ: 649, ~: 648) +LibBitTest:testOr(bool,bool) (runs: 313, μ: 649, ~: 648) LibBitTest:testPassInBool() (gas: 830) LibBitTest:testPopCount() (gas: 63738) -LibBitTest:testPopCount(uint256) (runs: 312, μ: 3673, ~: 2272) +LibBitTest:testPopCount(uint256) (runs: 313, μ: 3666, ~: 2272) LibBitTest:testReturnsBool() (gas: 779) LibBitTest:testReverseBits() (gas: 131521) -LibBitTest:testReverseBitsDifferential(uint256) (runs: 312, μ: 18724, ~: 18724) +LibBitTest:testReverseBitsDifferential(uint256) (runs: 313, μ: 18724, ~: 18724) LibBitTest:testReverseBytes() (gas: 12492) -LibBitTest:testReverseBytesDifferential(uint256) (runs: 312, μ: 2675, ~: 2675) +LibBitTest:testReverseBytesDifferential(uint256) (runs: 313, μ: 2675, ~: 2675) LibBitTest:test__codesize() (gas: 5842) LibBitmapTest:testBitmapClaimWithGetSet() (gas: 27156) LibBitmapTest:testBitmapClaimWithToggle() (gas: 17480) LibBitmapTest:testBitmapFindFirstUnset() (gas: 54669) -LibBitmapTest:testBitmapFindFirstUnset(uint256,uint256,bytes32) (runs: 312, μ: 140999, ~: 140204) +LibBitmapTest:testBitmapFindFirstUnset(uint256,uint256,bytes32) (runs: 313, μ: 140995, ~: 140199) LibBitmapTest:testBitmapFindLastSet() (gas: 1300541) -LibBitmapTest:testBitmapFindLastSet(uint256,bytes32) (runs: 312, μ: 75872, ~: 76217) +LibBitmapTest:testBitmapFindLastSet(uint256,bytes32) (runs: 313, μ: 75872, ~: 76214) LibBitmapTest:testBitmapFindLastSet2() (gas: 23882) LibBitmapTest:testBitmapGet() (gas: 2549) -LibBitmapTest:testBitmapGet(uint256) (runs: 312, μ: 2599, ~: 2599) +LibBitmapTest:testBitmapGet(uint256) (runs: 313, μ: 2599, ~: 2599) LibBitmapTest:testBitmapPopCount() (gas: 751877) -LibBitmapTest:testBitmapPopCount(uint256,uint256,uint256) (runs: 312, μ: 210417, ~: 173650) +LibBitmapTest:testBitmapPopCount(uint256,uint256,uint256) (runs: 313, μ: 210215, ~: 173563) LibBitmapTest:testBitmapPopCountAcrossMultipleBuckets() (gas: 73634) LibBitmapTest:testBitmapPopCountWithinSingleBucket() (gas: 34032) LibBitmapTest:testBitmapSet() (gas: 22771) -LibBitmapTest:testBitmapSet(uint256) (runs: 312, μ: 22843, ~: 22843) -LibBitmapTest:testBitmapSetAndGet(uint256) (runs: 312, μ: 22864, ~: 22864) +LibBitmapTest:testBitmapSet(uint256) (runs: 313, μ: 22843, ~: 22843) +LibBitmapTest:testBitmapSetAndGet(uint256) (runs: 313, μ: 22864, ~: 22864) LibBitmapTest:testBitmapSetBatch() (gas: 2918603) LibBitmapTest:testBitmapSetBatchAcrossMultipleBuckets() (gas: 438393) LibBitmapTest:testBitmapSetBatchWithinSingleBucket() (gas: 389011) LibBitmapTest:testBitmapSetTo() (gas: 14652) -LibBitmapTest:testBitmapSetTo(uint256,bool,uint256) (runs: 312, μ: 12878, ~: 3113) -LibBitmapTest:testBitmapSetTo(uint256,uint256) (runs: 312, μ: 46810, ~: 51383) +LibBitmapTest:testBitmapSetTo(uint256,bool,uint256) (runs: 313, μ: 12910, ~: 3113) +LibBitmapTest:testBitmapSetTo(uint256,uint256) (runs: 313, μ: 46826, ~: 51384) LibBitmapTest:testBitmapToggle() (gas: 31525) -LibBitmapTest:testBitmapToggle(uint256,bool) (runs: 312, μ: 19298, ~: 23572) +LibBitmapTest:testBitmapToggle(uint256,bool) (runs: 313, μ: 19283, ~: 23572) LibBitmapTest:testBitmapUnset() (gas: 22794) -LibBitmapTest:testBitmapUnset(uint256) (runs: 312, μ: 14510, ~: 14525) +LibBitmapTest:testBitmapUnset(uint256) (runs: 313, μ: 14511, ~: 14525) LibBitmapTest:testBitmapUnsetBatch() (gas: 2981123) LibBitmapTest:testBitmapUnsetBatchAcrossMultipleBuckets() (gas: 438470) LibBitmapTest:testBitmapUnsetBatchWithinSingleBucket() (gas: 445869) LibBitmapTest:test__codesize() (gas: 8720) LibCWIATest:testCloneDeteministicWithImmutableArgs() (gas: 191687) -LibCWIATest:testCloneDeteministicWithImmutableArgs(address,uint256,uint256[],bytes,uint64,uint8,uint256) (runs: 312, μ: 1094816, ~: 1045340) +LibCWIATest:testCloneDeteministicWithImmutableArgs(address,uint256,uint256[],bytes,uint64,uint8,uint256) (runs: 313, μ: 1093795, ~: 1042702) LibCWIATest:testCloneWithImmutableArgs() (gas: 120548) -LibCWIATest:testCloneWithImmutableArgs(uint256,address,uint256,uint256[],uint64,uint8) (runs: 312, μ: 995964, ~: 978832) +LibCWIATest:testCloneWithImmutableArgs(uint256,address,uint256,uint256[],uint64,uint8) (runs: 313, μ: 996549, ~: 982338) LibCWIATest:testCloneWithImmutableArgsRevertsIfDataTooBig() (gas: 97305787) LibCWIATest:test__codesize() (gas: 12272) LibCloneTest:testClone() (gas: 97436) -LibCloneTest:testClone(uint256) (runs: 312, μ: 97463, ~: 97463) +LibCloneTest:testClone(uint256) (runs: 313, μ: 97463, ~: 97463) LibCloneTest:testCloneDeterministic() (gas: 98317) -LibCloneTest:testCloneDeterministic(bytes32) (runs: 312, μ: 3829176, ~: 98591) +LibCloneTest:testCloneDeterministic(bytes32) (runs: 313, μ: 3817258, ~: 98594) LibCloneTest:testCloneDeterministicWithImmutableArgs() (gas: 125123) -LibCloneTest:testCloneDeterministicWithImmutableArgs(bytes32) (runs: 312, μ: 6395632, ~: 117728) +LibCloneTest:testCloneDeterministicWithImmutableArgs(bytes32) (runs: 313, μ: 6375585, ~: 117807) LibCloneTest:testCloneWithImmutableArgs() (gas: 125589) -LibCloneTest:testCloneWithImmutableArgs(uint256) (runs: 312, μ: 2643102, ~: 117132) +LibCloneTest:testCloneWithImmutableArgs(uint256) (runs: 313, μ: 2636985, ~: 117209) LibCloneTest:testCloneWithImmutableArgsSlicing() (gas: 57947) -LibCloneTest:testCreateDeterministicERC1967(bytes32) (runs: 312, μ: 177949, ~: 128025) -LibCloneTest:testCreateDeterministicERC1967BeaconProxy(bytes32) (runs: 312, μ: 372953, ~: 360493) -LibCloneTest:testCreateDeterministicERC1967I(bytes32) (runs: 312, μ: 178479, ~: 132431) -LibCloneTest:testCreateDeterministicERC1967WithImmutableArgs(bytes32) (runs: 312, μ: 379218, ~: 137487) +LibCloneTest:testCreateDeterministicERC1967(bytes32) (runs: 313, μ: 177790, ~: 128025) +LibCloneTest:testCreateDeterministicERC1967BeaconProxy(bytes32) (runs: 313, μ: 372715, ~: 360493) +LibCloneTest:testCreateDeterministicERC1967I(bytes32) (runs: 313, μ: 178332, ~: 132431) +LibCloneTest:testCreateDeterministicERC1967WithImmutableArgs(bytes32) (runs: 313, μ: 378453, ~: 137487) LibCloneTest:testDeployDeterministicERC1967() (gas: 133441) -LibCloneTest:testDeployDeterministicERC1967(bytes32) (runs: 312, μ: 3379376, ~: 133342) -LibCloneTest:testDeployDeterministicERC1967BeaconProxy(bytes32) (runs: 312, μ: 4627262, ~: 357493) +LibCloneTest:testDeployDeterministicERC1967(bytes32) (runs: 313, μ: 3369003, ~: 133342) +LibCloneTest:testDeployDeterministicERC1967BeaconProxy(bytes32) (runs: 313, μ: 4613422, ~: 357493) LibCloneTest:testDeployDeterministicERC1967I() (gas: 129465) -LibCloneTest:testDeployDeterministicERC1967I(bytes32) (runs: 312, μ: 2019141, ~: 129383) +LibCloneTest:testDeployDeterministicERC1967I(bytes32) (runs: 313, μ: 2013103, ~: 129383) LibCloneTest:testDeployDeterministicERC1967WithImmutableArgs() (gas: 166875) -LibCloneTest:testDeployDeterministicERC1967WithImmutableArgs(bytes32) (runs: 312, μ: 5238464, ~: 144621) +LibCloneTest:testDeployDeterministicERC1967WithImmutableArgs(bytes32) (runs: 313, μ: 5222169, ~: 144508) LibCloneTest:testDeployERC1967() (gas: 130814) -LibCloneTest:testDeployERC1967(bytes32) (runs: 312, μ: 237161, ~: 130882) -LibCloneTest:testDeployERC1967BeaconProxy(bytes32) (runs: 312, μ: 351424, ~: 294788) +LibCloneTest:testDeployERC1967(bytes32) (runs: 313, μ: 236822, ~: 130906) +LibCloneTest:testDeployERC1967BeaconProxy(bytes32) (runs: 313, μ: 351441, ~: 294788) LibCloneTest:testDeployERC1967BeaconProxyWithImmutableArgs() (gas: 293333) -LibCloneTest:testDeployERC1967BeaconProxyWithImmutableArgs(address,bytes32) (runs: 312, μ: 28736809, ~: 277471) +LibCloneTest:testDeployERC1967BeaconProxyWithImmutableArgs(address,bytes32) (runs: 313, μ: 28645304, ~: 277068) LibCloneTest:testDeployERC1967I() (gas: 128886) -LibCloneTest:testDeployERC1967I(bytes32) (runs: 312, μ: 129002, ~: 129002) +LibCloneTest:testDeployERC1967I(bytes32) (runs: 313, μ: 129002, ~: 129002) LibCloneTest:testDeployERC1967WithImmutableArgs() (gas: 141650) -LibCloneTest:testDeployERC1967WithImmutableArgs(bytes32) (runs: 312, μ: 6046365, ~: 142521) -LibCloneTest:testERC1967BeaconProxyGasBehavior(uint256,uint256) (runs: 312, μ: 372561, ~: 346623) -LibCloneTest:testERC1967ConstantBootstrap(address,bytes32) (runs: 312, μ: 195786, ~: 169477) -LibCloneTest:testInitCode(address) (runs: 312, μ: 237016, ~: 35312) +LibCloneTest:testDeployERC1967WithImmutableArgs(bytes32) (runs: 313, μ: 6029468, ~: 142576) +LibCloneTest:testERC1967BeaconProxyGasBehavior(uint256,uint256) (runs: 313, μ: 372285, ~: 346599) +LibCloneTest:testERC1967ConstantBootstrap(address,bytes32) (runs: 313, μ: 195702, ~: 169477) +LibCloneTest:testInitCode(address) (runs: 313, μ: 236365, ~: 35307) LibCloneTest:testInitialDeposit() (gas: 585537) -LibCloneTest:testSlicingRevertsOnZeroCodeAddress(address) (runs: 312, μ: 105502, ~: 30422) -LibCloneTest:testStartsWith(uint256) (runs: 312, μ: 29398, ~: 29468) +LibCloneTest:testSlicingRevertsOnZeroCodeAddress(address) (runs: 313, μ: 105492, ~: 30422) +LibCloneTest:testStartsWith(uint256) (runs: 313, μ: 29398, ~: 29468) LibCloneTest:test__codesize() (gas: 31023) -LibERC6551Test:testComputeAccountAddress(address,bytes32,uint256,address,uint256) (runs: 312, μ: 296920, ~: 28642) -LibERC6551Test:testContext(address,bytes32,uint256,address,uint256) (runs: 312, μ: 101745, ~: 101643) -LibERC6551Test:testInitCodeHash(address,bytes32,uint256,address,uint256) (runs: 312, μ: 237982, ~: 23818) -LibERC6551Test:testIsERC6551Account(address,bytes32,uint256,address,uint256) (runs: 312, μ: 111164, ~: 111183) +LibERC6551Test:testComputeAccountAddress(address,bytes32,uint256,address,uint256) (runs: 313, μ: 296063, ~: 28642) +LibERC6551Test:testContext(address,bytes32,uint256,address,uint256) (runs: 313, μ: 101744, ~: 101643) +LibERC6551Test:testInitCodeHash(address,bytes32,uint256,address,uint256) (runs: 313, μ: 237298, ~: 23818) +LibERC6551Test:testIsERC6551Account(address,bytes32,uint256,address,uint256) (runs: 313, μ: 111163, ~: 111183) LibERC6551Test:test__codesize() (gas: 6081) -LibMapTest:testFoundStatementDifferential(uint256,uint256,uint256) (runs: 312, μ: 499, ~: 499) +LibMapTest:testFoundStatementDifferential(uint256,uint256,uint256) (runs: 313, μ: 499, ~: 499) LibMapTest:testGeneralMapFunctionsGas() (gas: 3304775) -LibMapTest:testGeneralMapFunctionsWithSmallBitWidths(uint256) (runs: 312, μ: 84821, ~: 85698) +LibMapTest:testGeneralMapFunctionsWithSmallBitWidths(uint256) (runs: 313, μ: 84865, ~: 85699) LibMapTest:testGeneralMapFunctionsWithZeroBitWidth() (gas: 12260) -LibMapTest:testGeneralMapSearchSorted(uint256) (runs: 312, μ: 208689, ~: 152132) +LibMapTest:testGeneralMapSearchSorted(uint256) (runs: 313, μ: 208802, ~: 152475) LibMapTest:testMapGetFromBigArray() (gas: 3330) LibMapTest:testMapGetUint8() (gas: 3313) LibMapTest:testMapSetUint8() (gas: 23276) LibMapTest:testMapSetUint8FromBigArray() (gas: 23263) -LibMapTest:testUint128MapSearchSorted(uint256) (runs: 312, μ: 196108, ~: 130815) +LibMapTest:testUint128MapSearchSorted(uint256) (runs: 313, μ: 195899, ~: 130770) LibMapTest:testUint128MapSetAndGet() (gas: 1607264) -LibMapTest:testUint128MapSetAndGet(uint256) (runs: 312, μ: 180217, ~: 170756) -LibMapTest:testUint128MapSetAndGet2(uint256) (runs: 312, μ: 68973, ~: 69405) -LibMapTest:testUint16MapSearchSorted(uint256) (runs: 312, μ: 96227, ~: 86334) +LibMapTest:testUint128MapSetAndGet(uint256) (runs: 313, μ: 180188, ~: 171044) +LibMapTest:testUint128MapSetAndGet2(uint256) (runs: 313, μ: 68975, ~: 69476) +LibMapTest:testUint16MapSearchSorted(uint256) (runs: 313, μ: 96227, ~: 86351) LibMapTest:testUint16MapSetAndGet() (gas: 958101) -LibMapTest:testUint16MapSetAndGet(uint256) (runs: 312, μ: 81509, ~: 81709) -LibMapTest:testUint16MapSetAndGet2(uint256) (runs: 312, μ: 68481, ~: 69242) -LibMapTest:testUint32MapSearchSorted(uint256) (runs: 312, μ: 106919, ~: 87361) +LibMapTest:testUint16MapSetAndGet(uint256) (runs: 313, μ: 81509, ~: 81715) +LibMapTest:testUint16MapSetAndGet2(uint256) (runs: 313, μ: 68484, ~: 69242) +LibMapTest:testUint32MapSearchSorted(uint256) (runs: 313, μ: 106827, ~: 87350) LibMapTest:testUint32MapSetAndGet() (gas: 1067796) -LibMapTest:testUint32MapSetAndGet(uint256) (runs: 312, μ: 114280, ~: 124784) -LibMapTest:testUint32MapSetAndGet2(uint256) (runs: 312, μ: 68691, ~: 69197) -LibMapTest:testUint32Maps(uint256) (runs: 312, μ: 68455, ~: 72250) -LibMapTest:testUint40MapSearchSorted(uint256) (runs: 312, μ: 125441, ~: 108161) +LibMapTest:testUint32MapSetAndGet(uint256) (runs: 313, μ: 114314, ~: 124787) +LibMapTest:testUint32MapSetAndGet2(uint256) (runs: 313, μ: 68692, ~: 69197) +LibMapTest:testUint32Maps(uint256) (runs: 313, μ: 68468, ~: 72251) +LibMapTest:testUint40MapSearchSorted(uint256) (runs: 313, μ: 125320, ~: 108133) LibMapTest:testUint40MapSetAndGet() (gas: 1127509) -LibMapTest:testUint40MapSetAndGet(uint256) (runs: 312, μ: 136763, ~: 146770) -LibMapTest:testUint40MapSetAndGet2(uint256) (runs: 312, μ: 68523, ~: 69272) -LibMapTest:testUint64MapSearchSorted(uint256) (runs: 312, μ: 134299, ~: 108774) +LibMapTest:testUint40MapSetAndGet(uint256) (runs: 313, μ: 136797, ~: 146776) +LibMapTest:testUint40MapSetAndGet2(uint256) (runs: 313, μ: 68526, ~: 69272) +LibMapTest:testUint64MapSearchSorted(uint256) (runs: 313, μ: 134243, ~: 108780) LibMapTest:testUint64MapSetAndGet() (gas: 1220444) -LibMapTest:testUint64MapSetAndGet(uint256) (runs: 312, μ: 149213, ~: 147401) -LibMapTest:testUint64MapSetAndGet2(uint256) (runs: 312, μ: 68446, ~: 69261) -LibMapTest:testUint8MapSearchSorted(uint256) (runs: 312, μ: 99676, ~: 86239) +LibMapTest:testUint64MapSetAndGet(uint256) (runs: 313, μ: 149206, ~: 147394) +LibMapTest:testUint64MapSetAndGet2(uint256) (runs: 313, μ: 68386, ~: 69261) +LibMapTest:testUint8MapSearchSorted(uint256) (runs: 313, μ: 99635, ~: 86243) LibMapTest:testUint8MapSetAndGet() (gas: 884299) -LibMapTest:testUint8MapSetAndGet(uint256) (runs: 312, μ: 59500, ~: 59566) -LibMapTest:testUint8MapSetAndGet2(uint256) (runs: 312, μ: 68226, ~: 69180) +LibMapTest:testUint8MapSetAndGet(uint256) (runs: 313, μ: 59499, ~: 59566) +LibMapTest:testUint8MapSetAndGet2(uint256) (runs: 313, μ: 68230, ~: 69180) LibMapTest:test__codesize() (gas: 12065) LibPRNGTest:testExponentialWad() (gas: 4394348) LibPRNGTest:testLCGGas() (gas: 20803) LibPRNGTest:testLazyShufflerGet() (gas: 298845) -LibPRNGTest:testLazyShufflerGetOutOfBoundsReverts(uint256,uint256) (runs: 312, μ: 26626, ~: 26667) +LibPRNGTest:testLazyShufflerGetOutOfBoundsReverts(uint256,uint256) (runs: 313, μ: 26625, ~: 26667) LibPRNGTest:testLazyShufflerNoStorageCollisions() (gas: 266054) -LibPRNGTest:testLazyShufflerProducesShuffledRange(uint256) (runs: 312, μ: 178074, ~: 91111) +LibPRNGTest:testLazyShufflerProducesShuffledRange(uint256) (runs: 313, μ: 177823, ~: 91137) LibPRNGTest:testLazyShufflerProducesShuffledRange2() (gas: 9059432) -LibPRNGTest:testLazyShufflerProducesShuffledRangeWithGrow(uint256,uint256) (runs: 312, μ: 188065, ~: 176203) +LibPRNGTest:testLazyShufflerProducesShuffledRangeWithGrow(uint256,uint256) (runs: 313, μ: 188354, ~: 176287) LibPRNGTest:testLazyShufflerRestart() (gas: 276254) LibPRNGTest:testLazyShufflerRevertsOnDoubleInit() (gas: 26824) -LibPRNGTest:testLazyShufflerRevertsOnFinshedNext(uint256) (runs: 312, μ: 64898, ~: 74386) -LibPRNGTest:testLazyShufflerRevertsOnGrowWithInvalidLength(uint256,uint256) (runs: 312, μ: 24690, ~: 24708) -LibPRNGTest:testLazyShufflerRevertsOnInitWithInvalidLength(uint256) (runs: 312, μ: 22905, ~: 23673) +LibPRNGTest:testLazyShufflerRevertsOnFinshedNext(uint256) (runs: 313, μ: 64873, ~: 74386) +LibPRNGTest:testLazyShufflerRevertsOnGrowWithInvalidLength(uint256,uint256) (runs: 313, μ: 24689, ~: 24708) +LibPRNGTest:testLazyShufflerRevertsOnInitWithInvalidLength(uint256) (runs: 313, μ: 22907, ~: 23673) LibPRNGTest:testLazyShufflerRevertsOnZeroLengthNext() (gas: 27623) LibPRNGTest:testPRNGGas() (gas: 25667) LibPRNGTest:testPRNGNext() (gas: 16162) @@ -768,260 +768,260 @@ LibPRNGTest:testPRNGShuffleGas() (gas: 1610927) LibPRNGTest:testPRNGUniform() (gas: 559430) LibPRNGTest:testStandardNormalWad() (gas: 4425913) LibPRNGTest:test__codesize() (gas: 14376) -LibRLPTest:testComputeAddressDifferential(address,uint256) (runs: 312, μ: 4263, ~: 4099) +LibRLPTest:testComputeAddressDifferential(address,uint256) (runs: 313, μ: 4267, ~: 4099) LibRLPTest:testComputeAddressForLargeNonces() (gas: 1760) LibRLPTest:testComputeAddressForSmallNonces() (gas: 1007) LibRLPTest:testComputeAddressOriginalForLargeNonces() (gas: 3766) LibRLPTest:testComputeAddressOriginalForSmallNonces() (gas: 2185) -LibRLPTest:testRLPEncodeAddressDifferential(address) (runs: 312, μ: 241142, ~: 26102) -LibRLPTest:testRLPEncodeAddressViaList(address,address) (runs: 312, μ: 165198, ~: 27693) -LibRLPTest:testRLPEncodeBool(bool) (runs: 312, μ: 27562, ~: 27700) +LibRLPTest:testRLPEncodeAddressDifferential(address) (runs: 313, μ: 242386, ~: 26102) +LibRLPTest:testRLPEncodeAddressViaList(address,address) (runs: 313, μ: 164758, ~: 27693) +LibRLPTest:testRLPEncodeBool(bool) (runs: 313, μ: 27562, ~: 27700) LibRLPTest:testRLPEncodeBytes() (gas: 382181) LibRLPTest:testRLPEncodeBytes2() (gas: 156293) -LibRLPTest:testRLPEncodeBytesDifferential(bytes32) (runs: 312, μ: 280814, ~: 29085) +LibRLPTest:testRLPEncodeBytesDifferential(bytes32) (runs: 313, μ: 284928, ~: 29108) LibRLPTest:testRLPEncodeList() (gas: 723349) LibRLPTest:testRLPEncodeList2() (gas: 798535) -LibRLPTest:testRLPEncodeListDifferential(bytes,uint256) (runs: 312, μ: 391923, ~: 39179) +LibRLPTest:testRLPEncodeListDifferential(bytes,uint256) (runs: 313, μ: 392896, ~: 39250) LibRLPTest:testRLPEncodeUint() (gas: 1179038) -LibRLPTest:testRLPEncodeUint(uint256) (runs: 312, μ: 90311, ~: 24909) -LibRLPTest:testRLPEncodeUintDifferential(uint256) (runs: 312, μ: 223418, ~: 27078) -LibRLPTest:testRLPMemory(bytes32) (runs: 312, μ: 325708, ~: 33605) +LibRLPTest:testRLPEncodeUint(uint256) (runs: 313, μ: 90102, ~: 24886) +LibRLPTest:testRLPEncodeUintDifferential(uint256) (runs: 313, μ: 222789, ~: 27075) +LibRLPTest:testRLPMemory(bytes32) (runs: 313, μ: 324780, ~: 33628) LibRLPTest:testRLPPUint256() (gas: 364901) -LibRLPTest:testSmallLog256Equivalence(uint256) (runs: 312, μ: 23675, ~: 23700) +LibRLPTest:testSmallLog256Equivalence(uint256) (runs: 313, μ: 23675, ~: 23700) LibRLPTest:test__codesize() (gas: 15464) -LibSortTest:testCopy(uint256) (runs: 312, μ: 55779, ~: 25744) -LibSortTest:testInsertionSortAddressesDifferential(uint256) (runs: 312, μ: 45239, ~: 24945) +LibSortTest:testCopy(uint256) (runs: 313, μ: 55679, ~: 25743) +LibSortTest:testInsertionSortAddressesDifferential(uint256) (runs: 313, μ: 45174, ~: 24945) LibSortTest:testInsertionSortInts() (gas: 80727) LibSortTest:testInsertionSortPsuedorandom() (gas: 63725) -LibSortTest:testInsertionSortPsuedorandom(uint256) (runs: 312, μ: 62418, ~: 62480) -LibSortTest:testIsSortedAddressesDifferential(uint256) (runs: 312, μ: 37750, ~: 28942) -LibSortTest:testIsSortedAndUniquifiedAddressesDifferential(uint256) (runs: 312, μ: 36269, ~: 28889) -LibSortTest:testIsSortedAndUniquifiedDifferential(uint256) (runs: 312, μ: 32606, ~: 28383) -LibSortTest:testIsSortedAndUniquifiedIntsDifferential(uint256) (runs: 312, μ: 42018, ~: 29916) -LibSortTest:testIsSortedDifferential(uint256) (runs: 312, μ: 43295, ~: 28424) -LibSortTest:testIsSortedIntsDifferential(uint256) (runs: 312, μ: 47898, ~: 29820) +LibSortTest:testInsertionSortPsuedorandom(uint256) (runs: 313, μ: 62415, ~: 62470) +LibSortTest:testIsSortedAddressesDifferential(uint256) (runs: 313, μ: 37707, ~: 28911) +LibSortTest:testIsSortedAndUniquifiedAddressesDifferential(uint256) (runs: 313, μ: 36253, ~: 28910) +LibSortTest:testIsSortedAndUniquifiedDifferential(uint256) (runs: 313, μ: 32594, ~: 28403) +LibSortTest:testIsSortedAndUniquifiedIntsDifferential(uint256) (runs: 313, μ: 41989, ~: 29923) +LibSortTest:testIsSortedDifferential(uint256) (runs: 313, μ: 43240, ~: 28422) +LibSortTest:testIsSortedIntsDifferential(uint256) (runs: 313, μ: 47846, ~: 29823) LibSortTest:testReverse() (gas: 117297) LibSortTest:testSearchSorted() (gas: 118972) LibSortTest:testSearchSortedAddresses() (gas: 251950) LibSortTest:testSearchSortedBasicCases() (gas: 2244) -LibSortTest:testSearchSortedDifferential(uint256) (runs: 312, μ: 45183, ~: 30874) +LibSortTest:testSearchSortedDifferential(uint256) (runs: 313, μ: 45138, ~: 30877) LibSortTest:testSearchSortedEdgeCases() (gas: 1617) -LibSortTest:testSearchSortedElementInArray(uint256) (runs: 312, μ: 55781, ~: 31438) +LibSortTest:testSearchSortedElementInArray(uint256) (runs: 313, μ: 55698, ~: 31438) LibSortTest:testSearchSortedElementNotInArray() (gas: 6135) -LibSortTest:testSearchSortedElementNotInArray(uint256) (runs: 312, μ: 47851, ~: 33822) +LibSortTest:testSearchSortedElementNotInArray(uint256) (runs: 313, μ: 47874, ~: 33846) LibSortTest:testSearchSortedInts() (gas: 120794) -LibSortTest:testSearchSortedInts(int256[],int256) (runs: 312, μ: 12155, ~: 11736) +LibSortTest:testSearchSortedInts(int256[],int256) (runs: 313, μ: 12164, ~: 11736) LibSortTest:testSearchSortedWithEmptyArray() (gas: 709) -LibSortTest:testSort(uint256) (runs: 312, μ: 38718, ~: 28289) -LibSortTest:testSortAddressesDifferential(uint256) (runs: 312, μ: 65472, ~: 29011) +LibSortTest:testSort(uint256) (runs: 313, μ: 38719, ~: 28289) +LibSortTest:testSortAddressesDifferential(uint256) (runs: 313, μ: 65340, ~: 29001) LibSortTest:testSortAddressesPsuedorandom() (gas: 148711) -LibSortTest:testSortAddressesPsuedorandom(uint256) (runs: 312, μ: 148856, ~: 148790) +LibSortTest:testSortAddressesPsuedorandom(uint256) (runs: 313, μ: 148859, ~: 148806) LibSortTest:testSortAddressesPsuedorandomBrutalizeUpperBits() (gas: 200629) LibSortTest:testSortAddressesReversed() (gas: 45400) LibSortTest:testSortAddressesSorted() (gas: 42376) LibSortTest:testSortBasicCase() (gas: 1210) -LibSortTest:testSortChecksumed(uint256) (runs: 312, μ: 47461, ~: 31480) -LibSortTest:testSortDifferential(uint256) (runs: 312, μ: 60780, ~: 28313) +LibSortTest:testSortChecksumed(uint256) (runs: 313, μ: 47385, ~: 31447) +LibSortTest:testSortDifferential(uint256) (runs: 313, μ: 60662, ~: 28312) LibSortTest:testSortInts() (gas: 895631) LibSortTest:testSortMostlySame() (gas: 67374) LibSortTest:testSortOriginalMostlySame() (gas: 207985) LibSortTest:testSortOriginalPsuedorandom() (gas: 283954) -LibSortTest:testSortOriginalPsuedorandom(uint256) (runs: 312, μ: 287985, ~: 287589) +LibSortTest:testSortOriginalPsuedorandom(uint256) (runs: 313, μ: 287974, ~: 287540) LibSortTest:testSortOriginalReversed() (gas: 156282) LibSortTest:testSortOriginalSorted() (gas: 142263) LibSortTest:testSortPsuedorandom() (gas: 141932) -LibSortTest:testSortPsuedorandom(uint256) (runs: 312, μ: 142176, ~: 142172) +LibSortTest:testSortPsuedorandom(uint256) (runs: 313, μ: 142175, ~: 142159) LibSortTest:testSortPsuedorandomNonuniform() (gas: 147496) -LibSortTest:testSortPsuedorandomNonuniform(uint256) (runs: 312, μ: 147837, ~: 147672) +LibSortTest:testSortPsuedorandomNonuniform(uint256) (runs: 313, μ: 147834, ~: 147663) LibSortTest:testSortReversed() (gas: 38827) LibSortTest:testSortSorted() (gas: 35785) LibSortTest:testSortTestOverhead() (gas: 103630) LibSortTest:testSortedDifferenceDifferential() (gas: 183604) -LibSortTest:testSortedDifferenceDifferential(uint256) (runs: 312, μ: 35309, ~: 35182) -LibSortTest:testSortedDifferenceDifferentialInt(uint256) (runs: 312, μ: 36978, ~: 35856) -LibSortTest:testSortedDifferenceUnionIntersection(uint256) (runs: 312, μ: 57978, ~: 52865) +LibSortTest:testSortedDifferenceDifferential(uint256) (runs: 313, μ: 35287, ~: 35167) +LibSortTest:testSortedDifferenceDifferentialInt(uint256) (runs: 313, μ: 37004, ~: 35905) +LibSortTest:testSortedDifferenceUnionIntersection(uint256) (runs: 313, μ: 57977, ~: 52866) LibSortTest:testSortedIntersectionDifferential() (gas: 209797) -LibSortTest:testSortedIntersectionDifferential(uint256) (runs: 312, μ: 32964, ~: 32422) -LibSortTest:testSortedIntersectionDifferentialInt(uint256) (runs: 312, μ: 35084, ~: 34881) +LibSortTest:testSortedIntersectionDifferential(uint256) (runs: 313, μ: 32956, ~: 32405) +LibSortTest:testSortedIntersectionDifferentialInt(uint256) (runs: 313, μ: 35084, ~: 34884) LibSortTest:testSortedUnionDifferential() (gas: 217387) -LibSortTest:testSortedUnionDifferential(uint256) (runs: 312, μ: 35804, ~: 35197) -LibSortTest:testSortedUnionDifferentialInt(uint256) (runs: 312, μ: 38573, ~: 38005) -LibSortTest:testTwoComplementConversionSort(int256,int256) (runs: 312, μ: 515, ~: 514) +LibSortTest:testSortedUnionDifferential(uint256) (runs: 313, μ: 35787, ~: 35197) +LibSortTest:testSortedUnionDifferentialInt(uint256) (runs: 313, μ: 38576, ~: 38015) +LibSortTest:testTwoComplementConversionSort(int256,int256) (runs: 313, μ: 515, ~: 514) LibSortTest:testUniquifySorted() (gas: 1710) -LibSortTest:testUniquifySorted(uint256) (runs: 312, μ: 48048, ~: 27641) +LibSortTest:testUniquifySorted(uint256) (runs: 313, μ: 48521, ~: 27693) LibSortTest:testUniquifySortedAddress() (gas: 4039) -LibSortTest:testUniquifySortedAddress(uint256) (runs: 312, μ: 48362, ~: 29297) -LibSortTest:testUniquifySortedDifferential(uint256) (runs: 312, μ: 43853, ~: 31791) +LibSortTest:testUniquifySortedAddress(uint256) (runs: 313, μ: 48282, ~: 29199) +LibSortTest:testUniquifySortedDifferential(uint256) (runs: 313, μ: 43826, ~: 31828) LibSortTest:testUniquifySortedWithEmptyArray() (gas: 506) LibSortTest:test__codesize() (gas: 21619) -LibStringTest:testAddressToHexStringZeroRightPadded(address) (runs: 312, μ: 3414, ~: 3414) +LibStringTest:testAddressToHexStringZeroRightPadded(address) (runs: 313, μ: 3414, ~: 3414) LibStringTest:testBytesToHexString() (gas: 4801) -LibStringTest:testBytesToHexString(bytes) (runs: 312, μ: 722535, ~: 622261) +LibStringTest:testBytesToHexString(bytes) (runs: 313, μ: 722214, ~: 622261) LibStringTest:testBytesToHexStringNoPrefix() (gas: 4489) -LibStringTest:testBytesToHexStringNoPrefix(bytes) (runs: 312, μ: 774435, ~: 621959) +LibStringTest:testBytesToHexStringNoPrefix(bytes) (runs: 313, μ: 773948, ~: 621959) LibStringTest:testContains() (gas: 43988) LibStringTest:testFromAddressToHexString() (gas: 3137) LibStringTest:testFromAddressToHexStringChecksummed() (gas: 35217) -LibStringTest:testFromAddressToHexStringChecksummedDifferential(uint256) (runs: 312, μ: 768064, ~: 610942) +LibStringTest:testFromAddressToHexStringChecksummedDifferential(uint256) (runs: 313, μ: 767562, ~: 610945) LibStringTest:testFromAddressToHexStringWithLeadingZeros() (gas: 3113) -LibStringTest:testHexStringNoPrefixVariants(uint256,uint256) (runs: 312, μ: 766118, ~: 620491) +LibStringTest:testHexStringNoPrefixVariants(uint256,uint256) (runs: 313, μ: 765634, ~: 620482) LibStringTest:testNormalizeSmallString() (gas: 1387) -LibStringTest:testNormalizeSmallString(bytes32) (runs: 312, μ: 3022, ~: 4213) +LibStringTest:testNormalizeSmallString(bytes32) (runs: 313, μ: 3017, ~: 4213) LibStringTest:testStringConcat() (gas: 4003) -LibStringTest:testStringConcat(string,string) (runs: 312, μ: 663761, ~: 602421) +LibStringTest:testStringConcat(string,string) (runs: 313, μ: 663565, ~: 602421) LibStringTest:testStringConcatOriginal() (gas: 4654) LibStringTest:testStringDirectReturn() (gas: 6741) -LibStringTest:testStringDirectReturn(string) (runs: 312, μ: 3001, ~: 2916) +LibStringTest:testStringDirectReturn(string) (runs: 313, μ: 3001, ~: 2916) LibStringTest:testStringEndsWith() (gas: 2829) -LibStringTest:testStringEndsWith(uint256) (runs: 312, μ: 761746, ~: 635222) -LibStringTest:testStringEq(string,string) (runs: 312, μ: 1566, ~: 1567) +LibStringTest:testStringEndsWith(uint256) (runs: 313, μ: 761326, ~: 635165) +LibStringTest:testStringEq(string,string) (runs: 313, μ: 1566, ~: 1567) LibStringTest:testStringEqs() (gas: 2013) LibStringTest:testStringEscapeHTML() (gas: 8427) -LibStringTest:testStringEscapeHTML(uint256) (runs: 312, μ: 768173, ~: 639759) +LibStringTest:testStringEscapeHTML(uint256) (runs: 313, μ: 767775, ~: 639759) LibStringTest:testStringEscapeJSON() (gas: 39797) LibStringTest:testStringEscapeJSONHexEncode() (gas: 725650) LibStringTest:testStringIndexOf() (gas: 17375) -LibStringTest:testStringIndexOf(uint256) (runs: 312, μ: 789343, ~: 642507) +LibStringTest:testStringIndexOf(uint256) (runs: 313, μ: 788899, ~: 642510) LibStringTest:testStringIndicesOf() (gas: 11700) -LibStringTest:testStringIndicesOf(uint256) (runs: 312, μ: 842424, ~: 647254) +LibStringTest:testStringIndicesOf(uint256) (runs: 313, μ: 841757, ~: 647235) LibStringTest:testStringIs7BitASCII() (gas: 205346) -LibStringTest:testStringIs7BitASCIIDifferential(bytes) (runs: 312, μ: 744784, ~: 602137) +LibStringTest:testStringIs7BitASCIIDifferential(bytes) (runs: 313, μ: 744348, ~: 602139) LibStringTest:testStringIs7BitASCIIWithAllowedLookup() (gas: 4939) -LibStringTest:testStringIs7BitASCIIWithAllowedLookupDifferential(bytes,uint128) (runs: 312, μ: 678038, ~: 601897) +LibStringTest:testStringIs7BitASCIIWithAllowedLookupDifferential(bytes,uint128) (runs: 313, μ: 677840, ~: 601900) LibStringTest:testStringLastIndexOf() (gas: 24042) -LibStringTest:testStringLastIndexOf(uint256) (runs: 312, μ: 761342, ~: 644109) +LibStringTest:testStringLastIndexOf(uint256) (runs: 313, μ: 760995, ~: 644289) LibStringTest:testStringLowerDifferential() (gas: 3405674) -LibStringTest:testStringLowerDifferential(string) (runs: 312, μ: 8309, ~: 7991) +LibStringTest:testStringLowerDifferential(string) (runs: 313, μ: 8313, ~: 7991) LibStringTest:testStringLowerOriginal() (gas: 1219) LibStringTest:testStringPackAndUnpackOne() (gas: 753921) -LibStringTest:testStringPackAndUnpackOne(string) (runs: 312, μ: 717695, ~: 601187) -LibStringTest:testStringPackAndUnpackOneDifferential(string) (runs: 312, μ: 748573, ~: 601003) +LibStringTest:testStringPackAndUnpackOne(string) (runs: 313, μ: 717322, ~: 601187) +LibStringTest:testStringPackAndUnpackOneDifferential(string) (runs: 313, μ: 748099, ~: 601003) LibStringTest:testStringPackAndUnpackTwo() (gas: 913201) -LibStringTest:testStringPackAndUnpackTwo(string,string) (runs: 312, μ: 706448, ~: 602502) -LibStringTest:testStringPackAndUnpackTwoDifferential(string,string) (runs: 312, μ: 666618, ~: 601999) +LibStringTest:testStringPackAndUnpackTwo(string,string) (runs: 313, μ: 706115, ~: 602502) +LibStringTest:testStringPackAndUnpackTwoDifferential(string,string) (runs: 313, μ: 666412, ~: 601999) LibStringTest:testStringRepeat() (gas: 4986) -LibStringTest:testStringRepeat(string,uint256) (runs: 312, μ: 752701, ~: 604551) +LibStringTest:testStringRepeat(string,uint256) (runs: 313, μ: 752223, ~: 604526) LibStringTest:testStringRepeatOriginal() (gas: 9620) -LibStringTest:testStringReplace(uint256) (runs: 312, μ: 701494, ~: 648329) +LibStringTest:testStringReplace(uint256) (runs: 313, μ: 701343, ~: 648356) LibStringTest:testStringReplaceLong() (gas: 8573) LibStringTest:testStringReplaceMedium() (gas: 7581) LibStringTest:testStringReplaceShort() (gas: 12329) LibStringTest:testStringRuneCount() (gas: 3035897) -LibStringTest:testStringRuneCountDifferential(string) (runs: 312, μ: 6130, ~: 5878) +LibStringTest:testStringRuneCountDifferential(string) (runs: 313, μ: 6134, ~: 5889) LibStringTest:testStringSlice() (gas: 9257) -LibStringTest:testStringSlice(bytes,uint256,uint256) (runs: 312, μ: 777216, ~: 626064) -LibStringTest:testStringSlice(uint256) (runs: 312, μ: 802047, ~: 640969) +LibStringTest:testStringSlice(bytes,uint256,uint256) (runs: 313, μ: 776732, ~: 626062) +LibStringTest:testStringSlice(uint256) (runs: 313, μ: 801611, ~: 640997) LibStringTest:testStringSplit() (gas: 20309) -LibStringTest:testStringSplit(uint256) (runs: 312, μ: 740726, ~: 645967) +LibStringTest:testStringSplit(uint256) (runs: 313, μ: 740672, ~: 645982) LibStringTest:testStringStartsWith() (gas: 2544) -LibStringTest:testStringStartsWith(uint256) (runs: 312, μ: 733686, ~: 634186) +LibStringTest:testStringStartsWith(uint256) (runs: 313, μ: 733406, ~: 634256) LibStringTest:testStringUpperDifferential() (gas: 3084191) -LibStringTest:testStringUpperDifferential(string) (runs: 312, μ: 8308, ~: 7990) +LibStringTest:testStringUpperDifferential(string) (runs: 313, μ: 8312, ~: 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: 312, μ: 8313, ~: 6491) +LibStringTest:testToHexStringFixedLengthZeroRightPadded(uint256,uint256) (runs: 313, μ: 8300, ~: 6478) LibStringTest:testToHexStringPositiveNumber() (gas: 865) LibStringTest:testToHexStringUint256Max() (gas: 3398) LibStringTest:testToHexStringZero() (gas: 805) -LibStringTest:testToHexStringZeroRightPadded(uint256) (runs: 312, μ: 1934, ~: 1548) +LibStringTest:testToHexStringZeroRightPadded(uint256) (runs: 313, μ: 1931, ~: 1548) LibStringTest:testToMinimalHexStringNoPrefixPositiveNumber() (gas: 3426) LibStringTest:testToMinimalHexStringNoPrefixUint256Max() (gas: 3424) LibStringTest:testToMinimalHexStringNoPrefixZero() (gas: 831) -LibStringTest:testToMinimalHexStringNoPrefixZeroRightPadded(uint256) (runs: 312, μ: 1954, ~: 1570) +LibStringTest:testToMinimalHexStringNoPrefixZeroRightPadded(uint256) (runs: 313, μ: 1952, ~: 1570) LibStringTest:testToMinimalHexStringPositiveNumber() (gas: 3556) LibStringTest:testToMinimalHexStringUint256Max() (gas: 3470) LibStringTest:testToMinimalHexStringZero() (gas: 829) -LibStringTest:testToMinimalHexStringZeroRightPadded(uint256) (runs: 312, μ: 1982, ~: 1595) +LibStringTest:testToMinimalHexStringZeroRightPadded(uint256) (runs: 313, μ: 1979, ~: 1595) LibStringTest:testToSmallString() (gas: 4448) LibStringTest:testToStringPositiveNumber() (gas: 910) LibStringTest:testToStringPositiveNumberBrutalized() (gas: 3013089) -LibStringTest:testToStringSignedDifferential(int256) (runs: 312, μ: 704225, ~: 604222) +LibStringTest:testToStringSignedDifferential(int256) (runs: 313, μ: 703895, ~: 604215) LibStringTest:testToStringSignedGas() (gas: 7305) -LibStringTest:testToStringSignedMemory(int256) (runs: 312, μ: 741276, ~: 602418) +LibStringTest:testToStringSignedMemory(int256) (runs: 313, μ: 740827, ~: 602413) LibStringTest:testToStringSignedOriginalGas() (gas: 9839) LibStringTest:testToStringUint256Max() (gas: 6687) LibStringTest:testToStringUint256MaxBrutalized() (gas: 612683) LibStringTest:testToStringZero() (gas: 699) LibStringTest:testToStringZeroBrutalized() (gas: 600697) -LibStringTest:testToStringZeroRightPadded(uint256) (runs: 312, μ: 702936, ~: 601846) +LibStringTest:testToStringZeroRightPadded(uint256) (runs: 313, μ: 707881, ~: 601880) LibStringTest:test__codesize() (gas: 43051) LibZipTest:testCdCompress() (gas: 126842) -LibZipTest:testCdCompressDecompress(bytes) (runs: 312, μ: 758942, ~: 652660) -LibZipTest:testCdCompressDecompress(uint256) (runs: 312, μ: 782377, ~: 671640) +LibZipTest:testCdCompressDecompress(bytes) (runs: 313, μ: 758598, ~: 652501) +LibZipTest:testCdCompressDecompress(uint256) (runs: 313, μ: 782080, ~: 671663) LibZipTest:testCdDecompressOnInvalidInput() (gas: 1397) LibZipTest:testCdFallback() (gas: 5622174) -LibZipTest:testCdFallback(bytes,uint256) (runs: 312, μ: 1168548, ~: 1052062) -LibZipTest:testCdFallbackDecompressor(bytes) (runs: 312, μ: 121504, ~: 118335) -LibZipTest:testCdFallbackDecompressor(uint256) (runs: 312, μ: 174417, ~: 159398) -LibZipTest:testCdFallbackMaskTrick(uint256,uint256) (runs: 312, μ: 595, ~: 585) -LibZipTest:testDecompressWontRevert(bytes) (runs: 312, μ: 681869, ~: 632952) +LibZipTest:testCdFallback(bytes,uint256) (runs: 313, μ: 1168151, ~: 1047950) +LibZipTest:testCdFallbackDecompressor(bytes) (runs: 313, μ: 121495, ~: 118335) +LibZipTest:testCdFallbackDecompressor(uint256) (runs: 313, μ: 174303, ~: 159322) +LibZipTest:testCdFallbackMaskTrick(uint256,uint256) (runs: 313, μ: 595, ~: 585) +LibZipTest:testDecompressWontRevert(bytes) (runs: 313, μ: 681706, ~: 632911) LibZipTest:testFlzCompressDecompress() (gas: 1249620) -LibZipTest:testFlzCompressDecompress(bytes) (runs: 312, μ: 763180, ~: 665538) +LibZipTest:testFlzCompressDecompress(bytes) (runs: 313, μ: 763035, ~: 665581) LibZipTest:testFlzCompressDecompress2() (gas: 758656) LibZipTest:test__codesize() (gas: 20344) -LifebuoyTest:testLifebuoyCreateDeployment(address,address,uint256) (runs: 312, μ: 3120455, ~: 3570652) -LifebuoyTest:testLifebuoyOwnedCloneRescuePermissions(bytes32) (runs: 312, μ: 940784, ~: 940737) -LifebuoyTest:testLifebuoyOwnedRescuePermissions(bytes32) (runs: 312, μ: 944909, ~: 936423) -LifebuoyTest:testLifebuoyRescuePermissions(bytes32) (runs: 312, μ: 925094, ~: 904364) +LifebuoyTest:testLifebuoyCreateDeployment(address,address,uint256) (runs: 313, μ: 3125259, ~: 3570652) +LifebuoyTest:testLifebuoyOwnedCloneRescuePermissions(bytes32) (runs: 313, μ: 940784, ~: 940737) +LifebuoyTest:testLifebuoyOwnedRescuePermissions(bytes32) (runs: 313, μ: 944881, ~: 936405) +LifebuoyTest:testLifebuoyRescuePermissions(bytes32) (runs: 313, μ: 925204, ~: 904397) LifebuoyTest:testLockEverything() (gas: 659396) LifebuoyTest:testLockRescue() (gas: 686867) LifebuoyTest:testLockRescueETH() (gas: 697996) -LifebuoyTest:testRescueERC20(uint256) (runs: 312, μ: 654420, ~: 655858) -LifebuoyTest:testRescueERC721(bytes32) (runs: 312, μ: 650623, ~: 650882) -LifebuoyTest:testRescueETH(uint256) (runs: 312, μ: 662914, ~: 663980) +LifebuoyTest:testRescueERC20(uint256) (runs: 313, μ: 654423, ~: 655856) +LifebuoyTest:testRescueERC721(bytes32) (runs: 313, μ: 650611, ~: 650882) +LifebuoyTest:testRescueETH(uint256) (runs: 313, μ: 662915, ~: 663974) LifebuoyTest:test__codesize() (gas: 31162) MerkleProofLibTest:testEmptyCalldataHelpers() (gas: 985) -MerkleProofLibTest:testVerifyMultiProof(bool,bool,bool,bool,bytes32) (runs: 312, μ: 757059, ~: 633082) -MerkleProofLibTest:testVerifyMultiProofForHeightOneTree(bool,bool,bool,bool,bool,bool[]) (runs: 312, μ: 37748, ~: 38826) -MerkleProofLibTest:testVerifyMultiProofForHeightTwoTree(bool,bool,bool,bool,bool,bytes32) (runs: 312, μ: 6506, ~: 6478) -MerkleProofLibTest:testVerifyMultiProofForSingleLeaf(bytes32[],uint256) (runs: 312, μ: 900377, ~: 802840) +MerkleProofLibTest:testVerifyMultiProof(bool,bool,bool,bool,bytes32) (runs: 313, μ: 756666, ~: 633092) +MerkleProofLibTest:testVerifyMultiProofForHeightOneTree(bool,bool,bool,bool,bool,bool[]) (runs: 313, μ: 37808, ~: 38830) +MerkleProofLibTest:testVerifyMultiProofForHeightTwoTree(bool,bool,bool,bool,bool,bytes32) (runs: 313, μ: 6506, ~: 6490) +MerkleProofLibTest:testVerifyMultiProofForSingleLeaf(bytes32[],uint256) (runs: 313, μ: 900111, ~: 803339) MerkleProofLibTest:testVerifyMultiProofIsInvalid() (gas: 631963) MerkleProofLibTest:testVerifyMultiProofIsValid() (gas: 633237) MerkleProofLibTest:testVerifyMultiProofMalicious() (gas: 7918) -MerkleProofLibTest:testVerifyProof(bytes32[],uint256) (runs: 312, μ: 868771, ~: 782357) -MerkleProofLibTest:testVerifyProofBasicCase(bool,bool,bool,bytes32) (runs: 312, μ: 4044, ~: 3906) +MerkleProofLibTest:testVerifyProof(bytes32[],uint256) (runs: 313, μ: 868544, ~: 782643) +MerkleProofLibTest:testVerifyProofBasicCase(bool,bool,bool,bytes32) (runs: 313, μ: 4043, ~: 3906) MerkleProofLibTest:testVerifyProofBasicCaseIsInvalid() (gas: 3626) MerkleProofLibTest:testVerifyProofBasicCaseIsValid() (gas: 3590) -MerkleProofLibTest:testVerifyProofForHeightOneTree(bool,bool,bool,bool) (runs: 312, μ: 2694, ~: 2968) +MerkleProofLibTest:testVerifyProofForHeightOneTree(bool,bool,bool,bool) (runs: 313, μ: 2693, ~: 2968) MerkleProofLibTest:test__codesize() (gas: 11663) -MetadataReaderLibTest:testBoundsCheckDifferential(uint256) (runs: 312, μ: 25478, ~: 25473) +MetadataReaderLibTest:testBoundsCheckDifferential(uint256) (runs: 313, μ: 25479, ~: 25474) MetadataReaderLibTest:testReadBytes32String() (gas: 667978) MetadataReaderLibTest:testReadBytes32StringTruncated() (gas: 782746) -MetadataReaderLibTest:testReadString(uint256) (runs: 312, μ: 843040, ~: 725350) +MetadataReaderLibTest:testReadString(uint256) (runs: 313, μ: 842609, ~: 725341) MetadataReaderLibTest:testReadStringChopped() (gas: 272350) -MetadataReaderLibTest:testReadStringTruncated(uint256) (runs: 312, μ: 832462, ~: 712767) +MetadataReaderLibTest:testReadStringTruncated(uint256) (runs: 313, μ: 832239, ~: 712768) MetadataReaderLibTest:testReadUint() (gas: 921729) -MetadataReaderLibTest:testReadUint(uint256) (runs: 312, μ: 46692, ~: 47136) +MetadataReaderLibTest:testReadUint(uint256) (runs: 313, μ: 46694, ~: 47136) MetadataReaderLibTest:test__codesize() (gas: 8049) -MinHeapLibTest:testHeapEnqueue(uint256) (runs: 312, μ: 181303, ~: 181221) -MinHeapLibTest:testHeapEnqueue2(uint256) (runs: 312, μ: 593316, ~: 451760) +MinHeapLibTest:testHeapEnqueue(uint256) (runs: 313, μ: 180970, ~: 181221) +MinHeapLibTest:testHeapEnqueue2(uint256) (runs: 313, μ: 592087, ~: 448944) MinHeapLibTest:testHeapEnqueueGas() (gas: 841356) -MinHeapLibTest:testHeapEnqueueZeroMaxLengthReverts(uint256) (runs: 312, μ: 46665, ~: 28352) -MinHeapLibTest:testHeapPSiftTrick(uint256,uint256,uint256) (runs: 312, μ: 687, ~: 517) -MinHeapLibTest:testHeapPushAndPop(uint256) (runs: 312, μ: 112950, ~: 124438) -MinHeapLibTest:testHeapPushPop(uint256) (runs: 312, μ: 244342, ~: 236557) -MinHeapLibTest:testHeapPushPopLength(uint256) (runs: 312, μ: 925930, ~: 858665) -MinHeapLibTest:testHeapReplace(uint256) (runs: 312, μ: 291059, ~: 288463) -MinHeapLibTest:testHeapReplaceOrPopEmptyHeapReverts(uint256) (runs: 312, μ: 45406, ~: 50632) -MinHeapLibTest:testHeapRoot(uint256) (runs: 312, μ: 47143, ~: 47448) -MinHeapLibTest:testHeapSmallest(uint256) (runs: 312, μ: 1312474, ~: 1179015) +MinHeapLibTest:testHeapEnqueueZeroMaxLengthReverts(uint256) (runs: 313, μ: 46732, ~: 28352) +MinHeapLibTest:testHeapPSiftTrick(uint256,uint256,uint256) (runs: 313, μ: 686, ~: 517) +MinHeapLibTest:testHeapPushAndPop(uint256) (runs: 313, μ: 113236, ~: 124443) +MinHeapLibTest:testHeapPushPop(uint256) (runs: 313, μ: 244461, ~: 237201) +MinHeapLibTest:testHeapPushPopLength(uint256) (runs: 313, μ: 937167, ~: 859344) +MinHeapLibTest:testHeapReplace(uint256) (runs: 313, μ: 290683, ~: 288455) +MinHeapLibTest:testHeapReplaceOrPopEmptyHeapReverts(uint256) (runs: 313, μ: 45353, ~: 50631) +MinHeapLibTest:testHeapRoot(uint256) (runs: 313, μ: 47207, ~: 47448) +MinHeapLibTest:testHeapSmallest(uint256) (runs: 313, μ: 1310998, ~: 1178434) MinHeapLibTest:testHeapSmallestGas() (gas: 50069382) -MinHeapLibTest:testMemHeapEnqueue(uint256) (runs: 312, μ: 1589998, ~: 949556) -MinHeapLibTest:testMemHeapEnqueue2(uint256) (runs: 312, μ: 857780, ~: 751287) +MinHeapLibTest:testMemHeapEnqueue(uint256) (runs: 313, μ: 1587796, ~: 948314) +MinHeapLibTest:testMemHeapEnqueue2(uint256) (runs: 313, μ: 857976, ~: 751850) MinHeapLibTest:testMemHeapEnqueueGas() (gas: 249458) -MinHeapLibTest:testMemHeapEnqueueZeroMaxLengthReverts(uint256) (runs: 312, μ: 25030, ~: 23899) -MinHeapLibTest:testMemHeapPushAndPop(uint256) (runs: 312, μ: 931876, ~: 842912) +MinHeapLibTest:testMemHeapEnqueueZeroMaxLengthReverts(uint256) (runs: 313, μ: 25026, ~: 23896) +MinHeapLibTest:testMemHeapPushAndPop(uint256) (runs: 313, μ: 931010, ~: 842142) MinHeapLibTest:testMemHeapPushGas() (gas: 35596) -MinHeapLibTest:testMemHeapPushPop(uint256) (runs: 312, μ: 1174888, ~: 1050991) -MinHeapLibTest:testMemHeapPushPopLength(uint256) (runs: 312, μ: 787245, ~: 702133) -MinHeapLibTest:testMemHeapReplace(uint256) (runs: 312, μ: 906143, ~: 781948) -MinHeapLibTest:testMemHeapReplaceOrPopEmptyHeapReverts(uint256) (runs: 312, μ: 25697, ~: 25269) -MinHeapLibTest:testMemHeapRoot(uint256) (runs: 312, μ: 741169, ~: 649627) -MinHeapLibTest:testMemHeapSmallest(uint256) (runs: 312, μ: 877145, ~: 758521) +MinHeapLibTest:testMemHeapPushPop(uint256) (runs: 313, μ: 1174077, ~: 1050000) +MinHeapLibTest:testMemHeapPushPopLength(uint256) (runs: 313, μ: 786966, ~: 702092) +MinHeapLibTest:testMemHeapReplace(uint256) (runs: 313, μ: 905746, ~: 781921) +MinHeapLibTest:testMemHeapReplaceOrPopEmptyHeapReverts(uint256) (runs: 313, μ: 25693, ~: 25269) +MinHeapLibTest:testMemHeapRoot(uint256) (runs: 313, μ: 740876, ~: 649611) +MinHeapLibTest:testMemHeapSmallest(uint256) (runs: 313, μ: 877021, ~: 758912) MinHeapLibTest:testMemHeapSmallestGas() (gas: 2985537) MinHeapLibTest:testMemHeapWriteAndReadFromStorage() (gas: 67756) MinHeapLibTest:testMemHeapWriteAndReadFromStorage2() (gas: 67774) @@ -1030,66 +1030,66 @@ MulticallableTest:testMulticallableBenchmark() (gas: 29642) MulticallableTest:testMulticallableOriginalBenchmark() (gas: 38935) MulticallableTest:testMulticallablePreservesMsgSender() (gas: 11166) MulticallableTest:testMulticallableReturnDataIsProperlyEncoded() (gas: 11665) -MulticallableTest:testMulticallableReturnDataIsProperlyEncoded(string,string,uint256) (runs: 312, μ: 12116, ~: 7437) -MulticallableTest:testMulticallableReturnDataIsProperlyEncoded(uint256,uint256,uint256,uint256) (runs: 312, μ: 11811, ~: 11811) +MulticallableTest:testMulticallableReturnDataIsProperlyEncoded(string,string,uint256) (runs: 313, μ: 12124, ~: 7437) +MulticallableTest:testMulticallableReturnDataIsProperlyEncoded(uint256,uint256,uint256,uint256) (runs: 313, μ: 11811, ~: 11811) MulticallableTest:testMulticallableRevertWithCustomError() (gas: 11811) MulticallableTest:testMulticallableRevertWithMessage() (gas: 13483) -MulticallableTest:testMulticallableRevertWithMessage(string) (runs: 312, μ: 14093, ~: 13944) +MulticallableTest:testMulticallableRevertWithMessage(string) (runs: 313, μ: 14094, ~: 13944) MulticallableTest:testMulticallableRevertWithNothing() (gas: 11673) MulticallableTest:testMulticallableWithNoData() (gas: 6286) MulticallableTest:test__codesize() (gas: 8867) OwnableRolesTest:testBytecodeSize() (gas: 350635) -OwnableRolesTest:testGrantAndRemoveRolesDirect(address,uint256,uint256) (runs: 312, μ: 40116, ~: 40750) -OwnableRolesTest:testGrantAndRevokeOrRenounceRoles(address,bool,bool,bool,uint256,uint256) (runs: 312, μ: 27451, ~: 27899) +OwnableRolesTest:testGrantAndRemoveRolesDirect(address,uint256,uint256) (runs: 313, μ: 40118, ~: 40750) +OwnableRolesTest:testGrantAndRevokeOrRenounceRoles(address,bool,bool,bool,uint256,uint256) (runs: 313, μ: 27505, ~: 31153) OwnableRolesTest:testGrantRoles() (gas: 36136) OwnableRolesTest:testHandoverOwnership() (gas: 32394) -OwnableRolesTest:testHandoverOwnership(address) (runs: 312, μ: 32434, ~: 32420) +OwnableRolesTest:testHandoverOwnership(address) (runs: 313, μ: 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: 312, μ: 33583, ~: 33580) -OwnableRolesTest:testHasAnyRole(address,uint256,uint256) (runs: 312, μ: 33183, ~: 33375) +OwnableRolesTest:testHasAllRoles(address,uint256,uint256,uint256,bool) (runs: 313, μ: 33583, ~: 33580) +OwnableRolesTest:testHasAnyRole(address,uint256,uint256) (runs: 313, μ: 33184, ~: 33375) OwnableRolesTest:testInitializeOwnerDirect() (gas: 16738) -OwnableRolesTest:testOnlyOwnerModifier(address,bool) (runs: 312, μ: 21080, ~: 30023) +OwnableRolesTest:testOnlyOwnerModifier(address,bool) (runs: 313, μ: 21109, ~: 30023) OwnableRolesTest:testOnlyOwnerOrRolesModifier() (gas: 36238) -OwnableRolesTest:testOnlyOwnerOrRolesModifier(address,bool,uint256,uint256) (runs: 312, μ: 55561, ~: 55110) -OwnableRolesTest:testOnlyRolesModifier(address,uint256,uint256) (runs: 312, μ: 56038, ~: 57903) -OwnableRolesTest:testOnlyRolesOrOwnerModifier(address,bool,uint256,uint256) (runs: 312, μ: 56522, ~: 57277) +OwnableRolesTest:testOnlyOwnerOrRolesModifier(address,bool,uint256,uint256) (runs: 313, μ: 55559, ~: 55110) +OwnableRolesTest:testOnlyRolesModifier(address,uint256,uint256) (runs: 313, μ: 56044, ~: 57903) +OwnableRolesTest:testOnlyRolesOrOwnerModifier(address,bool,uint256,uint256) (runs: 313, μ: 56525, ~: 57277) OwnableRolesTest:testOrdinalsFromRoles() (gas: 3756443) -OwnableRolesTest:testOrdinalsFromRoles(uint256) (runs: 312, μ: 59177, ~: 44958) +OwnableRolesTest:testOrdinalsFromRoles(uint256) (runs: 313, μ: 59097, ~: 44490) OwnableRolesTest:testOwnershipHandoverValidForDefaultValue() (gas: 5825) OwnableRolesTest:testRenounceOwnership() (gas: 12921) OwnableRolesTest:testRolesFromOrdinals() (gas: 652364) -OwnableRolesTest:testRolesFromOrdinals(uint8[]) (runs: 312, μ: 81413, ~: 84732) +OwnableRolesTest:testRolesFromOrdinals(uint8[]) (runs: 313, μ: 81461, ~: 85017) OwnableRolesTest:testSetOwnerDirect() (gas: 17790) -OwnableRolesTest:testSetOwnerDirect(address) (runs: 312, μ: 17915, ~: 17915) -OwnableRolesTest:testSetRolesDirect(uint256) (runs: 312, μ: 99806, ~: 99925) +OwnableRolesTest:testSetOwnerDirect(address) (runs: 313, μ: 17915, ~: 17915) +OwnableRolesTest:testSetRolesDirect(uint256) (runs: 313, μ: 99808, ~: 99925) OwnableRolesTest:testTransferOwnership() (gas: 19313) -OwnableRolesTest:testTransferOwnership(address,bool,bool) (runs: 312, μ: 14214, ~: 12377) +OwnableRolesTest:testTransferOwnership(address,bool,bool) (runs: 313, μ: 14208, ~: 12377) OwnableRolesTest:test__codesize() (gas: 21655) OwnableTest:testBytecodeSize() (gas: 235158) OwnableTest:testHandoverOwnership() (gas: 32127) -OwnableTest:testHandoverOwnership(address) (runs: 312, μ: 32149, ~: 32136) +OwnableTest:testHandoverOwnership(address) (runs: 313, μ: 32149, ~: 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: 312, μ: 21027, ~: 30001) +OwnableTest:testOnlyOwnerModifier(address,bool) (runs: 313, μ: 21056, ~: 30001) OwnableTest:testOwnershipHandoverValidForDefaultValue() (gas: 5737) OwnableTest:testRenounceOwnership() (gas: 12755) OwnableTest:testSetOwnerDirect() (gas: 17700) -OwnableTest:testSetOwnerDirect(address) (runs: 312, μ: 17810, ~: 17826) +OwnableTest:testSetOwnerDirect(address) (runs: 313, μ: 17810, ~: 17826) OwnableTest:testTransferOwnership() (gas: 19210) -OwnableTest:testTransferOwnership(address,bool,bool) (runs: 312, μ: 13992, ~: 12183) +OwnableTest:testTransferOwnership(address,bool,bool) (runs: 313, μ: 13987, ~: 12183) OwnableTest:test__codesize() (gas: 11003) -P256Test:testP256Verify(uint256,bytes32) (runs: 312, μ: 493363, ~: 493174) +P256Test:testP256Verify(uint256,bytes32) (runs: 313, μ: 493361, ~: 493138) 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: 312, μ: 10815, ~: 10799) +P256Test:testP256VerifyNotDeployedReverts(bytes32,bytes32,bytes32,bytes32,bytes32,bool) (runs: 313, μ: 10815, ~: 10799) P256Test:testP256VerifyOutOfBounds() (gas: 201377) P256Test:testP256VerifyWycheproof() (gas: 3268) P256Test:test__codesize() (gas: 11373) @@ -1100,8 +1100,8 @@ ReceiverTest:testOnERC721Received() (gas: 64593) ReceiverTest:test__codesize() (gas: 3053) RedBlackTreeLibTest:testRedBlackTreeBenchUint160() (gas: 3428194) RedBlackTreeLibTest:testRedBlackTreeBenchUint256() (gas: 5841865) -RedBlackTreeLibTest:testRedBlackTreeInsertAndRemove(uint256) (runs: 312, μ: 549832, ~: 535382) -RedBlackTreeLibTest:testRedBlackTreeInsertAndRemove2(uint256) (runs: 312, μ: 426892, ~: 433250) +RedBlackTreeLibTest:testRedBlackTreeInsertAndRemove(uint256) (runs: 313, μ: 548799, ~: 535248) +RedBlackTreeLibTest:testRedBlackTreeInsertAndRemove2(uint256) (runs: 313, μ: 427849, ~: 433772) RedBlackTreeLibTest:testRedBlackTreeInsertAndRemove3() (gas: 21527899) RedBlackTreeLibTest:testRedBlackTreeInsertBenchStep() (gas: 3702908) RedBlackTreeLibTest:testRedBlackTreeInsertBenchUint160() (gas: 3468526) @@ -1110,16 +1110,16 @@ RedBlackTreeLibTest:testRedBlackTreeInsertOneGas() (gas: 45558) RedBlackTreeLibTest:testRedBlackTreeInsertTenGas() (gas: 282691) RedBlackTreeLibTest:testRedBlackTreeInsertThreeGas() (gas: 96175) RedBlackTreeLibTest:testRedBlackTreeInsertTwoGas() (gas: 69785) -RedBlackTreeLibTest:testRedBlackTreeNearest(uint256) (runs: 312, μ: 251703, ~: 249019) -RedBlackTreeLibTest:testRedBlackTreeNearestAfter(uint256) (runs: 312, μ: 244992, ~: 227366) -RedBlackTreeLibTest:testRedBlackTreeNearestBefore(uint256) (runs: 312, μ: 272441, ~: 274022) +RedBlackTreeLibTest:testRedBlackTreeNearest(uint256) (runs: 313, μ: 252114, ~: 249034) +RedBlackTreeLibTest:testRedBlackTreeNearestAfter(uint256) (runs: 313, μ: 244623, ~: 227187) +RedBlackTreeLibTest:testRedBlackTreeNearestBefore(uint256) (runs: 313, μ: 272822, ~: 274243) RedBlackTreeLibTest:testRedBlackTreePointers() (gas: 91643) RedBlackTreeLibTest:testRedBlackTreeRejectsEmptyValue() (gas: 3232) RedBlackTreeLibTest:testRedBlackTreeRemoveViaPointer() (gas: 58157) RedBlackTreeLibTest:testRedBlackTreeTreeFullReverts() (gas: 50317) RedBlackTreeLibTest:testRedBlackTreeTryInsertAndRemove() (gas: 56062) RedBlackTreeLibTest:testRedBlackTreeValues() (gas: 188548) -RedBlackTreeLibTest:testRedBlackTreeValues(uint256) (runs: 312, μ: 382915, ~: 243302) +RedBlackTreeLibTest:testRedBlackTreeValues(uint256) (runs: 313, μ: 387905, ~: 244098) RedBlackTreeLibTest:test__codesize() (gas: 13131) ReentrancyGuardTest:testRecursiveDirectUnguardedCall() (gas: 34276) ReentrancyGuardTest:testRecursiveIndirectUnguardedCall() (gas: 47727) @@ -1129,109 +1129,109 @@ ReentrancyGuardTest:testRevertRecursiveDirectGuardedCall() (gas: 55123) ReentrancyGuardTest:testRevertRecursiveIndirectGuardedCall() (gas: 56529) ReentrancyGuardTest:testRevertRemoteCallback() (gas: 56230) ReentrancyGuardTest:test__codesize() (gas: 4403) -SSTORE2Test:testReadRevertsOnZeroCodeAddress(address) (runs: 312, μ: 102029, ~: 29905) +SSTORE2Test:testReadRevertsOnZeroCodeAddress(address) (runs: 313, μ: 101803, ~: 29905) SSTORE2Test:testReadSlicing() (gas: 48874) SSTORE2Test:testWriteRead() (gas: 35880) -SSTORE2Test:testWriteRead(uint256,uint256) (runs: 312, μ: 1066177, ~: 67384) -SSTORE2Test:testWriteReadCounterfactual(bytes,bytes32,address) (runs: 312, μ: 4145659, ~: 108268) +SSTORE2Test:testWriteRead(uint256,uint256) (runs: 313, μ: 1063006, ~: 67390) +SSTORE2Test:testWriteReadCounterfactual(bytes,bytes32,address) (runs: 313, μ: 4132760, ~: 108268) SSTORE2Test:testWriteReadCustomBounds() (gas: 33936) SSTORE2Test:testWriteReadCustomStartBound() (gas: 34020) SSTORE2Test:testWriteReadDeterministic() (gas: 70156) -SSTORE2Test:testWriteReadDeterministic(bytes,bytes32) (runs: 312, μ: 3511260, ~: 96728) +SSTORE2Test:testWriteReadDeterministic(bytes,bytes32) (runs: 313, μ: 3500351, ~: 96728) SSTORE2Test:testWriteReadEmptyBound() (gas: 33734) SSTORE2Test:testWriteReadFullBoundedRead() (gas: 35937) SSTORE2Test:testWriteReadFullStartBound() (gas: 33983) SSTORE2Test:testWriteWithTooBigDataReverts() (gas: 97303641) SSTORE2Test:test__codesize() (gas: 8483) -SafeCastLibTest:testSafeCastInt256ToInt(int256,uint256) (runs: 312, μ: 19048, ~: 24771) +SafeCastLibTest:testSafeCastInt256ToInt(int256,uint256) (runs: 313, μ: 19078, ~: 24773) SafeCastLibTest:testSafeCastInt256ToIntBench() (gas: 341694) -SafeCastLibTest:testSafeCastInt256ToIntTrickEquivalence(int256) (runs: 312, μ: 406, ~: 406) -SafeCastLibTest:testSafeCastToInt256(uint256) (runs: 312, μ: 496, ~: 405) -SafeCastLibTest:testSafeCastToUint256(int256) (runs: 312, μ: 1302, ~: 428) -SafeCastLibTest:testSafeCastUint256ToInt(uint256,uint256) (runs: 312, μ: 26988, ~: 26186) +SafeCastLibTest:testSafeCastInt256ToIntTrickEquivalence(int256) (runs: 313, μ: 406, ~: 406) +SafeCastLibTest:testSafeCastToInt256(uint256) (runs: 313, μ: 496, ~: 405) +SafeCastLibTest:testSafeCastToUint256(int256) (runs: 313, μ: 1299, ~: 428) +SafeCastLibTest:testSafeCastUint256ToInt(uint256,uint256) (runs: 313, μ: 26997, ~: 26187) SafeCastLibTest:testSafeCastUint256ToInt256Bench() (gas: 29380) SafeCastLibTest:testSafeCastUint256ToIntBench() (gas: 330222) SafeCastLibTest:testSafeCastUint256ToUintBench() (gas: 326262) -SafeCastLibTest:testSafeCastUintToUint(uint256,uint256) (runs: 312, μ: 19139, ~: 24811) +SafeCastLibTest:testSafeCastUintToUint(uint256,uint256) (runs: 313, μ: 19158, ~: 24811) SafeCastLibTest:test__codesize() (gas: 23416) -SafeTransferLibTest:testApproveWithGarbageReverts(address,uint256) (runs: 312, μ: 110234, ~: 123658) +SafeTransferLibTest:testApproveWithGarbageReverts(address,uint256) (runs: 313, μ: 110277, ~: 123658) SafeTransferLibTest:testApproveWithMissingReturn() (gas: 32065) -SafeTransferLibTest:testApproveWithMissingReturn(address,uint256) (runs: 312, μ: 32157, ~: 32285) +SafeTransferLibTest:testApproveWithMissingReturn(address,uint256) (runs: 313, μ: 32157, ~: 32285) SafeTransferLibTest:testApproveWithNonContract() (gas: 2967) -SafeTransferLibTest:testApproveWithNonContract(address,address,uint256) (runs: 312, μ: 3552, ~: 3613) -SafeTransferLibTest:testApproveWithNonGarbage(address,uint256) (runs: 312, μ: 79580, ~: 59368) +SafeTransferLibTest:testApproveWithNonContract(address,address,uint256) (runs: 313, μ: 3552, ~: 3613) +SafeTransferLibTest:testApproveWithNonGarbage(address,uint256) (runs: 313, μ: 79651, ~: 59368) SafeTransferLibTest:testApproveWithRetry() (gas: 839894) -SafeTransferLibTest:testApproveWithRetry(address,uint256,uint256) (runs: 312, μ: 839742, ~: 840010) +SafeTransferLibTest:testApproveWithRetry(address,uint256,uint256) (runs: 313, μ: 839743, ~: 840010) SafeTransferLibTest:testApproveWithRetryWithNonContract() (gas: 2990) -SafeTransferLibTest:testApproveWithRetryWithNonContract(address,address,uint256) (runs: 312, μ: 3571, ~: 3632) +SafeTransferLibTest:testApproveWithRetryWithNonContract(address,address,uint256) (runs: 313, μ: 3571, ~: 3632) SafeTransferLibTest:testApproveWithReturnsFalseReverts() (gas: 9713) -SafeTransferLibTest:testApproveWithReturnsFalseReverts(address,uint256) (runs: 312, μ: 9866, ~: 9866) +SafeTransferLibTest:testApproveWithReturnsFalseReverts(address,uint256) (runs: 313, μ: 9866, ~: 9866) SafeTransferLibTest:testApproveWithReturnsTooLittleReverts() (gas: 9617) -SafeTransferLibTest:testApproveWithReturnsTooLittleReverts(address,uint256) (runs: 312, μ: 9795, ~: 9795) +SafeTransferLibTest:testApproveWithReturnsTooLittleReverts(address,uint256) (runs: 313, μ: 9795, ~: 9795) SafeTransferLibTest:testApproveWithReturnsTooMuch() (gas: 32511) -SafeTransferLibTest:testApproveWithReturnsTooMuch(address,uint256) (runs: 312, μ: 32541, ~: 32669) -SafeTransferLibTest:testApproveWithReturnsTwoReverts(address,uint256) (runs: 312, μ: 9823, ~: 9823) +SafeTransferLibTest:testApproveWithReturnsTooMuch(address,uint256) (runs: 313, μ: 32541, ~: 32669) +SafeTransferLibTest:testApproveWithReturnsTwoReverts(address,uint256) (runs: 313, μ: 9823, ~: 9823) SafeTransferLibTest:testApproveWithRevertingReverts() (gas: 9574) -SafeTransferLibTest:testApproveWithRevertingReverts(address,uint256) (runs: 312, μ: 9784, ~: 9784) +SafeTransferLibTest:testApproveWithRevertingReverts(address,uint256) (runs: 313, μ: 9784, ~: 9784) SafeTransferLibTest:testApproveWithStandardERC20() (gas: 31951) -SafeTransferLibTest:testApproveWithStandardERC20(address,uint256) (runs: 312, μ: 32045, ~: 32173) +SafeTransferLibTest:testApproveWithStandardERC20(address,uint256) (runs: 313, μ: 32045, ~: 32173) SafeTransferLibTest:testBalanceOfStandardERC20() (gas: 7852) -SafeTransferLibTest:testBalanceOfStandardERC20(address,uint256) (runs: 312, μ: 37176, ~: 37498) +SafeTransferLibTest:testBalanceOfStandardERC20(address,uint256) (runs: 313, μ: 37177, ~: 37498) SafeTransferLibTest:testForceTransferETHToGriever() (gas: 1511587) -SafeTransferLibTest:testForceTransferETHToGriever(uint256,uint256) (runs: 312, μ: 536028, ~: 570885) +SafeTransferLibTest:testForceTransferETHToGriever(uint256,uint256) (runs: 313, μ: 536139, ~: 570885) SafeTransferLibTest:testPermit2() (gas: 88950) -SafeTransferLibTest:testPermit2InvalidAmount(uint256) (runs: 312, μ: 102081, ~: 102079) +SafeTransferLibTest:testPermit2InvalidAmount(uint256) (runs: 313, μ: 102082, ~: 102116) SafeTransferLibTest:testPermit2OnDAI() (gas: 89147) -SafeTransferLibTest:testPermit2TransferFromInvalidAmount(uint256) (runs: 312, μ: 135539, ~: 135892) +SafeTransferLibTest:testPermit2TransferFromInvalidAmount(uint256) (runs: 313, μ: 135540, ~: 135892) SafeTransferLibTest:testSimplePermit2AndPermit2TransferFrom() (gas: 1117812) SafeTransferLibTest:testSimplePermit2AndPermit2TransferFromGas() (gas: 139429) SafeTransferLibTest:testTransferAllETH() (gas: 34643) -SafeTransferLibTest:testTransferAllETH(bytes32) (runs: 312, μ: 57052, ~: 57052) +SafeTransferLibTest:testTransferAllETH(bytes32) (runs: 313, μ: 57052, ~: 57052) SafeTransferLibTest:testTransferAllETHToContractWithoutFallbackReverts() (gas: 10782) -SafeTransferLibTest:testTransferAllETHToContractWithoutFallbackReverts(uint256) (runs: 312, μ: 10869, ~: 10869) +SafeTransferLibTest:testTransferAllETHToContractWithoutFallbackReverts(uint256) (runs: 313, μ: 10869, ~: 10869) SafeTransferLibTest:testTransferAllFromWithStandardERC20() (gas: 33323) -SafeTransferLibTest:testTransferAllFromWithStandardERC20(address,address,uint256) (runs: 312, μ: 56738, ~: 56720) +SafeTransferLibTest:testTransferAllFromWithStandardERC20(address,address,uint256) (runs: 313, μ: 56738, ~: 56720) SafeTransferLibTest:testTransferAllWithStandardERC20() (gas: 30832) -SafeTransferLibTest:testTransferAllWithStandardERC20(address,uint256) (runs: 312, μ: 39342, ~: 39342) +SafeTransferLibTest:testTransferAllWithStandardERC20(address,uint256) (runs: 313, μ: 39342, ~: 39342) SafeTransferLibTest:testTransferETH() (gas: 34622) -SafeTransferLibTest:testTransferETH(bytes32,uint256) (runs: 312, μ: 56986, ~: 57320) +SafeTransferLibTest:testTransferETH(bytes32,uint256) (runs: 313, μ: 56987, ~: 57320) SafeTransferLibTest:testTransferETHToContractWithoutFallbackReverts() (gas: 10851) -SafeTransferLibTest:testTransferETHToContractWithoutFallbackReverts(uint256) (runs: 312, μ: 10720, ~: 10888) -SafeTransferLibTest:testTransferFromWithGarbageReverts(address,address,uint256) (runs: 312, μ: 801153, ~: 699300) +SafeTransferLibTest:testTransferETHToContractWithoutFallbackReverts(uint256) (runs: 313, μ: 10721, ~: 10888) +SafeTransferLibTest:testTransferFromWithGarbageReverts(address,address,uint256) (runs: 313, μ: 800838, ~: 699300) SafeTransferLibTest:testTransferFromWithMissingReturn() (gas: 564163) -SafeTransferLibTest:testTransferFromWithMissingReturn(address,address,uint256) (runs: 312, μ: 687038, ~: 564840) +SafeTransferLibTest:testTransferFromWithMissingReturn(address,address,uint256) (runs: 313, μ: 686648, ~: 564840) SafeTransferLibTest:testTransferFromWithNonContract() (gas: 3066) -SafeTransferLibTest:testTransferFromWithNonContract(address,address,address,uint256) (runs: 312, μ: 3840, ~: 3861) -SafeTransferLibTest:testTransferFromWithNonGarbage(address,address,uint256) (runs: 312, μ: 741645, ~: 615035) +SafeTransferLibTest:testTransferFromWithNonContract(address,address,address,uint256) (runs: 313, μ: 3840, ~: 3861) +SafeTransferLibTest:testTransferFromWithNonGarbage(address,address,uint256) (runs: 313, μ: 741242, ~: 615044) SafeTransferLibTest:testTransferFromWithReturnsFalseReverts() (gas: 530320) -SafeTransferLibTest:testTransferFromWithReturnsFalseReverts(address,address,uint256) (runs: 312, μ: 644254, ~: 530740) +SafeTransferLibTest:testTransferFromWithReturnsFalseReverts(address,address,uint256) (runs: 313, μ: 643891, ~: 530740) SafeTransferLibTest:testTransferFromWithReturnsTooLittleReverts() (gas: 530297) -SafeTransferLibTest:testTransferFromWithReturnsTooLittleReverts(address,address,uint256) (runs: 312, μ: 691363, ~: 530535) +SafeTransferLibTest:testTransferFromWithReturnsTooLittleReverts(address,address,uint256) (runs: 313, μ: 690848, ~: 530535) SafeTransferLibTest:testTransferFromWithReturnsTooMuch() (gas: 564800) -SafeTransferLibTest:testTransferFromWithReturnsTooMuch(address,address,uint256) (runs: 312, μ: 688404, ~: 565446) -SafeTransferLibTest:testTransferFromWithReturnsTwoReverts(address,address,uint256) (runs: 312, μ: 607617, ~: 530619) +SafeTransferLibTest:testTransferFromWithReturnsTooMuch(address,address,uint256) (runs: 313, μ: 688010, ~: 565302) +SafeTransferLibTest:testTransferFromWithReturnsTwoReverts(address,address,uint256) (runs: 313, μ: 607371, ~: 530619) SafeTransferLibTest:testTransferFromWithRevertingReverts() (gas: 523583) -SafeTransferLibTest:testTransferFromWithRevertingReverts(address,address,uint256) (runs: 312, μ: 596709, ~: 523730) +SafeTransferLibTest:testTransferFromWithRevertingReverts(address,address,uint256) (runs: 313, μ: 596476, ~: 523720) SafeTransferLibTest:testTransferFromWithStandardERC20() (gas: 562845) -SafeTransferLibTest:testTransferFromWithStandardERC20(address,address,uint256) (runs: 312, μ: 705628, ~: 562356) -SafeTransferLibTest:testTransferWithGarbageReverts(address,uint256) (runs: 312, μ: 722198, ~: 643692) +SafeTransferLibTest:testTransferFromWithStandardERC20(address,address,uint256) (runs: 313, μ: 705172, ~: 562356) +SafeTransferLibTest:testTransferWithGarbageReverts(address,uint256) (runs: 313, μ: 721943, ~: 642746) SafeTransferLibTest:testTransferWithMissingReturn() (gas: 550861) -SafeTransferLibTest:testTransferWithMissingReturn(address,uint256) (runs: 312, μ: 632993, ~: 551229) +SafeTransferLibTest:testTransferWithMissingReturn(address,uint256) (runs: 313, μ: 637211, ~: 551229) SafeTransferLibTest:testTransferWithNonContract() (gas: 3010) -SafeTransferLibTest:testTransferWithNonContract(bytes32,address,uint256) (runs: 312, μ: 25919, ~: 25919) -SafeTransferLibTest:testTransferWithNonGarbage(address,uint256) (runs: 312, μ: 666854, ~: 578440) +SafeTransferLibTest:testTransferWithNonContract(bytes32,address,uint256) (runs: 313, μ: 25919, ~: 25919) +SafeTransferLibTest:testTransferWithNonGarbage(address,uint256) (runs: 313, μ: 666571, ~: 578418) SafeTransferLibTest:testTransferWithReturnsFalseReverts() (gas: 527368) -SafeTransferLibTest:testTransferWithReturnsFalseReverts(address,uint256) (runs: 312, μ: 622986, ~: 527646) +SafeTransferLibTest:testTransferWithReturnsFalseReverts(address,uint256) (runs: 313, μ: 622681, ~: 527646) SafeTransferLibTest:testTransferWithReturnsTooLittleReverts() (gas: 527576) -SafeTransferLibTest:testTransferWithReturnsTooLittleReverts(address,uint256) (runs: 312, μ: 557842, ~: 527549) +SafeTransferLibTest:testTransferWithReturnsTooLittleReverts(address,uint256) (runs: 313, μ: 557746, ~: 527549) SafeTransferLibTest:testTransferWithReturnsTooMuch() (gas: 551262) -SafeTransferLibTest:testTransferWithReturnsTooMuch(address,uint256) (runs: 312, μ: 646867, ~: 551686) -SafeTransferLibTest:testTransferWithReturnsTwoReverts(address,uint256) (runs: 312, μ: 647668, ~: 527646) +SafeTransferLibTest:testTransferWithReturnsTooMuch(address,uint256) (runs: 313, μ: 646563, ~: 551686) +SafeTransferLibTest:testTransferWithReturnsTwoReverts(address,uint256) (runs: 313, μ: 647284, ~: 527646) SafeTransferLibTest:testTransferWithRevertingReverts() (gas: 527283) -SafeTransferLibTest:testTransferWithRevertingReverts(address,uint256) (runs: 312, μ: 663707, ~: 527582) +SafeTransferLibTest:testTransferWithRevertingReverts(address,uint256) (runs: 313, μ: 663271, ~: 527582) SafeTransferLibTest:testTransferWithStandardERC20() (gas: 551528) -SafeTransferLibTest:testTransferWithStandardERC20(address,uint256) (runs: 312, μ: 643191, ~: 551499) -SafeTransferLibTest:testTrySafeTransferFrom(address,address,uint256) (runs: 312, μ: 108520, ~: 111595) +SafeTransferLibTest:testTransferWithStandardERC20(address,uint256) (runs: 313, μ: 642898, ~: 551499) +SafeTransferLibTest:testTrySafeTransferFrom(address,address,uint256) (runs: 313, μ: 108530, ~: 111595) SafeTransferLibTest:testTryTransferAllETH() (gas: 148698) SafeTransferLibTest:testTryTransferETH() (gas: 148701) SafeTransferLibTest:testTryTransferETHWithNoGrief() (gas: 537025) @@ -1244,7 +1244,7 @@ SignatureCheckerLibTest:testERC6492PreDeploy() (gas: 1226946) SignatureCheckerLibTest:testERC6492WithoutRevertingVerifier() (gas: 61787) SignatureCheckerLibTest:testEmptyCalldataHelpers() (gas: 3987) SignatureCheckerLibTest:testEtchERC6492RevertingVerifier() (gas: 56459) -SignatureCheckerLibTest:testSignatureChecker(bytes32) (runs: 312, μ: 55445, ~: 45424) +SignatureCheckerLibTest:testSignatureChecker(bytes32) (runs: 313, μ: 55536, ~: 45424) SignatureCheckerLibTest:testSignatureCheckerOnEOAWithInvalidSignature() (gas: 21300) SignatureCheckerLibTest:testSignatureCheckerOnEOAWithInvalidSigner() (gas: 30800) SignatureCheckerLibTest:testSignatureCheckerOnEOAWithMatchingSignerAndSignature() (gas: 17697) @@ -1255,8 +1255,8 @@ SignatureCheckerLibTest:testSignatureCheckerOnWalletWithInvalidSigner() (gas: 25 SignatureCheckerLibTest:testSignatureCheckerOnWalletWithMatchingSignerAndSignature() (gas: 64518) SignatureCheckerLibTest:testSignatureCheckerOnWalletWithWrongSignedMessageHash() (gas: 64597) SignatureCheckerLibTest:testSignatureCheckerOnWalletWithZeroAddressSigner() (gas: 12364) -SignatureCheckerLibTest:testToEthSignedMessageHashDifferential(bytes) (runs: 312, μ: 1285, ~: 1284) -SignatureCheckerLibTest:testToEthSignedMessageHashDifferential(bytes32) (runs: 312, μ: 481, ~: 481) +SignatureCheckerLibTest:testToEthSignedMessageHashDifferential(bytes) (runs: 313, μ: 1285, ~: 1284) +SignatureCheckerLibTest:testToEthSignedMessageHashDifferential(bytes32) (runs: 313, μ: 481, ~: 481) SignatureCheckerLibTest:test__codesize() (gas: 15454) SoladyTest:test__codesize() (gas: 840) TestPlus:test__codesize() (gas: 406) @@ -1272,7 +1272,7 @@ UUPSUpgradeableTest:testUpgradeToRevertWithUpgradeFailed() (gas: 18583) UUPSUpgradeableTest:test__codesize() (gas: 6048) UpgradeableBeaconTest:testInitializeUpgradeableSolidityBeacon() (gas: 296434) UpgradeableBeaconTest:testInitializeUpgradeableYulBeacon() (gas: 335455) -UpgradeableBeaconTest:testUpgradeableBeacon(uint256) (runs: 312, μ: 245942, ~: 255829) +UpgradeableBeaconTest:testUpgradeableBeacon(uint256) (runs: 313, μ: 246044, ~: 255829) UpgradeableBeaconTest:testUpgradeableSolidityBeaconOnlyFnSelectorNotRecognised() (gas: 234560) UpgradeableBeaconTest:testUpgradeableSolidityBeaconOnlyOwnerFunctions() (gas: 260339) UpgradeableBeaconTest:testUpgradeableYulBeaconOnlyFnSelectorNotRecognised() (gas: 172796) @@ -1281,12 +1281,12 @@ UpgradeableBeaconTest:test__codesize() (gas: 8511) WETHInvariants:invariantTotalSupplyEqualsBalance() (runs: 10, calls: 150, reverts: 74) WETHInvariants:test__codesize() (gas: 5178) WETHTest:testDeposit() (gas: 62272) -WETHTest:testDeposit(uint256) (runs: 312, μ: 61443, ~: 62566) +WETHTest:testDeposit(uint256) (runs: 313, μ: 61447, ~: 62566) WETHTest:testFallbackDeposit() (gas: 61978) -WETHTest:testFallbackDeposit(uint256) (runs: 312, μ: 61104, ~: 62227) +WETHTest:testFallbackDeposit(uint256) (runs: 313, μ: 61108, ~: 62227) WETHTest:testMetadata() (gas: 9013) WETHTest:testPartialWithdraw() (gas: 70422) WETHTest:testWithdraw() (gas: 52047) -WETHTest:testWithdraw(uint256,uint256) (runs: 312, μ: 69912, ~: 71175) +WETHTest:testWithdraw(uint256,uint256) (runs: 313, μ: 69916, ~: 71175) WETHTest:testWithdrawToContractWithoutReceiveReverts() (gas: 90164) WETHTest:test__codesize() (gas: 9410) \ No newline at end of file diff --git a/src/utils/ECDSA.sol b/src/utils/ECDSA.sol index 2635fe738..c0fa10e14 100644 --- a/src/utils/ECDSA.sol +++ b/src/utils/ECDSA.sol @@ -405,6 +405,10 @@ library ECDSA { } } + /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ + /* CANONICAL HASH FUNCTIONS */ + /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/ + /// @dev Returns an canonical hash of `signature`. /// 64-byte compact signatures will be canonicalized into the 65-byte format. /// If `s` is greater than `N / 2` then it will be converted to `N - s` @@ -421,6 +425,7 @@ library ECDSA { result := xor(keccak256(add(signature, 0x20), l), 0xd62f1ab2) break } + let n := N mstore(0x00, mload(add(signature, 0x20))) // `r`. let s := mload(add(signature, 0x40)) let v := mload(add(signature, 0x41)) @@ -428,7 +433,6 @@ library ECDSA { v := add(shr(255, s), 27) s := shr(1, shl(1, s)) } - let n := N if lt(shr(1, n), s) { v := xor(v, 7) s := sub(n, s) @@ -463,6 +467,7 @@ library ECDSA { result := xor(keccak256(mload(0x40), l), 0xd62f1ab2) break } + let n := N mstore(0x00, calldataload(signature.offset)) // `r`. let s := calldataload(add(signature.offset, 0x20)) let v := calldataload(add(signature.offset, 0x21)) @@ -470,7 +475,6 @@ library ECDSA { v := add(shr(255, s), 27) s := shr(1, shl(1, s)) } - let n := N if lt(shr(1, n), s) { v := xor(v, 7) s := sub(n, s) diff --git a/test/ECDSA.t.sol b/test/ECDSA.t.sol index 6cc4ad356..6d15666d3 100644 --- a/test/ECDSA.t.sol +++ b/test/ECDSA.t.sol @@ -458,10 +458,10 @@ contract ECDSATest is SoladyTest { function testCanonicalHashWith64bytesSignature() public brutalizeMemory { bytes memory signature = hex"8688e590483917863a35ef230c0f839be8418aa4ee765228eddfcea7fe2652815db01c2c84b0ec746e1b74d97475c599b3d3419fa7181b4e01de62c02b721aea1b"; - bytes memory shortsignature = + bytes memory shortSignature = hex"8688e590483917863a35ef230c0f839be8418aa4ee765228eddfcea7fe2652815db01c2c84b0ec746e1b74d97475c599b3d3419fa7181b4e01de62c02b721aea"; - assertEq(ECDSA.canonicalHash(shortsignature), keccak256(signature)); + assertEq(ECDSA.canonicalHash(shortSignature), keccak256(signature)); } function testCanonicalHashCalldataWithRegularSignature() public { @@ -482,42 +482,101 @@ contract ECDSATest is SoladyTest { function testCanonicalHashCalldataWith64bytesSignature() public { bytes memory signature = hex"8688e590483917863a35ef230c0f839be8418aa4ee765228eddfcea7fe2652815db01c2c84b0ec746e1b74d97475c599b3d3419fa7181b4e01de62c02b721aea1b"; - bytes memory shortsignature = + bytes memory shortSignature = hex"8688e590483917863a35ef230c0f839be8418aa4ee765228eddfcea7fe2652815db01c2c84b0ec746e1b74d97475c599b3d3419fa7181b4e01de62c02b721aea"; - assertEq(this.canonicalHashCalldata(shortsignature), keccak256(signature)); - assertEq(this.canonicalHashCalldataBrutalizeMemory(shortsignature), keccak256(signature)); + assertEq(this.canonicalHashCalldata(shortSignature), keccak256(signature)); + assertEq(this.canonicalHashCalldataBrutalizeMemory(shortSignature), keccak256(signature)); signature = hex"8688e590483917863a35ef230c0f839be8418aa4ee765228eddfcea7fe2652815db01c2c84b0ec746e1b74d97475c599b3d3419fa7181b4e01de62c02b721aea1c"; - shortsignature = + shortSignature = hex"8688e590483917863a35ef230c0f839be8418aa4ee765228eddfcea7fe265281ddb01c2c84b0ec746e1b74d97475c599b3d3419fa7181b4e01de62c02b721aea"; - assertEq(this.canonicalHashCalldata(shortsignature), keccak256(signature)); - assertEq(this.canonicalHashCalldataBrutalizeMemory(shortsignature), keccak256(signature)); + assertEq(this.canonicalHashCalldata(shortSignature), keccak256(signature)); + assertEq(this.canonicalHashCalldataBrutalizeMemory(shortSignature), keccak256(signature)); } - function testCanonicalHashWithIncorrectLengthSignature() public { - bytes memory longsignature = - hex"8688e590483917863a35ef230c0f839be8418aa4ee765228eddfcea7fe2652815db01c2c84b0ec746e1b74d97475c599b3d3419fa7181b4e01de62c02b721aea1b65"; - bytes memory signature = - hex"8688e590483917863a35ef230c0f839be8418aa4ee765228eddfcea7fe2652815db01c2c84b0ec746e1b74d97475c599b3d3419fa7181b4e01de62c02b721aea1b"; - - assertNotEq(ECDSA.canonicalHash(longsignature), keccak256(signature)); - assertEq(this.canonicalHashCalldata(longsignature), ECDSA.canonicalHash(longsignature)); - assertNotEq(this.canonicalHashCalldata(longsignature), keccak256(signature)); - assertNotEq(this.canonicalHashCalldataBrutalizeMemory(longsignature), keccak256(signature)); - - bytes memory shortsignature = - hex"8688e590483917863a35ef230c0f839be8418aa4ee765228eddfcea7fe2652815db01c2c84b0ec746e1b74d97475c599b3d3419fa7181b4e01de62c02b721aea"; + function testCanonicalHash(bytes32 digest) public { + bytes memory signature; + bytes32 cHash; + address signer; + { + uint256 privateKey; + (signer, privateKey) = _randomSigner(); + (uint8 v, bytes32 r, bytes32 s) = vm.sign(privateKey, digest); + signature = abi.encodePacked(r, s, v); + cHash = ECDSA.canonicalHash(signature); + assertEq(keccak256(signature), cHash); + if (_randomChance(2)) { + bytes memory shortSignature = _shortSignature(signature); + assertEq(ECDSA.canonicalHash(shortSignature), cHash); + if (_randomChance(8)) { + assertEq(this.canonicalHashCalldataBrutalizeMemory(shortSignature), cHash); + } + } + } + if (_randomChance(2)) { + bytes memory corruptedSignature = _corruptedSignature(signature); + bytes32 corruptedCHash = ECDSA.canonicalHash(corruptedSignature); + if (_randomChance(8)) { + assertEq(this.canonicalHashCalldata(corruptedSignature), corruptedCHash); + if (_randomChance(2)) { + assertEq( + this.canonicalHashCalldataBrutalizeMemory(corruptedSignature), + corruptedCHash + ); + } + } + if (ECDSA.tryRecover(digest, corruptedSignature) == signer) { + assertEq(corruptedCHash, cHash); + } else { + assertNotEq(corruptedCHash, cHash); + if (_randomChance(2)) { + bytes memory corruptedSignature2 = _corruptedSignature(signature); + if (ECDSA.tryRecover(digest, corruptedSignature2) != signer) { + if (keccak256(corruptedSignature) != keccak256(corruptedSignature2)) { + assertNotEq(corruptedCHash, ECDSA.canonicalHash(corruptedSignature2)); + } + } + } + } + } + } + function _shortSignature(bytes memory signature) internal pure returns (bytes memory) { + require(signature.length == 65, "Wrong length"); + bytes32 r; + bytes32 s; + uint8 v; /// @solidity memory-safe-assembly assembly { - mstore(shortsignature, 63) // Corrupt memory length. + r := mload(add(signature, 0x20)) + s := mload(add(signature, 0x40)) + v := and(0xff, mload(add(signature, 0x41))) + } + bytes32 vs = bytes32((uint256(v == 28 ? 1 : 0) << 255) | uint256(s)); + return abi.encodePacked(r, vs); + } + + function _corruptedSignature(bytes memory signature) internal returns (bytes memory result) { + if (_randomChance(2)) { + result = abi.encodePacked(signature, uint8(_random()), _random()); + } else { + result = abi.encodePacked(_shortSignature(signature), uint8(_random()), _random()); + } + unchecked { + uint256 corruptedLength = _random() % (result.length + 1); + /// @solidity memory-safe-assembly + assembly { + mstore(result, corruptedLength) + } + if (corruptedLength == 0 && _randomChance(2)) { + /// @solidity memory-safe-assembly + assembly { + result := 0x60 + } + } } - assertNotEq(ECDSA.canonicalHash(shortsignature), keccak256(signature)); - assertEq(this.canonicalHashCalldata(shortsignature), ECDSA.canonicalHash(shortsignature)); - assertNotEq(this.canonicalHashCalldata(shortsignature), keccak256(signature)); - assertNotEq(this.canonicalHashCalldataBrutalizeMemory(shortsignature), keccak256(signature)); } function canonicalHashCalldata(bytes calldata signature) external pure returns (bytes32) { From c7b14e402f555197f3c52be9170dc4c6a67565b8 Mon Sep 17 00:00:00 2001 From: Vectorized Date: Thu, 15 Aug 2024 12:01:23 +0000 Subject: [PATCH 09/11] Strengthen tests --- .gas-snapshot | 18 +++++++++--------- test/ECDSA.t.sol | 40 +++++++++++++++++++--------------------- 2 files changed, 28 insertions(+), 30 deletions(-) diff --git a/.gas-snapshot b/.gas-snapshot index 20d609bc3..cb215ece7 100644 --- a/.gas-snapshot +++ b/.gas-snapshot @@ -88,18 +88,18 @@ DynamicBufferLibTest:testJoinWithConcat() (gas: 31429) DynamicBufferLibTest:testJoinWithDynamicBuffer() (gas: 10830) DynamicBufferLibTest:test__codesize() (gas: 12662) ECDSATest:testBytes32ToEthSignedMessageHash() (gas: 403) -ECDSATest:testBytesToEthSignedMessageHash() (gas: 11581864) +ECDSATest:testBytesToEthSignedMessageHash() (gas: 11581399) ECDSATest:testBytesToEthSignedMessageHashEmpty() (gas: 556) -ECDSATest:testBytesToEthSignedMessageHashExceedsMaxLengthReverts() (gas: 615831) +ECDSATest:testBytesToEthSignedMessageHashExceedsMaxLengthReverts() (gas: 614679) ECDSATest:testBytesToEthSignedMessageHashLong() (gas: 703) ECDSATest:testBytesToEthSignedMessageHashShort() (gas: 642) -ECDSATest:testCanonicalHash(bytes32) (runs: 313, μ: 98359, ~: 28355) -ECDSATest:testCanonicalHashCalldataWith64bytesSignature() (gas: 1234607) -ECDSATest:testCanonicalHashCalldataWithRegularSignature() (gas: 1233968) -ECDSATest:testCanonicalHashWith64bytesSignature() (gas: 614369) -ECDSATest:testCanonicalHashWithRegularSignature() (gas: 614293) +ECDSATest:testCanonicalHash(bytes32) (runs: 313, μ: 126246, ~: 36533) +ECDSATest:testCanonicalHashCalldataWith64bytesSignature() (gas: 1232460) +ECDSATest:testCanonicalHashCalldataWithRegularSignature() (gas: 1231981) +ECDSATest:testCanonicalHashWith64bytesSignature() (gas: 613375) +ECDSATest:testCanonicalHashWithRegularSignature() (gas: 613300) ECDSATest:testEmptyCalldataHelpers() (gas: 3246) -ECDSATest:testRecoverAndTryRecover(bytes32) (runs: 313, μ: 2995381, ~: 2535596) +ECDSATest:testRecoverAndTryRecover(bytes32) (runs: 313, μ: 2812039, ~: 2530857) ECDSATest:testRecoverWithInvalidLongSignatureReverts() (gas: 7373) ECDSATest:testRecoverWithInvalidShortSignatureReturnsZero() (gas: 7209) ECDSATest:testRecoverWithInvalidSignatureReverts() (gas: 7996) @@ -130,7 +130,7 @@ ECDSATest:testTryRecoverWithV1SignatureWithVersion28() (gas: 8895) ECDSATest:testTryRecoverWithV1SignatureWithWrongVersionReturnsZero() (gas: 8872) ECDSATest:testTryRecoverWithValidSignature() (gas: 8964) ECDSATest:testTryRecoverWithWrongSigner() (gas: 8890) -ECDSATest:test__codesize() (gas: 17081) +ECDSATest:test__codesize() (gas: 17065) EIP712Test:testDomainSeparator() (gas: 6048) EIP712Test:testDomainSeparatorOnClone() (gas: 8842) EIP712Test:testDomainSeparatorOnCloneDynamicWithChainIdChange() (gas: 69580) diff --git a/test/ECDSA.t.sol b/test/ECDSA.t.sol index 6d15666d3..e52052b92 100644 --- a/test/ECDSA.t.sol +++ b/test/ECDSA.t.sol @@ -515,28 +515,26 @@ contract ECDSATest is SoladyTest { } } } - if (_randomChance(2)) { - bytes memory corruptedSignature = _corruptedSignature(signature); - bytes32 corruptedCHash = ECDSA.canonicalHash(corruptedSignature); - if (_randomChance(8)) { - assertEq(this.canonicalHashCalldata(corruptedSignature), corruptedCHash); - if (_randomChance(2)) { - assertEq( - this.canonicalHashCalldataBrutalizeMemory(corruptedSignature), - corruptedCHash - ); - } + + bytes memory corruptedSignature = _corruptedSignature(signature); + bytes32 corruptedCHash = ECDSA.canonicalHash(corruptedSignature); + if (_randomChance(8)) { + assertEq(this.canonicalHashCalldata(corruptedSignature), corruptedCHash); + if (_randomChance(2)) { + assertEq( + this.canonicalHashCalldataBrutalizeMemory(corruptedSignature), corruptedCHash + ); } - if (ECDSA.tryRecover(digest, corruptedSignature) == signer) { - assertEq(corruptedCHash, cHash); - } else { - assertNotEq(corruptedCHash, cHash); - if (_randomChance(2)) { - bytes memory corruptedSignature2 = _corruptedSignature(signature); - if (ECDSA.tryRecover(digest, corruptedSignature2) != signer) { - if (keccak256(corruptedSignature) != keccak256(corruptedSignature2)) { - assertNotEq(corruptedCHash, ECDSA.canonicalHash(corruptedSignature2)); - } + } + if (ECDSA.tryRecover(digest, corruptedSignature) == signer) { + assertEq(corruptedCHash, cHash); + } else { + assertNotEq(corruptedCHash, cHash); + if (_randomChance(2)) { + bytes memory corruptedSignature2 = _corruptedSignature(signature); + if (ECDSA.tryRecover(digest, corruptedSignature2) != signer) { + if (keccak256(corruptedSignature) != keccak256(corruptedSignature2)) { + assertNotEq(corruptedCHash, ECDSA.canonicalHash(corruptedSignature2)); } } } From ef7429636ffd11ed2f472440c87afbda750e4ea8 Mon Sep 17 00:00:00 2001 From: Vectorized Date: Thu, 15 Aug 2024 12:54:51 +0000 Subject: [PATCH 10/11] Strengthen tests and tidy --- .gas-snapshot | 20 ++++++++-------- src/utils/ECDSA.sol | 58 +++++++++++++++++++++++++++++++++++---------- test/ECDSA.t.sol | 43 ++++++++++++++++++++++++++++++--- 3 files changed, 96 insertions(+), 25 deletions(-) diff --git a/.gas-snapshot b/.gas-snapshot index cb215ece7..cc12ac9be 100644 --- a/.gas-snapshot +++ b/.gas-snapshot @@ -88,18 +88,18 @@ DynamicBufferLibTest:testJoinWithConcat() (gas: 31429) DynamicBufferLibTest:testJoinWithDynamicBuffer() (gas: 10830) DynamicBufferLibTest:test__codesize() (gas: 12662) ECDSATest:testBytes32ToEthSignedMessageHash() (gas: 403) -ECDSATest:testBytesToEthSignedMessageHash() (gas: 11581399) +ECDSATest:testBytesToEthSignedMessageHash() (gas: 11576455) ECDSATest:testBytesToEthSignedMessageHashEmpty() (gas: 556) -ECDSATest:testBytesToEthSignedMessageHashExceedsMaxLengthReverts() (gas: 614679) +ECDSATest:testBytesToEthSignedMessageHashExceedsMaxLengthReverts() (gas: 603819) ECDSATest:testBytesToEthSignedMessageHashLong() (gas: 703) ECDSATest:testBytesToEthSignedMessageHashShort() (gas: 642) -ECDSATest:testCanonicalHash(bytes32) (runs: 313, μ: 126246, ~: 36533) -ECDSATest:testCanonicalHashCalldataWith64bytesSignature() (gas: 1232460) -ECDSATest:testCanonicalHashCalldataWithRegularSignature() (gas: 1231981) -ECDSATest:testCanonicalHashWith64bytesSignature() (gas: 613375) -ECDSATest:testCanonicalHashWithRegularSignature() (gas: 613300) +ECDSATest:testCanonicalHash(bytes32) (runs: 313, μ: 150503, ~: 38411) +ECDSATest:testCanonicalHashCalldataWith64bytesSignature() (gas: 1210645) +ECDSATest:testCanonicalHashCalldataWithRegularSignature() (gas: 1210171) +ECDSATest:testCanonicalHashWith64bytesSignature() (gas: 602434) +ECDSATest:testCanonicalHashWithRegularSignature() (gas: 602428) ECDSATest:testEmptyCalldataHelpers() (gas: 3246) -ECDSATest:testRecoverAndTryRecover(bytes32) (runs: 313, μ: 2812039, ~: 2530857) +ECDSATest:testRecoverAndTryRecover(bytes32) (runs: 313, μ: 2801433, ~: 2487584) ECDSATest:testRecoverWithInvalidLongSignatureReverts() (gas: 7373) ECDSATest:testRecoverWithInvalidShortSignatureReturnsZero() (gas: 7209) ECDSATest:testRecoverWithInvalidSignatureReverts() (gas: 7996) @@ -130,7 +130,7 @@ ECDSATest:testTryRecoverWithV1SignatureWithVersion28() (gas: 8895) ECDSATest:testTryRecoverWithV1SignatureWithWrongVersionReturnsZero() (gas: 8872) ECDSATest:testTryRecoverWithValidSignature() (gas: 8964) ECDSATest:testTryRecoverWithWrongSigner() (gas: 8890) -ECDSATest:test__codesize() (gas: 17065) +ECDSATest:test__codesize() (gas: 17455) EIP712Test:testDomainSeparator() (gas: 6048) EIP712Test:testDomainSeparatorOnClone() (gas: 8842) EIP712Test:testDomainSeparatorOnCloneDynamicWithChainIdChange() (gas: 69580) @@ -1244,7 +1244,7 @@ SignatureCheckerLibTest:testERC6492PreDeploy() (gas: 1226946) SignatureCheckerLibTest:testERC6492WithoutRevertingVerifier() (gas: 61787) SignatureCheckerLibTest:testEmptyCalldataHelpers() (gas: 3987) SignatureCheckerLibTest:testEtchERC6492RevertingVerifier() (gas: 56459) -SignatureCheckerLibTest:testSignatureChecker(bytes32) (runs: 313, μ: 55536, ~: 45424) +SignatureCheckerLibTest:testSignatureChecker(bytes32) (runs: 313, μ: 55913, ~: 45424) SignatureCheckerLibTest:testSignatureCheckerOnEOAWithInvalidSignature() (gas: 21300) SignatureCheckerLibTest:testSignatureCheckerOnEOAWithInvalidSigner() (gas: 30800) SignatureCheckerLibTest:testSignatureCheckerOnEOAWithMatchingSignerAndSignature() (gas: 17697) diff --git a/src/utils/ECDSA.sol b/src/utils/ECDSA.sol index c0fa10e14..71e4a95b0 100644 --- a/src/utils/ECDSA.sol +++ b/src/utils/ECDSA.sol @@ -409,12 +409,15 @@ library ECDSA { /* CANONICAL HASH FUNCTIONS */ /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/ - /// @dev Returns an canonical hash of `signature`. - /// 64-byte compact signatures will be canonicalized into the 65-byte format. - /// If `s` is greater than `N / 2` then it will be converted to `N - s` - /// and the `v` value will be flipped. - /// Note : Returns a uniquely corrupted hash if the signature - /// is not 64 or 65 bytes long, or if `v` is invalid. + // The following functions returns the hash of the signature in it's canonicalized format, + // which is the 65-byte `abi.encodePacked(r, s, uint8(v))`, where `v` is either 27 or 28. + // If `s` is greater than `N / 2` then it will be converted to `N - s` + // and the `v` value will be flipped. + // If the signature has an invalid length, or if `v` is invalid, + // a uniquely corrupt hash will be returned. + // These functions are useful for "poor-mans-VRF". + + /// @dev Returns the canonical hash of `signature`. function canonicalHash(bytes memory signature) internal pure returns (bytes32 result) { // @solidity memory-safe-assembly assembly { @@ -446,12 +449,7 @@ library ECDSA { } } - /// @dev Returns an canonical hash of `signature`. - /// 64-byte compact signatures will be canonicalized into the 65-byte format. - /// If `s` is greater than `N / 2` then it will be converted to `N - s` - /// and the `v` value will be flipped. - /// Note : Returns a uniquely corrupted hash if the signature - /// is not 64 or 65 bytes long, or if `v` is invalid. + /// @dev Returns the canonical hash of `signature`. function canonicalHashCalldata(bytes calldata signature) internal pure @@ -488,6 +486,42 @@ library ECDSA { } } + /// @dev Returns the canonical hash of `signature`. + function canonicalHash(bytes32 r, bytes32 vs) internal pure returns (bytes32 result) { + // @solidity memory-safe-assembly + assembly { + let n := N + mstore(0x00, r) // `r`. + let v := add(shr(255, vs), 27) + let s := shr(1, shl(1, vs)) + if lt(shr(1, n), s) { + v := xor(v, 7) + s := sub(n, s) + } + mstore(0x21, v) + mstore(0x20, s) + result := keccak256(0x00, 0x41) + mstore(0x21, 0) // Restore the overwritten part of the free memory pointer. + } + } + + /// @dev Returns the canonical hash of `signature`. + function canonicalHash(uint8 v, bytes32 r, bytes32 s) internal pure returns (bytes32 result) { + // @solidity memory-safe-assembly + assembly { + let n := N + mstore(0x00, r) // `r`. + if lt(shr(1, n), s) { + v := xor(v, 7) + s := sub(n, s) + } + mstore(0x21, v) + mstore(0x20, s) + result := keccak256(0x00, 0x41) + mstore(0x21, 0) // Restore the overwritten part of the free memory pointer. + } + } + /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ /* EMPTY CALLDATA HELPERS */ /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/ diff --git a/test/ECDSA.t.sol b/test/ECDSA.t.sol index e52052b92..13e7f7972 100644 --- a/test/ECDSA.t.sol +++ b/test/ECDSA.t.sol @@ -504,9 +504,23 @@ contract ECDSATest is SoladyTest { uint256 privateKey; (signer, privateKey) = _randomSigner(); (uint8 v, bytes32 r, bytes32 s) = vm.sign(privateKey, digest); + v = _brutalizedV(v); signature = abi.encodePacked(r, s, v); cHash = ECDSA.canonicalHash(signature); - assertEq(keccak256(signature), cHash); + + assertEq(ECDSA.canonicalHash(r, _vs(v, s)), cHash); + + if (_randomChance(2)) { + s = bytes32(uint256(ECDSA.N) - uint256(s)); + v = v ^ 7; + } + + if (_randomChance(2)) { + assertEq(keccak256(signature), cHash); + assertEq(ECDSA.canonicalHash(v, r, s), cHash); + _checkMemory(); + } + if (_randomChance(2)) { bytes memory shortSignature = _shortSignature(signature); assertEq(ECDSA.canonicalHash(shortSignature), cHash); @@ -514,6 +528,15 @@ contract ECDSATest is SoladyTest { assertEq(this.canonicalHashCalldataBrutalizeMemory(shortSignature), cHash); } } + + if (_randomChance(4)) { + uint8 corruptedV = _brutalizedV(uint8(_random())); + assertEq( + ECDSA.canonicalHash(abi.encodePacked(r, s, corruptedV)), + ECDSA.canonicalHash(corruptedV, r, s) + ); + _checkMemory(); + } } bytes memory corruptedSignature = _corruptedSignature(signature); @@ -526,6 +549,7 @@ contract ECDSATest is SoladyTest { ); } } + if (ECDSA.tryRecover(digest, corruptedSignature) == signer) { assertEq(corruptedCHash, cHash); } else { @@ -552,8 +576,21 @@ contract ECDSATest is SoladyTest { s := mload(add(signature, 0x40)) v := and(0xff, mload(add(signature, 0x41))) } - bytes32 vs = bytes32((uint256(v == 28 ? 1 : 0) << 255) | uint256(s)); - return abi.encodePacked(r, vs); + return abi.encodePacked(r, _vs(v, s)); + } + + function _vs(uint8 v, bytes32 s) internal pure returns (bytes32 vs) { + /// @solidity memory-safe-assembly + assembly { + vs := or(s, shl(255, eq(and(0xff, v), 28))) + } + } + + function _brutalizedV(uint8 v) internal pure returns (uint8 result) { + /// @solidity memory-safe-assembly + assembly { + result := xor(shl(8, keccak256(0x00, 0xa0)), v) + } } function _corruptedSignature(bytes memory signature) internal returns (bytes memory result) { From 230fc01aa3766bc938d5914b2f5aecf1b2e027dd Mon Sep 17 00:00:00 2001 From: Vectorized Date: Thu, 15 Aug 2024 13:01:07 +0000 Subject: [PATCH 11/11] Strengthen tests --- .gas-snapshot | 18 +++++++++--------- test/ECDSA.t.sol | 21 +++++++++++++++++---- 2 files changed, 26 insertions(+), 13 deletions(-) diff --git a/.gas-snapshot b/.gas-snapshot index cc12ac9be..5733e49c6 100644 --- a/.gas-snapshot +++ b/.gas-snapshot @@ -88,18 +88,18 @@ DynamicBufferLibTest:testJoinWithConcat() (gas: 31429) DynamicBufferLibTest:testJoinWithDynamicBuffer() (gas: 10830) DynamicBufferLibTest:test__codesize() (gas: 12662) ECDSATest:testBytes32ToEthSignedMessageHash() (gas: 403) -ECDSATest:testBytesToEthSignedMessageHash() (gas: 11576455) +ECDSATest:testBytesToEthSignedMessageHash() (gas: 11584555) ECDSATest:testBytesToEthSignedMessageHashEmpty() (gas: 556) -ECDSATest:testBytesToEthSignedMessageHashExceedsMaxLengthReverts() (gas: 603819) +ECDSATest:testBytesToEthSignedMessageHashExceedsMaxLengthReverts() (gas: 624313) ECDSATest:testBytesToEthSignedMessageHashLong() (gas: 703) ECDSATest:testBytesToEthSignedMessageHashShort() (gas: 642) -ECDSATest:testCanonicalHash(bytes32) (runs: 313, μ: 150503, ~: 38411) -ECDSATest:testCanonicalHashCalldataWith64bytesSignature() (gas: 1210645) -ECDSATest:testCanonicalHashCalldataWithRegularSignature() (gas: 1210171) -ECDSATest:testCanonicalHashWith64bytesSignature() (gas: 602434) -ECDSATest:testCanonicalHashWithRegularSignature() (gas: 602428) +ECDSATest:testCanonicalHash(bytes32) (runs: 313, μ: 135087, ~: 38574) +ECDSATest:testCanonicalHashCalldataWith64bytesSignature() (gas: 1251428) +ECDSATest:testCanonicalHashCalldataWithRegularSignature() (gas: 1250944) +ECDSATest:testCanonicalHashWith64bytesSignature() (gas: 622860) +ECDSATest:testCanonicalHashWithRegularSignature() (gas: 622690) ECDSATest:testEmptyCalldataHelpers() (gas: 3246) -ECDSATest:testRecoverAndTryRecover(bytes32) (runs: 313, μ: 2801433, ~: 2487584) +ECDSATest:testRecoverAndTryRecover(bytes32) (runs: 313, μ: 2831437, ~: 2568704) ECDSATest:testRecoverWithInvalidLongSignatureReverts() (gas: 7373) ECDSATest:testRecoverWithInvalidShortSignatureReturnsZero() (gas: 7209) ECDSATest:testRecoverWithInvalidSignatureReverts() (gas: 7996) @@ -130,7 +130,7 @@ ECDSATest:testTryRecoverWithV1SignatureWithVersion28() (gas: 8895) ECDSATest:testTryRecoverWithV1SignatureWithWrongVersionReturnsZero() (gas: 8872) ECDSATest:testTryRecoverWithValidSignature() (gas: 8964) ECDSATest:testTryRecoverWithWrongSigner() (gas: 8890) -ECDSATest:test__codesize() (gas: 17455) +ECDSATest:test__codesize() (gas: 17769) EIP712Test:testDomainSeparator() (gas: 6048) EIP712Test:testDomainSeparatorOnClone() (gas: 8842) EIP712Test:testDomainSeparatorOnCloneDynamicWithChainIdChange() (gas: 69580) diff --git a/test/ECDSA.t.sol b/test/ECDSA.t.sol index 13e7f7972..ab24d5d57 100644 --- a/test/ECDSA.t.sol +++ b/test/ECDSA.t.sol @@ -507,7 +507,7 @@ contract ECDSATest is SoladyTest { v = _brutalizedV(v); signature = abi.encodePacked(r, s, v); cHash = ECDSA.canonicalHash(signature); - + assertEq(keccak256(signature), cHash); assertEq(ECDSA.canonicalHash(r, _vs(v, s)), cHash); if (_randomChance(2)) { @@ -515,9 +515,10 @@ contract ECDSATest is SoladyTest { v = v ^ 7; } - if (_randomChance(2)) { - assertEq(keccak256(signature), cHash); + if (_randomChance(8)) { assertEq(ECDSA.canonicalHash(v, r, s), cHash); + assertEq(ECDSA.canonicalHash(abi.encodePacked(r, s, v)), cHash); + assertEq(ECDSA.canonicalHash(_shortSignature(abi.encodePacked(r, s, v))), cHash); _checkMemory(); } @@ -535,6 +536,12 @@ contract ECDSATest is SoladyTest { ECDSA.canonicalHash(abi.encodePacked(r, s, corruptedV)), ECDSA.canonicalHash(corruptedV, r, s) ); + if (corruptedV == 27 || corruptedV == 28) { + assertEq( + ECDSA.canonicalHash(abi.encodePacked(r, s, corruptedV)), + ECDSA.canonicalHash(r, _vs(corruptedV, s)) + ); + } _checkMemory(); } } @@ -580,9 +587,15 @@ contract ECDSATest is SoladyTest { } function _vs(uint8 v, bytes32 s) internal pure returns (bytes32 vs) { + uint256 n = uint256(ECDSA.N); /// @solidity memory-safe-assembly assembly { - vs := or(s, shl(255, eq(and(0xff, v), 28))) + v := and(0xff, v) + if lt(shr(1, n), s) { + v := xor(v, 7) + s := sub(n, s) + } + vs := or(s, shl(255, eq(v, 28))) } }