diff --git a/.gas-snapshot b/.gas-snapshot index bcc18b8a0..1d941313c 100644 --- a/.gas-snapshot +++ b/.gas-snapshot @@ -1,654 +1,664 @@ -BaseRainterpreterExternNPE2IERC165Test:testRainterpreterExternNPE2IERC165(bytes4) (runs: 2060, μ: 320946, ~: 320946) -BaseRainterpreterSubParserNPE2IERC165Test:testRainterpreterSubParserNPE2IERC165(uint32) (runs: 2060, μ: 678755, ~: 678755) -LibAllStandardOpsTest:testIntegrityAndOpcodeFunctionPointersLength() (gas: 75677) -LibAllStandardOpsTest:testIntegrityFunctionPointersLength() (gas: 10854) -LibAllStandardOpsTest:testOpcodeFunctionPointersLength() (gas: 10827) -LibEvalFBoundsTest:testEvalNPFBoundsModConstant(bytes32) (runs: 2060, μ: 86712, ~: 86712) -LibExternCodecTest:testLibExternCodecEncodeExternCall(uint256,bytes32) (runs: 2060, μ: 9767, ~: 10284) -LibExternCodecTest:testLibExternCodecEncodeExternDispatch(uint256,bytes32) (runs: 2060, μ: 8884, ~: 9401) -LibInterpreterStateStackTraceTest:testStackTraceCall(uint256,uint256,uint256[]) (runs: 2060, μ: 43061, ~: 42630) -LibOpAbsTest:testOpAbsEval() (gas: 293257) -LibOpAbsTest:testOpAbsEvalOperandDisallowed() (gas: 17587) -LibOpAbsTest:testOpAbsIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2060, μ: 13757, ~: 13664) -LibOpAbsTest:testOpAbsRun(bytes32,uint16) (runs: 2060, μ: 17409, ~: 17349) -LibOpAbsTest:testOpAbsTwoInputs() (gas: 40012) -LibOpAbsTest:testOpAbsTwoOutputs() (gas: 35843) -LibOpAbsTest:testOpAbsZeroInputs() (gas: 30172) -LibOpAbsTest:testOpAbsZeroOutputs() (gas: 34835) -LibOpAddTest:testOpAddEval2InputsHappy() (gas: 160816) -LibOpAddTest:testOpAddEval2InputsHappyZero() (gas: 57717) -LibOpAddTest:testOpAddEval2InputsHappyZeroMax() (gas: 104545) -LibOpAddTest:testOpAddEval2InputsHappyZeroOne() (gas: 199144) -LibOpAddTest:testOpAddEval2InputsUnhappy() (gas: 104998) -LibOpAddTest:testOpAddEval3InputsHappy() (gas: 309704) -LibOpAddTest:testOpAddEval3InputsUnhappy() (gas: 725603) -LibOpAddTest:testOpAddEvalOneInput() (gas: 36630) -LibOpAddTest:testOpAddEvalOperandDisallowed() (gas: 91693) -LibOpAddTest:testOpAddEvalTwoOutput() (gas: 44014) -LibOpAddTest:testOpAddEvalZeroInputs() (gas: 30251) -LibOpAddTest:testOpAddEvalZeroOutputs() (gas: 43032) -LibOpAddTest:testOpAddIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2060, μ: 18210, ~: 18400) -LibOpAddTest:testOpAddIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2060, μ: 13877, ~: 13765) -LibOpAddTest:testOpAddIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2060, μ: 13874, ~: 13762) -LibOpAddTest:testOpAddRun(bytes32[]) (runs: 2052, μ: 52133, ~: 51729) -LibOpAnyTest:testOpAnyEval1FalseInput() (gas: 51927) -LibOpAnyTest:testOpAnyEval1TrueInput() (gas: 51875) -LibOpAnyTest:testOpAnyEval2FalseInputs() (gas: 57221) -LibOpAnyTest:testOpAnyEval2MixedInputs() (gas: 57788) -LibOpAnyTest:testOpAnyEval2MixedInputs2() (gas: 57875) -LibOpAnyTest:testOpAnyEval2MixedInputsZeroExponent() (gas: 58893) -LibOpAnyTest:testOpAnyEval2TrueInputs() (gas: 57809) -LibOpAnyTest:testOpAnyEvalFail() (gas: 29758) +BaseRainterpreterExternNPE2IERC165Test:testRainterpreterExternNPE2IERC165(bytes4) (runs: 2064, μ: 320946, ~: 320946) +BaseRainterpreterSubParserNPE2IERC165Test:testRainterpreterSubParserNPE2IERC165(uint32) (runs: 2064, μ: 678755, ~: 678755) +LibAllStandardOpsTest:testIntegrityAndOpcodeFunctionPointersLength() (gas: 77176) +LibAllStandardOpsTest:testIntegrityFunctionPointersLength() (gas: 10973) +LibAllStandardOpsTest:testOpcodeFunctionPointersLength() (gas: 10958) +LibEvalFBoundsTest:testEvalNPFBoundsModConstant(bytes32) (runs: 2064, μ: 86843, ~: 86843) +LibExternCodecTest:testLibExternCodecEncodeExternCall(uint256,bytes32) (runs: 2064, μ: 9767, ~: 10284) +LibExternCodecTest:testLibExternCodecEncodeExternDispatch(uint256,bytes32) (runs: 2064, μ: 8884, ~: 9401) +LibInterpreterStateStackTraceTest:testStackTraceCall(uint256,uint256,uint256[]) (runs: 2064, μ: 43045, ~: 42583) +LibOpAbsTest:testOpAbsEval() (gas: 293383) +LibOpAbsTest:testOpAbsEvalOperandDisallowed() (gas: 17593) +LibOpAbsTest:testOpAbsIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2064, μ: 13753, ~: 13664) +LibOpAbsTest:testOpAbsRun(bytes32,uint16) (runs: 2064, μ: 17409, ~: 17349) +LibOpAbsTest:testOpAbsTwoInputs() (gas: 40024) +LibOpAbsTest:testOpAbsTwoOutputs() (gas: 35855) +LibOpAbsTest:testOpAbsZeroInputs() (gas: 30184) +LibOpAbsTest:testOpAbsZeroOutputs() (gas: 34847) +LibOpAddTest:testOpAddEval2InputsHappy() (gas: 160876) +LibOpAddTest:testOpAddEval2InputsHappyZero() (gas: 57735) +LibOpAddTest:testOpAddEval2InputsHappyZeroMax() (gas: 104581) +LibOpAddTest:testOpAddEval2InputsHappyZeroOne() (gas: 199224) +LibOpAddTest:testOpAddEval2InputsUnhappy() (gas: 105036) +LibOpAddTest:testOpAddEval3InputsHappy() (gas: 309799) +LibOpAddTest:testOpAddEval3InputsUnhappy() (gas: 725848) +LibOpAddTest:testOpAddEvalOneInput() (gas: 36642) +LibOpAddTest:testOpAddEvalOperandDisallowed() (gas: 91729) +LibOpAddTest:testOpAddEvalTwoOutput() (gas: 44027) +LibOpAddTest:testOpAddEvalZeroInputs() (gas: 30263) +LibOpAddTest:testOpAddEvalZeroOutputs() (gas: 43045) +LibOpAddTest:testOpAddIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2064, μ: 18204, ~: 18430) +LibOpAddTest:testOpAddIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2064, μ: 13873, ~: 13765) +LibOpAddTest:testOpAddIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2064, μ: 13870, ~: 13762) +LibOpAddTest:testOpAddRun(bytes32[]) (runs: 2052, μ: 52081, ~: 51918) +LibOpAnyTest:testOpAnyEval1FalseInput() (gas: 51945) +LibOpAnyTest:testOpAnyEval1TrueInput() (gas: 51893) +LibOpAnyTest:testOpAnyEval2FalseInputs() (gas: 57239) +LibOpAnyTest:testOpAnyEval2MixedInputs() (gas: 57808) +LibOpAnyTest:testOpAnyEval2MixedInputs2() (gas: 57895) +LibOpAnyTest:testOpAnyEval2MixedInputsZeroExponent() (gas: 58913) +LibOpAnyTest:testOpAnyEval2TrueInputs() (gas: 57829) +LibOpAnyTest:testOpAnyEvalFail() (gas: 29770) LibOpAnyTest:testOpAnyIntegrityGas0() (gas: 3251) -LibOpAnyTest:testOpAnyIntegrityHappy(uint8,uint16) (runs: 2060, μ: 8295, ~: 8417) +LibOpAnyTest:testOpAnyIntegrityHappy(uint8,uint16) (runs: 2064, μ: 8291, ~: 8417) LibOpAnyTest:testOpAnyIntegrityUnhappyZeroInputs() (gas: 4059) LibOpAnyTest:testOpAnyRun(bytes32[],uint16) (runs: 2052, μ: 21817, ~: 21797) LibOpAnyTest:testOpAnyRunGas0() (gas: 3345) -LibOpAnyTest:testOpAnyTwoOutputs() (gas: 35813) -LibOpAnyTest:testOpAnyZeroOutputs() (gas: 34783) -LibOpBinaryEqualToTest:testOpBinaryEqualToEval2() (gas: 207942) -LibOpBinaryEqualToTest:testOpBinaryEqualToEval2InputsBothOne() (gas: 57870) -LibOpBinaryEqualToTest:testOpBinaryEqualToEval2InputsFirstOneSecondZero() (gas: 58599) -LibOpBinaryEqualToTest:testOpBinaryEqualToEval2InputsFirstZeroSecondOne() (gas: 58601) -LibOpBinaryEqualToTest:testOpBinaryEqualToEval2ZeroInputs() (gas: 57915) -LibOpBinaryEqualToTest:testOpBinaryEqualToEvalFail0Inputs() (gas: 30654) -LibOpBinaryEqualToTest:testOpBinaryEqualToEvalFail1Input() (gas: 34973) -LibOpBinaryEqualToTest:testOpBinaryEqualToEvalFail3Inputs() (gas: 43471) -LibOpBinaryEqualToTest:testOpBinaryEqualToIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2060, μ: 19706, ~: 19972) -LibOpBinaryEqualToTest:testOpBinaryEqualToRun(bytes32,bytes32) (runs: 2060, μ: 16674, ~: 16674) -LibOpBinaryEqualToTest:testOpBinaryEqualToTwoOutputs() (gas: 41631) -LibOpBinaryEqualToTest:testOpBinaryEqualToZeroOutputs() (gas: 40562) -LibOpBitwiseAndNPTest:testOpBitwiseAndNPEvalHappy() (gas: 720379) -LibOpBitwiseAndNPTest:testOpBitwiseAndNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2060, μ: 13757, ~: 13664) -LibOpBitwiseAndNPTest:testOpBitwiseAndNPRun(bytes32,bytes32) (runs: 2060, μ: 16671, ~: 16671) -LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalBadOperand() (gas: 18232) -LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalOneInput() (gas: 35787) -LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalThreeInputs() (gas: 45556) -LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalTwoOutputs() (gas: 41360) -LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalZeroInputs() (gas: 30810) -LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalZeroOutputs() (gas: 40334) -LibOpBitwiseOrNPTest:testOpBitwiseORNPEval() (gas: 719085) -LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalBadOperand() (gas: 18173) -LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalOneInput() (gas: 35728) -LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalThreeInputs() (gas: 45454) -LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalTwoOutputs() (gas: 41278) -LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalZeroInputs() (gas: 30707) -LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalZeroOutputs() (gas: 40275) -LibOpBitwiseOrNPTest:testOpBitwiseORNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2060, μ: 13756, ~: 13663) -LibOpBitwiseOrNPTest:testOpBitwiseORNPRun(bytes32,bytes32) (runs: 2060, μ: 16628, ~: 16628) -LibOpBlockNumberTest:testOpBlockNumberEval(uint256) (runs: 2060, μ: 50999, ~: 50774) -LibOpBlockNumberTest:testOpBlockNumberEvalOneInput() (gas: 35200) -LibOpBlockNumberTest:testOpBlockNumberEvalTwoOutputs() (gas: 31502) -LibOpBlockNumberTest:testOpBlockNumberEvalZeroOutputs() (gas: 30493) -LibOpBlockNumberTest:testOpBlockNumberIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2060, μ: 19651, ~: 19910) -LibOpBlockNumberTest:testOpBlockNumberRun(uint256,uint16) (runs: 2060, μ: 20846, ~: 21044) -LibOpCallTest:testCallTraceInnerOnly() (gas: 63030) -LibOpCallTest:testCallTraceOuterOnly() (gas: 45598) -LibOpCallTest:testOpCallNPIntegrityIO((uint256,uint256,uint256,bytes32[],uint256,bytes),uint256,uint256,uint8,bytes32) (runs: 2058, μ: 39916, ~: 38789) -LibOpCallTest:testOpCallNPIntegritySourceIndexOutOfBounds((uint256,uint256,uint256,bytes32[],uint256,bytes),uint256,uint256,uint256,uint256,bytes32) (runs: 2060, μ: 59270, ~: 58514) -LibOpCallTest:testOpCallNPIntegrityTooManyOutputs((uint256,uint256,uint256,bytes32[],uint256,bytes),uint256,uint256,uint8,bytes32) (runs: 2053, μ: 59169, ~: 59546) -LibOpCallTest:testOpCallNPRunInputsMismatch() (gas: 72605) -LibOpCallTest:testOpCallNPRunOutputsMismatch() (gas: 65546) -LibOpCallTest:testOpCallNPRunSourceDoesNotExist() (gas: 350805) -LibOpChainIdTest:testOpChainIDEval(uint64) (runs: 2060, μ: 47065, ~: 47065) -LibOpChainIdTest:testOpChainIDIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2060, μ: 19681, ~: 19925) -LibOpChainIdTest:testOpChainIdEvalFail() (gas: 34374) -LibOpChainIdTest:testOpChainIdRun(uint64,uint16) (runs: 2060, μ: 17123, ~: 17123) -LibOpChainIdTest:testOpChainIdTwoOutputs() (gas: 31179) -LibOpChainIdTest:testOpChainIdZeroOutputs() (gas: 30128) -LibOpConditionsTest:testOpConditionsEval1FalseInput1TrueInput() (gas: 70626) -LibOpConditionsTest:testOpConditionsEval1FalseInputRevert() (gas: 54977) -LibOpConditionsTest:testOpConditionsEval1TrueInput1FalseInput() (gas: 70512) -LibOpConditionsTest:testOpConditionsEval1TrueInputZeroOutput() (gas: 58744) -LibOpConditionsTest:testOpConditionsEval2MixedInputs() (gas: 58767) -LibOpConditionsTest:testOpConditionsEval2TrueInputs() (gas: 70577) -LibOpConditionsTest:testOpConditionsEvalErrorCode() (gas: 67697) -LibOpConditionsTest:testOpConditionsEvalFail0Inputs() (gas: 30394) -LibOpConditionsTest:testOpConditionsEvalFail1Inputs() (gas: 34682) -LibOpConditionsTest:testOpConditionsEvalUnhappyOperand() (gas: 18115) -LibOpConditionsTest:testOpConditionsIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2060, μ: 20242, ~: 20469) -LibOpConditionsTest:testOpConditionsRun(bytes32[],bytes32) (runs: 2052, μ: 19736, ~: 19850) -LibOpConditionsTest:testOpConditionsRunNoConditionsMet(bytes32[],string) (runs: 2056, μ: 29107, ~: 29334) -LibOpConditionsTest:testOpConditionsTwoOutputs() (gas: 39983) -LibOpConditionsTest:testOpConditionsZeroOutputs() (gas: 38933) -LibOpConstantTest:testOpConstantEvalNPE2E() (gas: 56113) -LibOpConstantTest:testOpConstantEvalZeroConstants() (gas: 41547) -LibOpConstantTest:testOpConstantNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2060, μ: 19202, ~: 19095) -LibOpConstantTest:testOpConstantNPIntegrityOOBConstants((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2060, μ: 40181, ~: 39809) -LibOpConstantTest:testOpConstantNPMultipleOutputErrorSugared() (gas: 31686) -LibOpConstantTest:testOpConstantNPMultipleOutputErrorUnsugared() (gas: 41626) -LibOpConstantTest:testOpConstantNPRun(bytes32[],uint16) (runs: 2060, μ: 52421, ~: 51854) -LibOpConstantTest:testOpConstantNPZeroOutputErrorSugared() (gas: 30302) -LibOpConstantTest:testOpConstantNPZeroOutputErrorUnsugared() (gas: 40254) -LibOpContextNPTest:testOpContextNPEval00(bytes32[][]) (runs: 112, μ: 6372582, ~: 5266333) -LibOpContextNPTest:testOpContextNPEval01(bytes32[][]) (runs: 112, μ: 6398033, ~: 5266514) -LibOpContextNPTest:testOpContextNPEval10(bytes32[][]) (runs: 112, μ: 6372726, ~: 5266477) -LibOpContextNPTest:testOpContextNPEval11(bytes32[][]) (runs: 112, μ: 6360039, ~: 5151999) -LibOpContextNPTest:testOpContextNPEvalOOBi(bytes32[]) (runs: 112, μ: 74642, ~: 72784) -LibOpContextNPTest:testOpContextNPEvalOOBj(bytes32) (runs: 2060, μ: 48255, ~: 48255) -LibOpContextNPTest:testOpContextNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2060, μ: 14508, ~: 14415) -LibOpContextNPTest:testOpContextNPOneInput() (gas: 41625) -LibOpContextNPTest:testOpContextNPRun(bytes32[][],uint256,uint256) (runs: 112, μ: 10005862, ~: 7383211) -LibOpContextNPTest:testOpContextNPRunOOBi(bytes32[][],uint256,uint256) (runs: 112, μ: 10351306, ~: 7923969) -LibOpContextNPTest:testOpContextNPRunOOBj(bytes32[][],uint256,uint256) (runs: 112, μ: 10360033, ~: 7924884) -LibOpContextNPTest:testOpContextNPTwoInputs() (gas: 46489) -LibOpContextNPTest:testOpContextNPTwoOutputs() (gas: 37294) -LibOpContextNPTest:testOpContextNPZeroOutputs() (gas: 36242) -LibOpCtPopNPTest:testOpCtPopNPEval(bytes32) (runs: 2060, μ: 74400, ~: 85286) -LibOpCtPopNPTest:testOpCtPopNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2060, μ: 13755, ~: 13662) -LibOpCtPopNPTest:testOpCtPopNPRun(bytes32) (runs: 2060, μ: 16698, ~: 16698) -LibOpCtPopNPTest:testOpCtPopNPTwoInputs() (gas: 41172) -LibOpCtPopNPTest:testOpCtPopNPTwoOutputs() (gas: 37044) -LibOpCtPopNPTest:testOpCtPopNPZeroInputs() (gas: 31309) -LibOpCtPopNPTest:testOpCtPopNPZeroOutputs() (gas: 35993) -LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalHappy() (gas: 836172) -LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalTwoInputs() (gas: 47001) -LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalTwoOutputs() (gas: 42853) -LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalZeroInputs() (gas: 37184) -LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalZeroOutputs() (gas: 41800) -LibOpDecodeBitsNPTest:testOpDecodeBitsNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint8,uint8) (runs: 2060, μ: 22135, ~: 22287) -LibOpDecodeBitsNPTest:testOpDecodeBitsNPIntegrityFail((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8) (runs: 2060, μ: 41525, ~: 41547) -LibOpDecodeBitsNPTest:testOpDecodeBitsNPIntegrityFailZeroLength((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8) (runs: 2060, μ: 35715, ~: 35466) -LibOpDecodeBitsNPTest:testOpDecodeBitsNPRun(bytes32,uint8,uint8) (runs: 2060, μ: 21010, ~: 20814) +LibOpAnyTest:testOpAnyTwoOutputs() (gas: 35825) +LibOpAnyTest:testOpAnyZeroOutputs() (gas: 34795) +LibOpBinaryEqualToTest:testOpBinaryEqualToEval2() (gas: 208020) +LibOpBinaryEqualToTest:testOpBinaryEqualToEval2InputsBothOne() (gas: 57888) +LibOpBinaryEqualToTest:testOpBinaryEqualToEval2InputsFirstOneSecondZero() (gas: 58619) +LibOpBinaryEqualToTest:testOpBinaryEqualToEval2InputsFirstZeroSecondOne() (gas: 58621) +LibOpBinaryEqualToTest:testOpBinaryEqualToEval2ZeroInputs() (gas: 57933) +LibOpBinaryEqualToTest:testOpBinaryEqualToEvalFail0Inputs() (gas: 30666) +LibOpBinaryEqualToTest:testOpBinaryEqualToEvalFail1Input() (gas: 34985) +LibOpBinaryEqualToTest:testOpBinaryEqualToEvalFail3Inputs() (gas: 43484) +LibOpBinaryEqualToTest:testOpBinaryEqualToIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2064, μ: 19696, ~: 19947) +LibOpBinaryEqualToTest:testOpBinaryEqualToRun(bytes32,bytes32) (runs: 2064, μ: 16674, ~: 16674) +LibOpBinaryEqualToTest:testOpBinaryEqualToTwoOutputs() (gas: 41643) +LibOpBinaryEqualToTest:testOpBinaryEqualToZeroOutputs() (gas: 40574) +LibOpBitwiseAndNPTest:testOpBitwiseAndNPEvalHappy() (gas: 720691) +LibOpBitwiseAndNPTest:testOpBitwiseAndNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2064, μ: 13753, ~: 13664) +LibOpBitwiseAndNPTest:testOpBitwiseAndNPRun(bytes32,bytes32) (runs: 2064, μ: 16671, ~: 16671) +LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalBadOperand() (gas: 18238) +LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalOneInput() (gas: 35799) +LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalThreeInputs() (gas: 45568) +LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalTwoOutputs() (gas: 41372) +LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalZeroInputs() (gas: 30822) +LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalZeroOutputs() (gas: 40346) +LibOpBitwiseOrNPTest:testOpBitwiseORNPEval() (gas: 719397) +LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalBadOperand() (gas: 18179) +LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalOneInput() (gas: 35740) +LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalThreeInputs() (gas: 45466) +LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalTwoOutputs() (gas: 41290) +LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalZeroInputs() (gas: 30719) +LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalZeroOutputs() (gas: 40287) +LibOpBitwiseOrNPTest:testOpBitwiseORNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2064, μ: 13752, ~: 13663) +LibOpBitwiseOrNPTest:testOpBitwiseORNPRun(bytes32,bytes32) (runs: 2064, μ: 16628, ~: 16628) +LibOpBlockNumberTest:testOpBlockNumberEval(uint256) (runs: 2064, μ: 51018, ~: 50792) +LibOpBlockNumberTest:testOpBlockNumberEvalOneInput() (gas: 35212) +LibOpBlockNumberTest:testOpBlockNumberEvalTwoOutputs() (gas: 31514) +LibOpBlockNumberTest:testOpBlockNumberEvalZeroOutputs() (gas: 30505) +LibOpBlockNumberTest:testOpBlockNumberIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2064, μ: 19652, ~: 19891) +LibOpBlockNumberTest:testOpBlockNumberRun(uint256,uint16) (runs: 2064, μ: 20848, ~: 21044) +LibOpCallTest:testCallTraceInnerOnly() (gas: 63050) +LibOpCallTest:testCallTraceOuterOnly() (gas: 45616) +LibOpCallTest:testOpCallNPIntegrityIO((uint256,uint256,uint256,bytes32[],uint256,bytes),uint256,uint256,uint8,bytes32) (runs: 2060, μ: 39753, ~: 38381) +LibOpCallTest:testOpCallNPIntegritySourceIndexOutOfBounds((uint256,uint256,uint256,bytes32[],uint256,bytes),uint256,uint256,uint256,uint256,bytes32) (runs: 2064, μ: 59442, ~: 59146) +LibOpCallTest:testOpCallNPIntegrityTooManyOutputs((uint256,uint256,uint256,bytes32[],uint256,bytes),uint256,uint256,uint8,bytes32) (runs: 2056, μ: 58594, ~: 59166) +LibOpCallTest:testOpCallNPRunInputsMismatch() (gas: 72617) +LibOpCallTest:testOpCallNPRunOutputsMismatch() (gas: 65559) +LibOpCallTest:testOpCallNPRunSourceDoesNotExist() (gas: 350927) +LibOpChainIdTest:testOpChainIDEval(uint64) (runs: 2064, μ: 47083, ~: 47083) +LibOpChainIdTest:testOpChainIDIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2064, μ: 19673, ~: 19934) +LibOpChainIdTest:testOpChainIdEvalFail() (gas: 34386) +LibOpChainIdTest:testOpChainIdRun(uint64,uint16) (runs: 2064, μ: 17123, ~: 17123) +LibOpChainIdTest:testOpChainIdTwoOutputs() (gas: 31191) +LibOpChainIdTest:testOpChainIdZeroOutputs() (gas: 30140) +LibOpConditionsTest:testOpConditionsEval1FalseInput1TrueInput() (gas: 70646) +LibOpConditionsTest:testOpConditionsEval1FalseInputRevert() (gas: 54997) +LibOpConditionsTest:testOpConditionsEval1TrueInput1FalseInput() (gas: 70532) +LibOpConditionsTest:testOpConditionsEval1TrueInputZeroOutput() (gas: 58764) +LibOpConditionsTest:testOpConditionsEval2MixedInputs() (gas: 58787) +LibOpConditionsTest:testOpConditionsEval2TrueInputs() (gas: 70597) +LibOpConditionsTest:testOpConditionsEvalErrorCode() (gas: 67715) +LibOpConditionsTest:testOpConditionsEvalFail0Inputs() (gas: 30406) +LibOpConditionsTest:testOpConditionsEvalFail1Inputs() (gas: 34694) +LibOpConditionsTest:testOpConditionsEvalUnhappyOperand() (gas: 18121) +LibOpConditionsTest:testOpConditionsIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2064, μ: 20246, ~: 20469) +LibOpConditionsTest:testOpConditionsRun(bytes32[],bytes32) (runs: 2052, μ: 19738, ~: 19850) +LibOpConditionsTest:testOpConditionsRunNoConditionsMet(bytes32[],string) (runs: 2059, μ: 29101, ~: 29267) +LibOpConditionsTest:testOpConditionsTwoOutputs() (gas: 39995) +LibOpConditionsTest:testOpConditionsZeroOutputs() (gas: 38945) +LibOpConstantTest:testOpConstantEvalNPE2E() (gas: 56133) +LibOpConstantTest:testOpConstantEvalZeroConstants() (gas: 41559) +LibOpConstantTest:testOpConstantNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2064, μ: 19200, ~: 19095) +LibOpConstantTest:testOpConstantNPIntegrityOOBConstants((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2064, μ: 40170, ~: 39809) +LibOpConstantTest:testOpConstantNPMultipleOutputErrorSugared() (gas: 31698) +LibOpConstantTest:testOpConstantNPMultipleOutputErrorUnsugared() (gas: 41638) +LibOpConstantTest:testOpConstantNPRun(bytes32[],uint16) (runs: 2064, μ: 52406, ~: 51854) +LibOpConstantTest:testOpConstantNPZeroOutputErrorSugared() (gas: 30314) +LibOpConstantTest:testOpConstantNPZeroOutputErrorUnsugared() (gas: 40266) +LibOpContextNPTest:testOpContextNPEval00(bytes32[][]) (runs: 116, μ: 6333035, ~: 5154576) +LibOpContextNPTest:testOpContextNPEval01(bytes32[][]) (runs: 116, μ: 6357616, ~: 5154757) +LibOpContextNPTest:testOpContextNPEval10(bytes32[][]) (runs: 116, μ: 6333179, ~: 5154720) +LibOpContextNPTest:testOpContextNPEval11(bytes32[][]) (runs: 116, μ: 6320934, ~: 5062375) +LibOpContextNPTest:testOpContextNPEvalOOBi(bytes32[]) (runs: 116, μ: 74529, ~: 72462) +LibOpContextNPTest:testOpContextNPEvalOOBj(bytes32) (runs: 2064, μ: 48273, ~: 48273) +LibOpContextNPTest:testOpContextNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2064, μ: 14504, ~: 14415) +LibOpContextNPTest:testOpContextNPOneInput() (gas: 41637) +LibOpContextNPTest:testOpContextNPRun(bytes32[][],uint256,uint256) (runs: 116, μ: 9907370, ~: 6985371) +LibOpContextNPTest:testOpContextNPRunOOBi(bytes32[][],uint256,uint256) (runs: 116, μ: 10255056, ~: 7520072) +LibOpContextNPTest:testOpContextNPRunOOBj(bytes32[][],uint256,uint256) (runs: 116, μ: 10263510, ~: 7520987) +LibOpContextNPTest:testOpContextNPTwoInputs() (gas: 46501) +LibOpContextNPTest:testOpContextNPTwoOutputs() (gas: 37306) +LibOpContextNPTest:testOpContextNPZeroOutputs() (gas: 36254) +LibOpCtPopNPTest:testOpCtPopNPEval(bytes32) (runs: 2064, μ: 74364, ~: 85330) +LibOpCtPopNPTest:testOpCtPopNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2064, μ: 13751, ~: 13662) +LibOpCtPopNPTest:testOpCtPopNPRun(bytes32) (runs: 2064, μ: 16698, ~: 16698) +LibOpCtPopNPTest:testOpCtPopNPTwoInputs() (gas: 41184) +LibOpCtPopNPTest:testOpCtPopNPTwoOutputs() (gas: 37056) +LibOpCtPopNPTest:testOpCtPopNPZeroInputs() (gas: 31321) +LibOpCtPopNPTest:testOpCtPopNPZeroOutputs() (gas: 36005) +LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalHappy() (gas: 836496) +LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalTwoInputs() (gas: 47013) +LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalTwoOutputs() (gas: 42865) +LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalZeroInputs() (gas: 37196) +LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalZeroOutputs() (gas: 41812) +LibOpDecodeBitsNPTest:testOpDecodeBitsNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint8,uint8) (runs: 2064, μ: 22135, ~: 22213) +LibOpDecodeBitsNPTest:testOpDecodeBitsNPIntegrityFail((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8) (runs: 2064, μ: 41510, ~: 41549) +LibOpDecodeBitsNPTest:testOpDecodeBitsNPIntegrityFailZeroLength((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8) (runs: 2064, μ: 35703, ~: 35466) +LibOpDecodeBitsNPTest:testOpDecodeBitsNPRun(bytes32,uint8,uint8) (runs: 2064, μ: 21014, ~: 20814) LibOpDivTest:testDebugOpDivRun() (gas: 13482) -LibOpDivTest:testOpDivEvalOneInput() (gas: 127185) -LibOpDivTest:testOpDivEvalOperandsDisallowed() (gas: 91669) -LibOpDivTest:testOpDivEvalThreeInputsHappy() (gas: 337627) -LibOpDivTest:testOpDivEvalThreeInputsUnhappy() (gas: 212961) -LibOpDivTest:testOpDivEvalThreeInputsUnhappyOverflow() (gas: 63914) -LibOpDivTest:testOpDivEvalTwoInputsHappy() (gas: 296005) -LibOpDivTest:testOpDivEvalTwoInputsUnhappy() (gas: 144474) -LibOpDivTest:testOpDivEvalTwoInputsUnhappyOverflow() (gas: 57330) -LibOpDivTest:testOpDivEvalTwoOutputs() (gas: 41254) -LibOpDivTest:testOpDivEvalZeroInputs() (gas: 30207) -LibOpDivTest:testOpDivEvalZeroOutputs() (gas: 40250) -LibOpDivTest:testOpDivIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2060, μ: 18259, ~: 18486) -LibOpDivTest:testOpDivIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2060, μ: 13830, ~: 13718) -LibOpDivTest:testOpDivIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2060, μ: 13853, ~: 13741) -LibOpDivTest:testOpDivRun(bytes32[]) (runs: 2052, μ: 37154, ~: 33531) -LibOpERC20AllowanceTest:testOpERC20AllowanceEvalFourInputs() (gas: 55884) -LibOpERC20AllowanceTest:testOpERC20AllowanceEvalHappy(uint256,uint8) (runs: 2060, μ: 72179, ~: 72088) -LibOpERC20AllowanceTest:testOpERC20AllowanceEvalOneInput() (gas: 37140) -LibOpERC20AllowanceTest:testOpERC20AllowanceEvalOperandDisallowed() (gas: 18637) -LibOpERC20AllowanceTest:testOpERC20AllowanceEvalTwoInputs() (gas: 43671) -LibOpERC20AllowanceTest:testOpERC20AllowanceEvalTwoOutputs() (gas: 50703) -LibOpERC20AllowanceTest:testOpERC20AllowanceEvalZeroInputs() (gas: 31147) -LibOpERC20AllowanceTest:testOpERC20AllowanceEvalZeroOutputs() (gas: 49679) -LibOpERC20AllowanceTest:testOpERC20AllowanceIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2060, μ: 13719, ~: 13626) -LibOpERC20AllowanceTest:testOpERC20AllowanceRun(address,address,address,uint256,uint8) (runs: 2059, μ: 27665, ~: 27579) -LibOpERC20BalanceOfTest:testOpERC20BalanceOfEvalHappy(uint256,uint8) (runs: 2059, μ: 66100, ~: 66100) -LibOpERC20BalanceOfTest:testOpERC20BalanceOfEvalOneInput() (gas: 37245) -LibOpERC20BalanceOfTest:testOpERC20BalanceOfEvalOperandDisallowed() (gas: 18695) -LibOpERC20BalanceOfTest:testOpERC20BalanceOfEvalOverflow(uint256,uint8) (runs: 2049, μ: 62369, ~: 62369) -LibOpERC20BalanceOfTest:testOpERC20BalanceOfEvalThreeInputs() (gas: 49572) -LibOpERC20BalanceOfTest:testOpERC20BalanceOfEvalTwoOutputs() (gas: 44441) -LibOpERC20BalanceOfTest:testOpERC20BalanceOfEvalZeroInputs() (gas: 31206) -LibOpERC20BalanceOfTest:testOpERC20BalanceOfEvalZeroOutputs() (gas: 43373) -LibOpERC20BalanceOfTest:testOpERC20BalanceOfIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2060, μ: 13698, ~: 13605) -LibOpERC20BalanceOfTest:testOpERC20BalanceOfRun(address,address,uint256,uint16,uint8) (runs: 2055, μ: 28009, ~: 28009) -LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyEvalHappy(uint256,uint8) (runs: 2060, μ: 59268, ~: 59268) -LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyEvalOperandDisallowed() (gas: 18858) -LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyEvalOverflow(uint256,uint8) (runs: 2048, μ: 55504, ~: 55504) -LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyEvalTwoInputs() (gas: 43893) -LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyEvalTwoOutputs() (gas: 38254) -LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyEvalZeroInputs() (gas: 31389) -LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyEvalZeroOutputs() (gas: 37226) -LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2060, μ: 13742, ~: 13649) -LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyNPRun(address,uint256,uint16,uint8) (runs: 2057, μ: 27211, ~: 27211) -LibOpERC5313OwnerTest:testOpERC5313OwnerEvalHappy() (gas: 55290) -LibOpERC5313OwnerTest:testOpERC5313OwnerEvalOperandDisallowed() (gas: 18376) -LibOpERC5313OwnerTest:testOpERC5313OwnerEvalTwoInputs() (gas: 43489) -LibOpERC5313OwnerTest:testOpERC5313OwnerEvalTwoOutputs() (gas: 37692) -LibOpERC5313OwnerTest:testOpERC5313OwnerEvalZeroInputs() (gas: 30983) -LibOpERC5313OwnerTest:testOpERC5313OwnerEvalZeroOutputs() (gas: 36663) -LibOpERC5313OwnerTest:testOpERC5313OwnerOfIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2060, μ: 13759, ~: 13666) -LibOpERC5313OwnerTest:testOpERC5313OwnerOfRun(address,address,uint16) (runs: 2059, μ: 23615, ~: 23615) -LibOpERC721BalanceOfTest:testOpERC721BalanceOfEvalHappy(address,address,uint256) (runs: 2056, μ: 105364, ~: 105511) -LibOpERC721BalanceOfTest:testOpERC721BalanceOfIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2060, μ: 19675, ~: 19911) -LibOpERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFail0() (gas: 30850) -LibOpERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFail1() (gas: 35139) -LibOpERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFail3() (gas: 44573) -LibOpERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFailOperand() (gas: 21579) -LibOpERC721BalanceOfTest:testOpERC721BalanceOfOneInput() (gas: 35606) -LibOpERC721BalanceOfTest:testOpERC721BalanceOfRun(address,address,uint256,uint16) (runs: 2056, μ: 26008, ~: 26008) -LibOpERC721BalanceOfTest:testOpERC721BalanceOfThreeInputs() (gas: 45093) -LibOpERC721BalanceOfTest:testOpERC721BalanceOfTwoOutputs() (gas: 41100) -LibOpERC721BalanceOfTest:testOpERC721BalanceOfZeroInputs() (gas: 31284) -LibOpERC721BalanceOfTest:testOpERC721BalanceOfZeroOutputs() (gas: 39917) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalFail0() (gas: 30733) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalFail1() (gas: 35020) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalFail3() (gas: 44509) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalFailOperand() (gas: 18228) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalHappy(address,uint256,address) (runs: 2059, μ: 96653, ~: 92526) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalOneInput() (gas: 35478) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalThreeInputs() (gas: 44974) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalZeroInputs() (gas: 31180) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalZeroOutputs() (gas: 39768) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8) (runs: 2060, μ: 13772, ~: 13701) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPRun(address,bytes32,address,uint16) (runs: 2059, μ: 24201, ~: 24201) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPTwoOutputs() (gas: 40814) -LibOpETest:testOpEEval() (gas: 44622) -LibOpETest:testOpEEvalOneInput() (gas: 34286) -LibOpETest:testOpEEvalTwoOutputs() (gas: 30654) -LibOpETest:testOpEEvalZeroOutputs() (gas: 29603) -LibOpETest:testOpEIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2060, μ: 19705, ~: 19952) -LibOpETest:testOpERun(uint16) (runs: 2060, μ: 16132, ~: 16132) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalHappy() (gas: 833276) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalOneInput() (gas: 42076) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalThreeInputs() (gas: 51823) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalTwoOutputs() (gas: 47649) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalZeroInputs() (gas: 37098) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalZeroOutputs() (gas: 46645) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8) (runs: 2060, μ: 18155, ~: 18148) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPIntegrityFail((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8) (runs: 2060, μ: 41728, ~: 41757) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPIntegrityFailZeroLength((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8) (runs: 2060, μ: 35844, ~: 35595) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPRun(bytes32,bytes32,uint8,uint8) (runs: 2060, μ: 21404, ~: 21212) -LibOpEnsureTest:testOpEnsureEvalBadOutputs() (gas: 34453) -LibOpEnsureTest:testOpEnsureEvalBadOutputs2() (gas: 33978) -LibOpEnsureTest:testOpEnsureEvalHappy() (gas: 166113) -LibOpEnsureTest:testOpEnsureEvalOne() (gas: 34666) -LibOpEnsureTest:testOpEnsureEvalThree() (gas: 45384) -LibOpEnsureTest:testOpEnsureEvalUnhappy() (gas: 164844) -LibOpEnsureTest:testOpEnsureEvalUnhappyOperand() (gas: 17079) -LibOpEnsureTest:testOpEnsureEvalZero() (gas: 29663) -LibOpEnsureTest:testOpEnsureIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2060, μ: 19729, ~: 19960) -LibOpEnsureTest:testOpEnsureIntegrityUnhappy((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2060, μ: 13821, ~: 13709) -LibOpEnsureTest:testOpEnsureOneOutput() (gas: 39621) -LibOpEnsureTest:testOpEnsureRun(bytes32,string) (runs: 2053, μ: 18054, ~: 18106) -LibOpEqualToNPTest:testOpEqualToEval2Inputs() (gas: 339469) -LibOpEqualToNPTest:testOpEqualToEval2InputsBothOne() (gas: 57682) -LibOpEqualToNPTest:testOpEqualToEval2InputsFirstOneSecondZero() (gas: 58368) -LibOpEqualToNPTest:testOpEqualToEval2InputsFirstZeroSecondOne() (gas: 58371) -LibOpEqualToNPTest:testOpEqualToEval2ZeroInputs() (gas: 57705) -LibOpEqualToNPTest:testOpEqualToEvalFail0Inputs() (gas: 30087) -LibOpEqualToNPTest:testOpEqualToEvalFail1Input() (gas: 34397) -LibOpEqualToNPTest:testOpEqualToEvalFail3Inputs() (gas: 42821) -LibOpEqualToNPTest:testOpEqualToIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2060, μ: 19683, ~: 19925) -LibOpEqualToNPTest:testOpEqualToRun(bytes32,bytes32) (runs: 2060, μ: 17544, ~: 17466) -LibOpEqualToNPTest:testOpEqualToTwoOutputs() (gas: 41086) -LibOpEqualToNPTest:testOpEqualToZeroOutputs() (gas: 39995) -LibOpEveryTest:testOpEveryEval1FalseInput() (gas: 52046) -LibOpEveryTest:testOpEveryEval1TrueInput() (gas: 52326) -LibOpEveryTest:testOpEveryEval2FalseInputs() (gas: 57229) -LibOpEveryTest:testOpEveryEval2MixedInputs() (gas: 58020) -LibOpEveryTest:testOpEveryEval2MixedInputs2() (gas: 57959) -LibOpEveryTest:testOpEveryEval2TrueInputs() (gas: 58302) -LibOpEveryTest:testOpEveryEvalFail() (gas: 29893) -LibOpEveryTest:testOpEveryEvalZeroWithExponent() (gas: 58999) -LibOpEveryTest:testOpEveryIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2060, μ: 19807, ~: 20037) -LibOpEveryTest:testOpEveryIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2060, μ: 13869, ~: 13757) -LibOpEveryTest:testOpEveryRun(bytes32[]) (runs: 2052, μ: 20835, ~: 20873) -LibOpEveryTest:testOpEveryTwoOutputs() (gas: 36013) -LibOpEveryTest:testOpEveryZeroOutputs() (gas: 34984) -LibOpExternNPTest:testOpExternNPEvalHappy() (gas: 99797) -LibOpExternNPTest:testOpExternNPEvalMultipleInputsOutputsHappy() (gas: 115367) -LibOpExternNPTest:testOpExternNPIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),address,uint16,uint8,uint8) (runs: 2059, μ: 34984, ~: 34960) -LibOpExternNPTest:testOpExternNPIntegrityNotAnExternContract((uint256,uint256,uint256,bytes32[],uint256,bytes),address,uint16,uint8,uint8) (runs: 2059, μ: 53530, ~: 53720) -LibOpExternNPTest:testOpExternNPRunHappy(address,bytes32[],uint16,bytes32[],bytes32[]) (runs: 2059, μ: 117989, ~: 117926) -LibOpFloorTest:testOpFloorEval() (gas: 254795) -LibOpFloorTest:testOpFloorEvalOperandDisallowed() (gas: 17727) -LibOpFloorTest:testOpFloorIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2060, μ: 13756, ~: 13663) -LibOpFloorTest:testOpFloorRun(bytes32,uint16) (runs: 2060, μ: 17155, ~: 17138) -LibOpFloorTest:testOpFloorTwoInputs() (gas: 40196) -LibOpFloorTest:testOpFloorTwoOutputs() (gas: 36004) -LibOpFloorTest:testOpFloorZeroInputs() (gas: 30335) -LibOpFloorTest:testOpFloorZeroOutputs() (gas: 34997) -LibOpFracTest:testOpFracEval() (gas: 337434) -LibOpFracTest:testOpFracEvalOperandDisallowed() (gas: 17645) -LibOpFracTest:testOpFracIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2060, μ: 13798, ~: 13705) -LibOpFracTest:testOpFracRun(bytes32,uint16) (runs: 2060, μ: 17113, ~: 17096) -LibOpFracTest:testOpFracTwoInputs() (gas: 40083) -LibOpFracTest:testOpFracTwoOutputs() (gas: 35934) -LibOpFracTest:testOpFracZeroInputs() (gas: 30220) -LibOpFracTest:testOpFracZeroOutputs() (gas: 34882) -LibOpGetTest:testLibOpGetEvalKeyNotSet() (gas: 308965) -LibOpGetTest:testLibOpGetEvalOperandDisallowed() (gas: 57616) -LibOpGetTest:testLibOpGetEvalSetThenGet() (gas: 522940) -LibOpGetTest:testLibOpGetEvalStoreAndSetAndGet() (gas: 255698) -LibOpGetTest:testLibOpGetEvalStoreThenGet() (gas: 476432) -LibOpGetTest:testLibOpGetEvalThreeInputs() (gas: 45022) -LibOpGetTest:testLibOpGetEvalTwoInputs() (gas: 39780) -LibOpGetTest:testLibOpGetEvalTwoOutputs() (gas: 35372) -LibOpGetTest:testLibOpGetEvalZeroInputs() (gas: 29796) -LibOpGetTest:testLibOpGetEvalZeroOutputs() (gas: 34342) -LibOpGetTest:testLibOpGetIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2060, μ: 20570, ~: 20799) -LibOpGetTest:testLibOpGetRunState(bytes32,bytes32,uint16) (runs: 2060, μ: 19634, ~: 19638) -LibOpGetTest:testLibOpGetRunStateAndStore(bytes32,bytes32,bytes32,uint16) (runs: 2060, μ: 47595, ~: 47610) -LibOpGetTest:testLibOpGetRunStore(bytes32,bytes32,uint16) (runs: 2060, μ: 49831, ~: 49835) -LibOpGetTest:testLibOpGetRunStoreDifferentNamespace(bytes32,bytes32,uint16) (runs: 2060, μ: 51423, ~: 51427) -LibOpGetTest:testLibOpGetRunUnset(bytes32,uint16) (runs: 2060, μ: 24664, ~: 24668) -LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToEval2InputsBothOne() (gas: 59060) -LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToEval2InputsFirstOneSecondZero() (gas: 59769) -LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToEval2InputsFirstZeroSecondOne() (gas: 59769) -LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToEval2ZeroInputs() (gas: 59103) -LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToEvalFail0Inputs() (gas: 31404) -LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToEvalFail1Input() (gas: 35831) -LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToEvalFail3Inputs() (gas: 44180) -LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8) (runs: 2060, μ: 13751, ~: 13680) -LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToRun(bytes32,bytes32) (runs: 2060, μ: 17394, ~: 17323) -LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToTwoOutputs() (gas: 43025) -LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToZeroOutputs() (gas: 41799) -LibOpGreaterThanTest:testOpGreaterThanEval1_0Gt1() (gas: 58616) -LibOpGreaterThanTest:testOpGreaterThanEval1_1Gt1_2() (gas: 61217) -LibOpGreaterThanTest:testOpGreaterThanEval2InputsBothOne() (gas: 57931) -LibOpGreaterThanTest:testOpGreaterThanEval2InputsFirstOneSecondZero() (gas: 58662) -LibOpGreaterThanTest:testOpGreaterThanEval2InputsFirstZeroSecondOne() (gas: 58681) -LibOpGreaterThanTest:testOpGreaterThanEval2ZeroInputs() (gas: 57952) -LibOpGreaterThanTest:testOpGreaterThanEvalFail0Inputs() (gas: 30455) -LibOpGreaterThanTest:testOpGreaterThanEvalFail1Input() (gas: 34775) -LibOpGreaterThanTest:testOpGreaterThanEvalFail3Inputs() (gas: 43116) -LibOpGreaterThanTest:testOpGreaterThanEvalNeg1Gt0() (gas: 58714) -LibOpGreaterThanTest:testOpGreaterThanEvalNeg1_1GtNeg1_2() (gas: 61418) -LibOpGreaterThanTest:testOpGreaterThanIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2060, μ: 19701, ~: 19951) -LibOpGreaterThanTest:testOpGreaterThanRun(bytes32,bytes32) (runs: 2060, μ: 17419, ~: 17347) -LibOpGreaterThanTest:testOpGreaterThanTwoOutputs() (gas: 41873) -LibOpGreaterThanTest:testOpGreaterThanZeroOutputs() (gas: 40825) -LibOpHashNPTest:testOpHashNPEval0Inputs() (gas: 46333) -LibOpHashNPTest:testOpHashNPEval1Input() (gas: 54942) -LibOpHashNPTest:testOpHashNPEval2Inputs() (gas: 63284) -LibOpHashNPTest:testOpHashNPEval2InputsDifferent() (gas: 63958) -LibOpHashNPTest:testOpHashNPEval2InputsOtherStack() (gas: 78513) -LibOpHashNPTest:testOpHashNPIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2060, μ: 19711, ~: 19975) +LibOpDivTest:testOpDivEvalOneInput() (gas: 127233) +LibOpDivTest:testOpDivEvalOperandsDisallowed() (gas: 91705) +LibOpDivTest:testOpDivEvalThreeInputsHappy() (gas: 337741) +LibOpDivTest:testOpDivEvalThreeInputsUnhappy() (gas: 213038) +LibOpDivTest:testOpDivEvalThreeInputsUnhappyOverflow() (gas: 63933) +LibOpDivTest:testOpDivEvalTwoInputsHappy() (gas: 296121) +LibOpDivTest:testOpDivEvalTwoInputsUnhappy() (gas: 144530) +LibOpDivTest:testOpDivEvalTwoInputsUnhappyOverflow() (gas: 57349) +LibOpDivTest:testOpDivEvalTwoOutputs() (gas: 41267) +LibOpDivTest:testOpDivEvalZeroInputs() (gas: 30219) +LibOpDivTest:testOpDivEvalZeroOutputs() (gas: 40263) +LibOpDivTest:testOpDivIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2064, μ: 18257, ~: 18409) +LibOpDivTest:testOpDivIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2064, μ: 13826, ~: 13718) +LibOpDivTest:testOpDivIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2064, μ: 13849, ~: 13741) +LibOpDivTest:testOpDivRun(bytes32[]) (runs: 2052, μ: 37631, ~: 33555) +LibOpERC20AllowanceTest:testOpERC20AllowanceEvalFourInputs() (gas: 55898) +LibOpERC20AllowanceTest:testOpERC20AllowanceEvalHappy(uint256,uint8) (runs: 2064, μ: 72201, ~: 72107) +LibOpERC20AllowanceTest:testOpERC20AllowanceEvalOneInput() (gas: 37152) +LibOpERC20AllowanceTest:testOpERC20AllowanceEvalOperandDisallowed() (gas: 18643) +LibOpERC20AllowanceTest:testOpERC20AllowanceEvalTwoInputs() (gas: 43683) +LibOpERC20AllowanceTest:testOpERC20AllowanceEvalTwoOutputs() (gas: 50717) +LibOpERC20AllowanceTest:testOpERC20AllowanceEvalZeroInputs() (gas: 31159) +LibOpERC20AllowanceTest:testOpERC20AllowanceEvalZeroOutputs() (gas: 49693) +LibOpERC20AllowanceTest:testOpERC20AllowanceIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2064, μ: 13715, ~: 13626) +LibOpERC20AllowanceTest:testOpERC20AllowanceRun(address,address,address,uint256,uint8) (runs: 2062, μ: 27669, ~: 27579) +LibOpERC20BalanceOfTest:testOpERC20BalanceOfEvalHappy(uint256,uint8) (runs: 2062, μ: 66118, ~: 66118) +LibOpERC20BalanceOfTest:testOpERC20BalanceOfEvalOneInput() (gas: 37257) +LibOpERC20BalanceOfTest:testOpERC20BalanceOfEvalOperandDisallowed() (gas: 18701) +LibOpERC20BalanceOfTest:testOpERC20BalanceOfEvalOverflow(uint256,uint8) (runs: 2048, μ: 62387, ~: 62387) +LibOpERC20BalanceOfTest:testOpERC20BalanceOfEvalThreeInputs() (gas: 49584) +LibOpERC20BalanceOfTest:testOpERC20BalanceOfEvalTwoOutputs() (gas: 44453) +LibOpERC20BalanceOfTest:testOpERC20BalanceOfEvalZeroInputs() (gas: 31218) +LibOpERC20BalanceOfTest:testOpERC20BalanceOfEvalZeroOutputs() (gas: 43385) +LibOpERC20BalanceOfTest:testOpERC20BalanceOfIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2064, μ: 13694, ~: 13605) +LibOpERC20BalanceOfTest:testOpERC20BalanceOfRun(address,address,uint256,uint16,uint8) (runs: 2061, μ: 28009, ~: 28009) +LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyEvalHappy(uint256,uint8) (runs: 2060, μ: 59288, ~: 59288) +LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyEvalOperandDisallowed() (gas: 18864) +LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyEvalOverflow(uint256,uint8) (runs: 2049, μ: 55523, ~: 55523) +LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyEvalTwoInputs() (gas: 43905) +LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyEvalTwoOutputs() (gas: 38267) +LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyEvalZeroInputs() (gas: 31401) +LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyEvalZeroOutputs() (gas: 37239) +LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2064, μ: 13738, ~: 13649) +LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyNPRun(address,uint256,uint16,uint8) (runs: 2061, μ: 27211, ~: 27211) +LibOpERC5313OwnerTest:testOpERC5313OwnerEvalHappy() (gas: 55308) +LibOpERC5313OwnerTest:testOpERC5313OwnerEvalOperandDisallowed() (gas: 18382) +LibOpERC5313OwnerTest:testOpERC5313OwnerEvalTwoInputs() (gas: 43501) +LibOpERC5313OwnerTest:testOpERC5313OwnerEvalTwoOutputs() (gas: 37704) +LibOpERC5313OwnerTest:testOpERC5313OwnerEvalZeroInputs() (gas: 30995) +LibOpERC5313OwnerTest:testOpERC5313OwnerEvalZeroOutputs() (gas: 36675) +LibOpERC5313OwnerTest:testOpERC5313OwnerOfIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2064, μ: 13755, ~: 13666) +LibOpERC5313OwnerTest:testOpERC5313OwnerOfRun(address,address,uint16) (runs: 2062, μ: 23615, ~: 23615) +LibOpERC721BalanceOfTest:testOpERC721BalanceOfEvalHappy(address,address,uint256) (runs: 2061, μ: 105379, ~: 105530) +LibOpERC721BalanceOfTest:testOpERC721BalanceOfIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2064, μ: 19658, ~: 19812) +LibOpERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFail0() (gas: 30862) +LibOpERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFail1() (gas: 35151) +LibOpERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFail3() (gas: 44587) +LibOpERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFailOperand() (gas: 21585) +LibOpERC721BalanceOfTest:testOpERC721BalanceOfOneInput() (gas: 35618) +LibOpERC721BalanceOfTest:testOpERC721BalanceOfRun(address,address,uint256,uint16) (runs: 2061, μ: 26008, ~: 26008) +LibOpERC721BalanceOfTest:testOpERC721BalanceOfThreeInputs() (gas: 45107) +LibOpERC721BalanceOfTest:testOpERC721BalanceOfTwoOutputs() (gas: 41112) +LibOpERC721BalanceOfTest:testOpERC721BalanceOfZeroInputs() (gas: 31296) +LibOpERC721BalanceOfTest:testOpERC721BalanceOfZeroOutputs() (gas: 39930) +LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalFail0() (gas: 30745) +LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalFail1() (gas: 35032) +LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalFail3() (gas: 44523) +LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalFailOperand() (gas: 18234) +LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalHappy(address,uint256,address) (runs: 2062, μ: 96647, ~: 92570) +LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalOneInput() (gas: 35490) +LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalThreeInputs() (gas: 44988) +LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalZeroInputs() (gas: 31192) +LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalZeroOutputs() (gas: 39781) +LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8) (runs: 2064, μ: 13768, ~: 13701) +LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPRun(address,bytes32,address,uint16) (runs: 2062, μ: 24201, ~: 24201) +LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPTwoOutputs() (gas: 40827) +LibOpETest:testOpEEval() (gas: 44640) +LibOpETest:testOpEEvalOneInput() (gas: 34298) +LibOpETest:testOpEEvalTwoOutputs() (gas: 30666) +LibOpETest:testOpEEvalZeroOutputs() (gas: 29615) +LibOpETest:testOpEIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2064, μ: 19692, ~: 19943) +LibOpETest:testOpERun(uint16) (runs: 2064, μ: 16132, ~: 16132) +LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalHappy() (gas: 833580) +LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalOneInput() (gas: 42088) +LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalThreeInputs() (gas: 51835) +LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalTwoOutputs() (gas: 47661) +LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalZeroInputs() (gas: 37110) +LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalZeroOutputs() (gas: 46657) +LibOpEncodeBitsNPTest:testOpEncodeBitsNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8) (runs: 2064, μ: 18151, ~: 18137) +LibOpEncodeBitsNPTest:testOpEncodeBitsNPIntegrityFail((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8) (runs: 2064, μ: 41713, ~: 41757) +LibOpEncodeBitsNPTest:testOpEncodeBitsNPIntegrityFailZeroLength((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8) (runs: 2064, μ: 35832, ~: 35595) +LibOpEncodeBitsNPTest:testOpEncodeBitsNPRun(bytes32,bytes32,uint8,uint8) (runs: 2064, μ: 21394, ~: 21212) +LibOpEnsureTest:testOpEnsureEvalBadOutputs() (gas: 34460) +LibOpEnsureTest:testOpEnsureEvalBadOutputs2() (gas: 33985) +LibOpEnsureTest:testOpEnsureEvalHappy() (gas: 166172) +LibOpEnsureTest:testOpEnsureEvalOne() (gas: 34678) +LibOpEnsureTest:testOpEnsureEvalThree() (gas: 45396) +LibOpEnsureTest:testOpEnsureEvalUnhappy() (gas: 164901) +LibOpEnsureTest:testOpEnsureEvalUnhappyOperand() (gas: 17085) +LibOpEnsureTest:testOpEnsureEvalZero() (gas: 29675) +LibOpEnsureTest:testOpEnsureIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2064, μ: 19712, ~: 19892) +LibOpEnsureTest:testOpEnsureIntegrityUnhappy((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2064, μ: 13817, ~: 13709) +LibOpEnsureTest:testOpEnsureOneOutput() (gas: 39634) +LibOpEnsureTest:testOpEnsureRun(bytes32,string) (runs: 2055, μ: 18059, ~: 18106) +LibOpEqualToNPTest:testOpEqualToEval2Inputs() (gas: 339601) +LibOpEqualToNPTest:testOpEqualToEval2InputsBothOne() (gas: 57700) +LibOpEqualToNPTest:testOpEqualToEval2InputsFirstOneSecondZero() (gas: 58388) +LibOpEqualToNPTest:testOpEqualToEval2InputsFirstZeroSecondOne() (gas: 58391) +LibOpEqualToNPTest:testOpEqualToEval2ZeroInputs() (gas: 57723) +LibOpEqualToNPTest:testOpEqualToEvalFail0Inputs() (gas: 30099) +LibOpEqualToNPTest:testOpEqualToEvalFail1Input() (gas: 34409) +LibOpEqualToNPTest:testOpEqualToEvalFail3Inputs() (gas: 42833) +LibOpEqualToNPTest:testOpEqualToIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2064, μ: 19674, ~: 19906) +LibOpEqualToNPTest:testOpEqualToRun(bytes32,bytes32) (runs: 2064, μ: 17543, ~: 17466) +LibOpEqualToNPTest:testOpEqualToTwoOutputs() (gas: 41098) +LibOpEqualToNPTest:testOpEqualToZeroOutputs() (gas: 40007) +LibOpEveryTest:testOpEveryEval1FalseInput() (gas: 52064) +LibOpEveryTest:testOpEveryEval1TrueInput() (gas: 52344) +LibOpEveryTest:testOpEveryEval2FalseInputs() (gas: 57247) +LibOpEveryTest:testOpEveryEval2MixedInputs() (gas: 58040) +LibOpEveryTest:testOpEveryEval2MixedInputs2() (gas: 57979) +LibOpEveryTest:testOpEveryEval2TrueInputs() (gas: 58322) +LibOpEveryTest:testOpEveryEvalFail() (gas: 29905) +LibOpEveryTest:testOpEveryEvalZeroWithExponent() (gas: 59019) +LibOpEveryTest:testOpEveryIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2064, μ: 19800, ~: 20051) +LibOpEveryTest:testOpEveryIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2064, μ: 13865, ~: 13757) +LibOpEveryTest:testOpEveryRun(bytes32[]) (runs: 2052, μ: 20845, ~: 20873) +LibOpEveryTest:testOpEveryTwoOutputs() (gas: 36025) +LibOpEveryTest:testOpEveryZeroOutputs() (gas: 34996) +LibOpExponentialGrowthTest:testOpExponentialGrowthEval() (gas: 773499) +LibOpExponentialGrowthTest:testOpExponentialGrowthEvalFourInputs() (gas: 51625) +LibOpExponentialGrowthTest:testOpExponentialGrowthEvalOneInput() (gas: 36408) +LibOpExponentialGrowthTest:testOpExponentialGrowthEvalOperandDisallowed() (gas: 18817) +LibOpExponentialGrowthTest:testOpExponentialGrowthEvalTwoInputs() (gas: 41801) +LibOpExponentialGrowthTest:testOpExponentialGrowthEvalTwoOutputs() (gas: 47358) +LibOpExponentialGrowthTest:testOpExponentialGrowthEvalZeroInputs() (gas: 31066) +LibOpExponentialGrowthTest:testOpExponentialGrowthEvalZeroOutputs() (gas: 46289) +LibOpExponentialGrowthTest:testOpExponentialGrowthIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2064, μ: 13751, ~: 13662) +LibOpExponentialGrowthTest:testOpExponentialGrowthRun(int224,int32,int224,int32,int224,int32,uint16) (runs: 2064, μ: 69249, ~: 71060) +LibOpExternNPTest:testOpExternNPEvalHappy() (gas: 99815) +LibOpExternNPTest:testOpExternNPEvalMultipleInputsOutputsHappy() (gas: 115386) +LibOpExternNPTest:testOpExternNPIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),address,uint16,uint8,uint8) (runs: 2062, μ: 34999, ~: 35002) +LibOpExternNPTest:testOpExternNPIntegrityNotAnExternContract((uint256,uint256,uint256,bytes32[],uint256,bytes),address,uint16,uint8,uint8) (runs: 2062, μ: 53571, ~: 53730) +LibOpExternNPTest:testOpExternNPRunHappy(address,bytes32[],uint16,bytes32[],bytes32[]) (runs: 2062, μ: 117979, ~: 117836) +LibOpFloorTest:testOpFloorEval() (gas: 254903) +LibOpFloorTest:testOpFloorEvalOperandDisallowed() (gas: 17733) +LibOpFloorTest:testOpFloorIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2064, μ: 13752, ~: 13663) +LibOpFloorTest:testOpFloorRun(bytes32,uint16) (runs: 2064, μ: 17155, ~: 17138) +LibOpFloorTest:testOpFloorTwoInputs() (gas: 40208) +LibOpFloorTest:testOpFloorTwoOutputs() (gas: 36016) +LibOpFloorTest:testOpFloorZeroInputs() (gas: 30347) +LibOpFloorTest:testOpFloorZeroOutputs() (gas: 35009) +LibOpFracTest:testOpFracEval() (gas: 337578) +LibOpFracTest:testOpFracEvalOperandDisallowed() (gas: 17651) +LibOpFracTest:testOpFracIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2064, μ: 13794, ~: 13705) +LibOpFracTest:testOpFracRun(bytes32,uint16) (runs: 2064, μ: 17113, ~: 17096) +LibOpFracTest:testOpFracTwoInputs() (gas: 40095) +LibOpFracTest:testOpFracTwoOutputs() (gas: 35946) +LibOpFracTest:testOpFracZeroInputs() (gas: 30232) +LibOpFracTest:testOpFracZeroOutputs() (gas: 34894) +LibOpGetTest:testLibOpGetEvalKeyNotSet() (gas: 309076) +LibOpGetTest:testLibOpGetEvalOperandDisallowed() (gas: 57640) +LibOpGetTest:testLibOpGetEvalSetThenGet() (gas: 523074) +LibOpGetTest:testLibOpGetEvalStoreAndSetAndGet() (gas: 255755) +LibOpGetTest:testLibOpGetEvalStoreThenGet() (gas: 476578) +LibOpGetTest:testLibOpGetEvalThreeInputs() (gas: 45034) +LibOpGetTest:testLibOpGetEvalTwoInputs() (gas: 39793) +LibOpGetTest:testLibOpGetEvalTwoOutputs() (gas: 35384) +LibOpGetTest:testLibOpGetEvalZeroInputs() (gas: 29808) +LibOpGetTest:testLibOpGetEvalZeroOutputs() (gas: 34354) +LibOpGetTest:testLibOpGetIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2064, μ: 20564, ~: 20822) +LibOpGetTest:testLibOpGetRunState(bytes32,bytes32,uint16) (runs: 2064, μ: 19634, ~: 19638) +LibOpGetTest:testLibOpGetRunStateAndStore(bytes32,bytes32,bytes32,uint16) (runs: 2064, μ: 47596, ~: 47610) +LibOpGetTest:testLibOpGetRunStore(bytes32,bytes32,uint16) (runs: 2064, μ: 49831, ~: 49835) +LibOpGetTest:testLibOpGetRunStoreDifferentNamespace(bytes32,bytes32,uint16) (runs: 2064, μ: 51423, ~: 51427) +LibOpGetTest:testLibOpGetRunUnset(bytes32,uint16) (runs: 2064, μ: 24664, ~: 24668) +LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToEval2InputsBothOne() (gas: 59079) +LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToEval2InputsFirstOneSecondZero() (gas: 59788) +LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToEval2InputsFirstZeroSecondOne() (gas: 59788) +LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToEval2ZeroInputs() (gas: 59122) +LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToEvalFail0Inputs() (gas: 31416) +LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToEvalFail1Input() (gas: 35844) +LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToEvalFail3Inputs() (gas: 44193) +LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8) (runs: 2064, μ: 13747, ~: 13680) +LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToRun(bytes32,bytes32) (runs: 2064, μ: 17393, ~: 17323) +LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToTwoOutputs() (gas: 43037) +LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToZeroOutputs() (gas: 41812) +LibOpGreaterThanTest:testOpGreaterThanEval1_0Gt1() (gas: 58634) +LibOpGreaterThanTest:testOpGreaterThanEval1_1Gt1_2() (gas: 61237) +LibOpGreaterThanTest:testOpGreaterThanEval2InputsBothOne() (gas: 57949) +LibOpGreaterThanTest:testOpGreaterThanEval2InputsFirstOneSecondZero() (gas: 58682) +LibOpGreaterThanTest:testOpGreaterThanEval2InputsFirstZeroSecondOne() (gas: 58701) +LibOpGreaterThanTest:testOpGreaterThanEval2ZeroInputs() (gas: 57970) +LibOpGreaterThanTest:testOpGreaterThanEvalFail0Inputs() (gas: 30467) +LibOpGreaterThanTest:testOpGreaterThanEvalFail1Input() (gas: 34787) +LibOpGreaterThanTest:testOpGreaterThanEvalFail3Inputs() (gas: 43128) +LibOpGreaterThanTest:testOpGreaterThanEvalNeg1Gt0() (gas: 58734) +LibOpGreaterThanTest:testOpGreaterThanEvalNeg1_1GtNeg1_2() (gas: 61438) +LibOpGreaterThanTest:testOpGreaterThanIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2064, μ: 19693, ~: 19937) +LibOpGreaterThanTest:testOpGreaterThanRun(bytes32,bytes32) (runs: 2064, μ: 17419, ~: 17347) +LibOpGreaterThanTest:testOpGreaterThanTwoOutputs() (gas: 41886) +LibOpGreaterThanTest:testOpGreaterThanZeroOutputs() (gas: 40838) +LibOpHashNPTest:testOpHashNPEval0Inputs() (gas: 46351) +LibOpHashNPTest:testOpHashNPEval1Input() (gas: 54960) +LibOpHashNPTest:testOpHashNPEval2Inputs() (gas: 63303) +LibOpHashNPTest:testOpHashNPEval2InputsDifferent() (gas: 63977) +LibOpHashNPTest:testOpHashNPEval2InputsOtherStack() (gas: 78532) +LibOpHashNPTest:testOpHashNPIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2064, μ: 19712, ~: 19956) LibOpHashNPTest:testOpHashNPRun(bytes32[]) (runs: 2052, μ: 19458, ~: 19563) -LibOpHashNPTest:testOpHashNPTwoOutputs() (gas: 30864) -LibOpHashNPTest:testOpHashNPZeroOutputs() (gas: 29490) -LibOpIfTest:testOpIfEval3InputsFirstOneSecondTwoThirdThree() (gas: 63706) -LibOpIfTest:testOpIfEval3InputsFirstOneSecondZeroThirdThree() (gas: 63458) -LibOpIfTest:testOpIfEval3InputsFirstTwoSecondThreeThirdFour() (gas: 63662) -LibOpIfTest:testOpIfEval3InputsFirstTwoSecondZeroThirdFour() (gas: 63458) -LibOpIfTest:testOpIfEval3InputsFirstZeroSecondOneThirdTwo() (gas: 63705) -LibOpIfTest:testOpIfEval3InputsFirstZeroSecondOneThirdZero() (gas: 62904) -LibOpIfTest:testOpIfEval3InputsFirstZeroSecondZeroThirdOne() (gas: 62952) -LibOpIfTest:testOpIfEval3InputsFirstZeroSecondZeroThirdThree() (gas: 62955) -LibOpIfTest:testOpIfEvalEmptyStringTruthy() (gas: 163809) -LibOpIfTest:testOpIfEvalFail0Inputs() (gas: 29623) -LibOpIfTest:testOpIfEvalFail1Input() (gas: 33977) -LibOpIfTest:testOpIfEvalFail2Inputs() (gas: 38106) -LibOpIfTest:testOpIfEvalFail4Inputs() (gas: 46474) -LibOpIfTest:testOpIfEvalTwoOutputs() (gas: 45977) -LibOpIfTest:testOpIfEvalZeroExponent() (gas: 65010) -LibOpIfTest:testOpIfEvalZeroOutputs() (gas: 44908) -LibOpIfTest:testOpIfIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2060, μ: 19680, ~: 19872) -LibOpIfTest:testOpIfRun(bytes32,bytes32,bytes32) (runs: 2060, μ: 17013, ~: 17014) -LibOpInvTest:testOpExpEvalOperandDisallowed() (gas: 17626) -LibOpInvTest:testOpInvEval() (gas: 176970) -LibOpInvTest:testOpInvIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2060, μ: 13756, ~: 13663) -LibOpInvTest:testOpInvRun(int224,int32,uint16) (runs: 2060, μ: 25068, ~: 25219) -LibOpInvTest:testOpInvTwoInputs() (gas: 40098) -LibOpInvTest:testOpInvTwoOutputs() (gas: 35884) -LibOpInvTest:testOpInvZeroInputs() (gas: 30215) -LibOpInvTest:testOpInvZeroOutputs() (gas: 34877) -LibOpIsZeroTest:testOpIsZeroEval0e20Input() (gas: 54054) -LibOpIsZeroTest:testOpIsZeroEval1NonZeroInput() (gas: 53012) -LibOpIsZeroTest:testOpIsZeroEval1ZeroInput() (gas: 52749) -LibOpIsZeroTest:testOpIsZeroEvalFail0Inputs() (gas: 30670) -LibOpIsZeroTest:testOpIsZeroEvalFail2Inputs() (gas: 39228) -LibOpIsZeroTest:testOpIsZeroNPIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2060, μ: 19785, ~: 20008) -LibOpIsZeroTest:testOpIsZeroRun(bytes32) (runs: 2060, μ: 16420, ~: 16421) -LibOpIsZeroTest:testOpIsZeroTwoOutputs() (gas: 37063) -LibOpIsZeroTest:testOpIsZeroZeroOutputs() (gas: 35769) -LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToEval2InputsBothOne() (gas: 57242) -LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToEval2InputsFirstOneSecondZero() (gas: 57952) -LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToEval2InputsFirstZeroSecondOne() (gas: 57973) -LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToEval2ZeroInputs() (gas: 57266) -LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToEvalFail0Inputs() (gas: 31139) -LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToEvalFail1Input() (gas: 35494) -LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToEvalFail3Inputs() (gas: 43957) -LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2060, μ: 19678, ~: 19931) -LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToRun(bytes32,bytes32) (runs: 2060, μ: 17402, ~: 17329) -LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToTwoOutputs() (gas: 42624) -LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToZeroOutputs() (gas: 41577) -LibOpLessThanTest:testOpLessThanEval2InputsFirstZeroSecondOne() (gas: 58438) -LibOpLessThanTest:testOpLessThanEval2ZeroInputs() (gas: 57687) -LibOpLessThanTest:testOpLessThanIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2060, μ: 19710, ~: 19966) -LibOpLessThanTest:testOpLessThanNP1_0Lt1() (gas: 58440) -LibOpLessThanTest:testOpLessThanNP1_1Lt1_2() (gas: 60930) -LibOpLessThanTest:testOpLessThanNPEval2InputsBothOne() (gas: 57711) -LibOpLessThanTest:testOpLessThanNPEval2InputsFirstOneSecondZero() (gas: 58395) -LibOpLessThanTest:testOpLessThanNPMinus1Lt0() (gas: 58493) -LibOpLessThanTest:testOpLessThanNPMinus1_1LtMinus1_2() (gas: 61154) -LibOpLessThanTest:testOpLessThanNPTwoOutputs() (gas: 41959) -LibOpLessThanTest:testOpLessThanNPZeroOutputs() (gas: 40074) -LibOpLessThanTest:testOpLessThanRun(bytes32,bytes32) (runs: 2060, μ: 17424, ~: 17353) -LibOpLessThanTest:testOpLessThanToNPEvalFail0Inputs() (gas: 30190) -LibOpLessThanTest:testOpLessThanToNPEvalFail1Input() (gas: 34479) -LibOpLessThanTest:testOpLessThanToNPEvalFail3Inputs() (gas: 42859) -LibOpLinearGrowthTest:testOpLinearGrowthEval() (gas: 783891) -LibOpLinearGrowthTest:testOpLinearGrowthEvalFourInputs() (gas: 51218) -LibOpLinearGrowthTest:testOpLinearGrowthEvalOneInput() (gas: 36045) -LibOpLinearGrowthTest:testOpLinearGrowthEvalOperandDisallowed() (gas: 18414) -LibOpLinearGrowthTest:testOpLinearGrowthEvalTwoInputs() (gas: 41394) -LibOpLinearGrowthTest:testOpLinearGrowthEvalTwoOutputs() (gas: 46910) -LibOpLinearGrowthTest:testOpLinearGrowthEvalZeroInputs() (gas: 30638) -LibOpLinearGrowthTest:testOpLinearGrowthEvalZeroOutputs() (gas: 45861) -LibOpLinearGrowthTest:testOpLinearGrowthIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2060, μ: 13755, ~: 13662) -LibOpLinearGrowthTest:testOpLinearGrowthRun(int224,int32,int224,int32,int224,int32,uint16) (runs: 2060, μ: 36146, ~: 36756) -LibOpMaxNegativeValueTest:testOpMaxNegativeValueEval() (gas: 47399) -LibOpMaxNegativeValueTest:testOpMaxNegativeValueEvalFail() (gas: 35205) +LibOpHashNPTest:testOpHashNPTwoOutputs() (gas: 30876) +LibOpHashNPTest:testOpHashNPZeroOutputs() (gas: 29502) +LibOpIfTest:testOpIfEval3InputsFirstOneSecondTwoThirdThree() (gas: 63725) +LibOpIfTest:testOpIfEval3InputsFirstOneSecondZeroThirdThree() (gas: 63477) +LibOpIfTest:testOpIfEval3InputsFirstTwoSecondThreeThirdFour() (gas: 63681) +LibOpIfTest:testOpIfEval3InputsFirstTwoSecondZeroThirdFour() (gas: 63477) +LibOpIfTest:testOpIfEval3InputsFirstZeroSecondOneThirdTwo() (gas: 63724) +LibOpIfTest:testOpIfEval3InputsFirstZeroSecondOneThirdZero() (gas: 62923) +LibOpIfTest:testOpIfEval3InputsFirstZeroSecondZeroThirdOne() (gas: 62971) +LibOpIfTest:testOpIfEval3InputsFirstZeroSecondZeroThirdThree() (gas: 62974) +LibOpIfTest:testOpIfEvalEmptyStringTruthy() (gas: 163866) +LibOpIfTest:testOpIfEvalFail0Inputs() (gas: 29635) +LibOpIfTest:testOpIfEvalFail1Input() (gas: 33989) +LibOpIfTest:testOpIfEvalFail2Inputs() (gas: 38118) +LibOpIfTest:testOpIfEvalFail4Inputs() (gas: 46486) +LibOpIfTest:testOpIfEvalTwoOutputs() (gas: 45990) +LibOpIfTest:testOpIfEvalZeroExponent() (gas: 65029) +LibOpIfTest:testOpIfEvalZeroOutputs() (gas: 44921) +LibOpIfTest:testOpIfIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2064, μ: 19669, ~: 19949) +LibOpIfTest:testOpIfRun(bytes32,bytes32,bytes32) (runs: 2064, μ: 17013, ~: 17014) +LibOpInvTest:testOpExpEvalOperandDisallowed() (gas: 17632) +LibOpInvTest:testOpInvEval() (gas: 177042) +LibOpInvTest:testOpInvIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2064, μ: 13752, ~: 13663) +LibOpInvTest:testOpInvRun(int224,int32,uint16) (runs: 2064, μ: 25067, ~: 25219) +LibOpInvTest:testOpInvTwoInputs() (gas: 40110) +LibOpInvTest:testOpInvTwoOutputs() (gas: 35896) +LibOpInvTest:testOpInvZeroInputs() (gas: 30227) +LibOpInvTest:testOpInvZeroOutputs() (gas: 34889) +LibOpIsZeroTest:testOpIsZeroEval0e20Input() (gas: 54072) +LibOpIsZeroTest:testOpIsZeroEval1NonZeroInput() (gas: 53030) +LibOpIsZeroTest:testOpIsZeroEval1ZeroInput() (gas: 52767) +LibOpIsZeroTest:testOpIsZeroEvalFail0Inputs() (gas: 30682) +LibOpIsZeroTest:testOpIsZeroEvalFail2Inputs() (gas: 39240) +LibOpIsZeroTest:testOpIsZeroNPIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2064, μ: 19792, ~: 20088) +LibOpIsZeroTest:testOpIsZeroRun(bytes32) (runs: 2064, μ: 16420, ~: 16421) +LibOpIsZeroTest:testOpIsZeroTwoOutputs() (gas: 37075) +LibOpIsZeroTest:testOpIsZeroZeroOutputs() (gas: 35781) +LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToEval2InputsBothOne() (gas: 57260) +LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToEval2InputsFirstOneSecondZero() (gas: 57972) +LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToEval2InputsFirstZeroSecondOne() (gas: 57993) +LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToEval2ZeroInputs() (gas: 57284) +LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToEvalFail0Inputs() (gas: 31151) +LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToEvalFail1Input() (gas: 35506) +LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToEvalFail3Inputs() (gas: 43970) +LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2064, μ: 19680, ~: 19988) +LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToRun(bytes32,bytes32) (runs: 2064, μ: 17399, ~: 17329) +LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToTwoOutputs() (gas: 42637) +LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToZeroOutputs() (gas: 41590) +LibOpLessThanTest:testOpLessThanEval2InputsFirstZeroSecondOne() (gas: 58458) +LibOpLessThanTest:testOpLessThanEval2ZeroInputs() (gas: 57705) +LibOpLessThanTest:testOpLessThanIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2064, μ: 19696, ~: 19966) +LibOpLessThanTest:testOpLessThanNP1_0Lt1() (gas: 58458) +LibOpLessThanTest:testOpLessThanNP1_1Lt1_2() (gas: 60950) +LibOpLessThanTest:testOpLessThanNPEval2InputsBothOne() (gas: 57729) +LibOpLessThanTest:testOpLessThanNPEval2InputsFirstOneSecondZero() (gas: 58415) +LibOpLessThanTest:testOpLessThanNPMinus1Lt0() (gas: 58513) +LibOpLessThanTest:testOpLessThanNPMinus1_1LtMinus1_2() (gas: 61174) +LibOpLessThanTest:testOpLessThanNPTwoOutputs() (gas: 41972) +LibOpLessThanTest:testOpLessThanNPZeroOutputs() (gas: 40086) +LibOpLessThanTest:testOpLessThanRun(bytes32,bytes32) (runs: 2064, μ: 17423, ~: 17353) +LibOpLessThanTest:testOpLessThanToNPEvalFail0Inputs() (gas: 30202) +LibOpLessThanTest:testOpLessThanToNPEvalFail1Input() (gas: 34491) +LibOpLessThanTest:testOpLessThanToNPEvalFail3Inputs() (gas: 42871) +LibOpLinearGrowthTest:testOpLinearGrowthEval() (gas: 793593) +LibOpLinearGrowthTest:testOpLinearGrowthEvalFourInputs() (gas: 51905) +LibOpLinearGrowthTest:testOpLinearGrowthEvalOneInput() (gas: 36731) +LibOpLinearGrowthTest:testOpLinearGrowthEvalOperandDisallowed() (gas: 19094) +LibOpLinearGrowthTest:testOpLinearGrowthEvalTwoInputs() (gas: 42081) +LibOpLinearGrowthTest:testOpLinearGrowthEvalTwoOutputs() (gas: 47597) +LibOpLinearGrowthTest:testOpLinearGrowthEvalZeroInputs() (gas: 31324) +LibOpLinearGrowthTest:testOpLinearGrowthEvalZeroOutputs() (gas: 46548) +LibOpLinearGrowthTest:testOpLinearGrowthIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2064, μ: 13751, ~: 13662) +LibOpLinearGrowthTest:testOpLinearGrowthRun(int224,int32,int224,int32,int224,int32,uint16) (runs: 2064, μ: 36145, ~: 36753) +LibOpMaxNegativeValueTest:testOpMaxNegativeValueEval() (gas: 47417) +LibOpMaxNegativeValueTest:testOpMaxNegativeValueEvalFail() (gas: 35217) LibOpMaxNegativeValueTest:testOpMaxNegativeValueRun() (gas: 16187) -LibOpMaxNegativeValueTest:testOpMaxNegativeValueTwoOutputs() (gas: 31969) -LibOpMaxNegativeValueTest:testOpMaxNegativeValueZeroOutputs() (gas: 30961) -LibOpMaxNegativeValueTest:testOpMaxValueIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2060, μ: 19670, ~: 19845) -LibOpMaxPositiveValueTest:testOpMaxPositiveValueEvalFail() (gas: 35204) +LibOpMaxNegativeValueTest:testOpMaxNegativeValueTwoOutputs() (gas: 31981) +LibOpMaxNegativeValueTest:testOpMaxNegativeValueZeroOutputs() (gas: 30973) +LibOpMaxNegativeValueTest:testOpMaxValueIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2064, μ: 19664, ~: 19918) +LibOpMaxPositiveValueTest:testOpMaxPositiveValueEval() (gas: 47416) +LibOpMaxPositiveValueTest:testOpMaxPositiveValueEvalFail() (gas: 35238) +LibOpMaxPositiveValueTest:testOpMaxPositiveValueIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2064, μ: 19704, ~: 19928) LibOpMaxPositiveValueTest:testOpMaxPositiveValueRun() (gas: 16196) -LibOpMaxPositiveValueTest:testOpMaxPositiveValueTwoOutputs() (gas: 32034) -LibOpMaxPositiveValueTest:testOpMaxPositiveValueZeroOutputs() (gas: 30938) -LibOpMaxPositiveValueTest:testOpMaxPositivepValueEval() (gas: 47441) -LibOpMaxPositiveValueTest:testOpMaxValueIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2060, μ: 19708, ~: 19928) -LibOpMaxTest:testOpMaxEval2InputsHappy() (gas: 885590) -LibOpMaxTest:testOpMaxEval3InputsHappy() (gas: 2038875) -LibOpMaxTest:testOpMaxEvalOneInput() (gas: 129922) -LibOpMaxTest:testOpMaxEvalOperandDisallowed() (gas: 59013) -LibOpMaxTest:testOpMaxEvalTwoOutputs() (gas: 40769) -LibOpMaxTest:testOpMaxEvalZeroInputs() (gas: 30209) -LibOpMaxTest:testOpMaxIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2060, μ: 18215, ~: 18435) -LibOpMaxTest:testOpMaxIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2060, μ: 13831, ~: 13719) -LibOpMaxTest:testOpMaxIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2060, μ: 13853, ~: 13741) -LibOpMaxTest:testOpMaxRun(bytes32[]) (runs: 2052, μ: 26584, ~: 26441) -LibOpMaxUint256Test:testOpMaxUint256Eval() (gas: 47328) -LibOpMaxUint256Test:testOpMaxUint256EvalFail() (gas: 35147) -LibOpMaxUint256Test:testOpMaxUint256Integrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2060, μ: 19664, ~: 19883) +LibOpMaxPositiveValueTest:testOpMaxPositiveValueTwoOutputs() (gas: 31980) +LibOpMaxPositiveValueTest:testOpMaxPositiveValueZeroOutputs() (gas: 30972) +LibOpMaxTest:testOpMaxEval2InputsHappy() (gas: 885950) +LibOpMaxTest:testOpMaxEval3InputsHappy() (gas: 2039613) +LibOpMaxTest:testOpMaxEvalOneInput() (gas: 129970) +LibOpMaxTest:testOpMaxEvalOperandDisallowed() (gas: 59037) +LibOpMaxTest:testOpMaxEvalTwoOutputs() (gas: 40781) +LibOpMaxTest:testOpMaxEvalZeroInputs() (gas: 30221) +LibOpMaxTest:testOpMaxIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2064, μ: 18209, ~: 18408) +LibOpMaxTest:testOpMaxIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2064, μ: 13827, ~: 13719) +LibOpMaxTest:testOpMaxIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2064, μ: 13849, ~: 13741) +LibOpMaxTest:testOpMaxRun(bytes32[]) (runs: 2052, μ: 26586, ~: 26345) +LibOpMaxUint256Test:testOpMaxUint256Eval() (gas: 47346) +LibOpMaxUint256Test:testOpMaxUint256EvalFail() (gas: 35159) +LibOpMaxUint256Test:testOpMaxUint256Integrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2064, μ: 19649, ~: 19898) LibOpMaxUint256Test:testOpMaxUint256Run() (gas: 15997) -LibOpMaxUint256Test:testOpMaxUint256TwoOutputs() (gas: 31931) -LibOpMaxUint256Test:testOpMaxUint256ZeroOutputs() (gas: 30836) -LibOpMinNegativeValueTest:testOpMinNegativeValueEval() (gas: 47419) -LibOpMinNegativeValueTest:testOpMinNegativeValueEvalFail() (gas: 35227) -LibOpMinNegativeValueTest:testOpMinNegativeValueIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2060, μ: 19690, ~: 19945) +LibOpMaxUint256Test:testOpMaxUint256TwoOutputs() (gas: 31943) +LibOpMaxUint256Test:testOpMaxUint256ZeroOutputs() (gas: 30848) +LibOpMinNegativeValueTest:testOpMinNegativeValueEval() (gas: 47437) +LibOpMinNegativeValueTest:testOpMinNegativeValueEvalFail() (gas: 35239) +LibOpMinNegativeValueTest:testOpMinNegativeValueIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2064, μ: 19678, ~: 19921) LibOpMinNegativeValueTest:testOpMinNegativeValueRun() (gas: 16218) -LibOpMinNegativeValueTest:testOpMinNegativeValueTwoOutputs() (gas: 31990) -LibOpMinNegativeValueTest:testOpMinNegativeValueZeroOutputs() (gas: 30960) -LibOpMinPositiveValueTest:testOpMinPositiveValueEvalFail() (gas: 35184) -LibOpMinPositiveValueTest:testOpMinPositiveValueIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2060, μ: 19663, ~: 19888) -LibOpMinPositiveValueTest:testOpMinPositiveValueRun() (gas: 16218) -LibOpMinPositiveValueTest:testOpMinPositiveValueTwoOutputs() (gas: 31989) -LibOpMinPositiveValueTest:testOpMinPositiveValueZeroOutputs() (gas: 30959) -LibOpMinPositiveValueTest:testOpMinPositivepValueEval() (gas: 47398) -LibOpMinTest:testOpMinEval2InputsHappy() (gas: 978454) -LibOpMinTest:testOpMinEval3InputsHappy() (gas: 3502561) -LibOpMinTest:testOpMinEvalOneInput() (gas: 127086) -LibOpMinTest:testOpMinEvalOperandDisallowed() (gas: 59036) -LibOpMinTest:testOpMinEvalZeroInputs() (gas: 30189) -LibOpMinTest:testOpMinIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2060, μ: 18288, ~: 18504) -LibOpMinTest:testOpMinIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2060, μ: 13854, ~: 13742) -LibOpMinTest:testOpMinIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2060, μ: 13831, ~: 13719) -LibOpMinTest:testOpMinRun(bytes32[],uint16) (runs: 2052, μ: 26530, ~: 26581) -LibOpMulTest:testOpDecimal18MulNPIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2060, μ: 13832, ~: 13720) -LibOpMulTest:testOpMulEvalOneInput() (gas: 127120) -LibOpMulTest:testOpMulEvalOperandsDisallowed() (gas: 91691) -LibOpMulTest:testOpMulEvalThreeInputsHappy() (gas: 745259) -LibOpMulTest:testOpMulEvalThreeInputsUnhappyOverflow() (gas: 61734) -LibOpMulTest:testOpMulEvalTwoInputsHappy() (gas: 524140) -LibOpMulTest:testOpMulEvalTwoInputsUnhappyOverflow() (gas: 55128) -LibOpMulTest:testOpMulEvalZeroInputs() (gas: 30252) -LibOpMulTest:testOpMulIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2060, μ: 18250, ~: 18473) -LibOpMulTest:testOpMulIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2060, μ: 13875, ~: 13763) -LibOpMulTest:testOpMulRun(bytes32[]) (runs: 2052, μ: 28971, ~: 26565) -LibOpMulTest:testOpMulTwoOutputs() (gas: 40790) -LibOpMulTest:testOpMulZeroOutputs() (gas: 39744) -LibOpPowTest:testOpPowEval() (gas: 541511) -LibOpPowTest:testOpPowEvalOneInput() (gas: 35376) -LibOpPowTest:testOpPowEvalOperandDisallowed() (gas: 17790) -LibOpPowTest:testOpPowIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2060, μ: 13776, ~: 13683) -LibOpPowTest:testOpPowNegativeBaseError() (gas: 100966) -LibOpPowTest:testOpPowRun(int224,int32,int224,int32) (runs: 2060, μ: 64967, ~: 68645) -LibOpPowTest:testOpPowThreeInputs() (gas: 45102) -LibOpPowTest:testOpPowTwoOutputs() (gas: 40906) -LibOpPowTest:testOpPowZeroOutputs() (gas: 39901) -LibOpSetTest:testLibOpSet(bytes32,bytes32) (runs: 2060, μ: 17660, ~: 17665) -LibOpSetTest:testLibOpSetEvalOneInput() (gas: 34230) -LibOpSetTest:testLibOpSetEvalOneOutput() (gas: 39867) -LibOpSetTest:testLibOpSetEvalOperandsDisallowed() (gas: 56131) -LibOpSetTest:testLibOpSetEvalSetTwice() (gas: 78296) -LibOpSetTest:testLibOpSetEvalThreeInputs() (gas: 44663) -LibOpSetTest:testLibOpSetEvalTwoInputs() (gas: 258732) -LibOpSetTest:testLibOpSetEvalTwoOutputs() (gas: 40489) -LibOpSetTest:testLibOpSetEvalZeroInputs() (gas: 29411) -LibOpSetTest:testLibOpSetIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2060, μ: 20453, ~: 20686) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPEval() (gas: 879810) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailBadShiftAmount() (gas: 128259) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailTwoInputs() (gas: 44485) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailTwoOutputs() (gas: 40369) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailZeroInputs() (gas: 34645) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailZeroOutputs() (gas: 39294) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint8) (runs: 2059, μ: 19775, ~: 19760) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityNoop((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8) (runs: 2060, μ: 35810, ~: 35560) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityZero((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2060, μ: 42003, ~: 42519) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPRun(bytes32,uint8) (runs: 2059, μ: 16833, ~: 16833) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPEval() (gas: 1054917) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPIntegrityFailBadShiftAmount() (gas: 128847) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint8) (runs: 112, μ: 19804, ~: 19207) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPIntegrityNoop((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8) (runs: 112, μ: 37172, ~: 37164) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPIntegrityZero((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 112, μ: 40978, ~: 41177) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPRun(bytes32,uint8) (runs: 2060, μ: 16836, ~: 16836) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPTwoInputs() (gas: 44609) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPTwoOutputs() (gas: 40429) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPZeroInputs() (gas: 34704) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPZeroOutputs() (gas: 39378) -LibOpStackNPTest:testOpStackEval() (gas: 66036) -LibOpStackNPTest:testOpStackEvalSeveral() (gas: 90569) -LibOpStackNPTest:testOpStackNPIntegrity(bytes,uint256,bytes32[],bytes32) (runs: 2060, μ: 18888, ~: 18657) -LibOpStackNPTest:testOpStackNPIntegrityOOBStack(bytes,uint16,bytes32[],uint16,uint256) (runs: 2060, μ: 41410, ~: 41563) -LibOpStackNPTest:testOpStackNPMultipleOutputErrorSugared() (gas: 40047) -LibOpStackNPTest:testOpStackNPMultipleOutputErrorUnsugared() (gas: 43033) -LibOpStackNPTest:testOpStackNPRun(bytes32[][],uint256) (runs: 112, μ: 2022596, ~: 1852966) -LibOpStackNPTest:testOpStackNPZeroOutputErrorSugared() (gas: 38592) -LibOpStackNPTest:testOpStackNPZeroOutputErrorUnsugared() (gas: 41543) -LibOpSubTest:testOpSubEvalOneInput() (gas: 129743) -LibOpSubTest:testOpSubEvalThreeInputs() (gas: 226346) -LibOpSubTest:testOpSubEvalTwoInputs() (gas: 343351) -LibOpSubTest:testOpSubEvalZeroInputs() (gas: 30170) -LibOpSubTest:testOpSubIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2060, μ: 18256, ~: 18476) -LibOpSubTest:testOpSubIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2060, μ: 13831, ~: 13719) -LibOpSubTest:testOpSubIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2060, μ: 13832, ~: 13720) -LibOpSubTest:testOpSubRun(bytes32[]) (runs: 2052, μ: 55776, ~: 54793) -LibOpTimestampTest:testOpBlockTimestampNPEvalFail() (gas: 65891) -LibOpTimestampTest:testOpBlockTimestampNPTwoOutputs() (gas: 58810) -LibOpTimestampTest:testOpBlockTimestampNPZeroOutputs() (gas: 56685) -LibOpTimestampTest:testOpTimestampEval(uint256) (runs: 2060, μ: 85083, ~: 84759) -LibOpTimestampTest:testOpTimestampIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2060, μ: 19671, ~: 19901) -LibOpTimestampTest:testOpTimestampRun(uint256) (runs: 2060, μ: 20590, ~: 20364) -LibOpUint256AddTest:testOpUint256AddEvalOneInput() (gas: 128423) -LibOpUint256AddTest:testOpUint256AddEvalOperandsDisallowed() (gas: 95579) -LibOpUint256AddTest:testOpUint256AddEvalThreeInputsHappy() (gas: 209878) -LibOpUint256AddTest:testOpUint256AddEvalThreeInputsUnhappy() (gas: 114879) -LibOpUint256AddTest:testOpUint256AddEvalTwoInputsHappy() (gas: 280377) -LibOpUint256AddTest:testOpUint256AddEvalTwoOutputs() (gas: 41460) -LibOpUint256AddTest:testOpUint256AddEvalZeroInputs() (gas: 30878) -LibOpUint256AddTest:testOpUint256AddEvalZeroOutputs() (gas: 40391) -LibOpUint256AddTest:testOpUint256AddIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2060, μ: 18249, ~: 18445) -LibOpUint256AddTest:testOpUint256AddIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2060, μ: 13833, ~: 13721) -LibOpUint256AddTest:testOpUint256AddIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2060, μ: 13831, ~: 13719) -LibOpUint256AddTest:testOpUint256AddRun(bytes32[]) (runs: 2052, μ: 19965, ~: 19486) -LibOpUint256DivTest:testOpUint256DivEval2InputsHappy() (gas: 771530) -LibOpUint256DivTest:testOpUint256DivEval2InputsUnhappy() (gas: 143677) -LibOpUint256DivTest:testOpUint256DivEval3InputsHappy() (gas: 1408015) -LibOpUint256DivTest:testOpUint256DivEval3InputsUnhappy() (gas: 482943) -LibOpUint256DivTest:testOpUint256DivEvalOneInput() (gas: 133999) -LibOpUint256DivTest:testOpUint256DivEvalOperandDisallowed() (gas: 61584) -LibOpUint256DivTest:testOpUint256DivEvalTwoOutputs() (gas: 41461) -LibOpUint256DivTest:testOpUint256DivEvalZeroInputs() (gas: 30879) -LibOpUint256DivTest:testOpUint256DivEvalZeroOutputs() (gas: 40369) -LibOpUint256DivTest:testOpUint256DivIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2060, μ: 18272, ~: 18467) -LibOpUint256DivTest:testOpUint256DivIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2060, μ: 13853, ~: 13741) -LibOpUint256DivTest:testOpUint256DivIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2060, μ: 13833, ~: 13721) +LibOpMinNegativeValueTest:testOpMinNegativeValueTwoOutputs() (gas: 32002) +LibOpMinNegativeValueTest:testOpMinNegativeValueZeroOutputs() (gas: 30972) +LibOpMinPositiveValueTest:testOpMinPositiveValueEval() (gas: 47417) +LibOpMinPositiveValueTest:testOpMinPositiveValueEvalFail() (gas: 35196) +LibOpMinPositiveValueTest:testOpMinPositiveValueIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2064, μ: 19660, ~: 19903) +LibOpMinPositiveValueTest:testOpMinPositiveValueRun() (gas: 16240) +LibOpMinPositiveValueTest:testOpMinPositiveValueTwoOutputs() (gas: 32001) +LibOpMinPositiveValueTest:testOpMinPositiveValueZeroOutputs() (gas: 30971) +LibOpMinTest:testOpMinEval2InputsHappy() (gas: 978854) +LibOpMinTest:testOpMinEval3InputsHappy() (gas: 3503835) +LibOpMinTest:testOpMinEvalOneInput() (gas: 127134) +LibOpMinTest:testOpMinEvalOperandDisallowed() (gas: 59060) +LibOpMinTest:testOpMinEvalZeroInputs() (gas: 30201) +LibOpMinTest:testOpMinIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2064, μ: 18282, ~: 18446) +LibOpMinTest:testOpMinIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2064, μ: 13850, ~: 13742) +LibOpMinTest:testOpMinIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2064, μ: 13827, ~: 13719) +LibOpMinTest:testOpMinRun(bytes32[],uint16) (runs: 2052, μ: 26520, ~: 26627) +LibOpMulTest:testOpDecimal18MulNPIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2064, μ: 13828, ~: 13720) +LibOpMulTest:testOpMulEvalOneInput() (gas: 127168) +LibOpMulTest:testOpMulEvalOperandsDisallowed() (gas: 91727) +LibOpMulTest:testOpMulEvalThreeInputsHappy() (gas: 745526) +LibOpMulTest:testOpMulEvalThreeInputsUnhappyOverflow() (gas: 61752) +LibOpMulTest:testOpMulEvalTwoInputsHappy() (gas: 524350) +LibOpMulTest:testOpMulEvalTwoInputsUnhappyOverflow() (gas: 55146) +LibOpMulTest:testOpMulEvalZeroInputs() (gas: 30264) +LibOpMulTest:testOpMulIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2064, μ: 18245, ~: 18415) +LibOpMulTest:testOpMulIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2064, μ: 13871, ~: 13763) +LibOpMulTest:testOpMulRun(bytes32[]) (runs: 2052, μ: 29034, ~: 26762) +LibOpMulTest:testOpMulTwoOutputs() (gas: 40802) +LibOpMulTest:testOpMulZeroOutputs() (gas: 39756) +LibOpPowTest:testOpPowEval() (gas: 541725) +LibOpPowTest:testOpPowEvalOneInput() (gas: 35388) +LibOpPowTest:testOpPowEvalOperandDisallowed() (gas: 17796) +LibOpPowTest:testOpPowIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2064, μ: 13772, ~: 13683) +LibOpPowTest:testOpPowNegativeBaseError() (gas: 101004) +LibOpPowTest:testOpPowRun(int224,int32,int224,int32) (runs: 2064, μ: 65064, ~: 68645) +LibOpPowTest:testOpPowThreeInputs() (gas: 45114) +LibOpPowTest:testOpPowTwoOutputs() (gas: 40918) +LibOpPowTest:testOpPowZeroOutputs() (gas: 39913) +LibOpSetTest:testLibOpSet(bytes32,bytes32) (runs: 2064, μ: 17660, ~: 17665) +LibOpSetTest:testLibOpSetEvalOneInput() (gas: 34242) +LibOpSetTest:testLibOpSetEvalOneOutput() (gas: 39880) +LibOpSetTest:testLibOpSetEvalOperandsDisallowed() (gas: 56155) +LibOpSetTest:testLibOpSetEvalSetTwice() (gas: 78315) +LibOpSetTest:testLibOpSetEvalThreeInputs() (gas: 44675) +LibOpSetTest:testLibOpSetEvalTwoInputs() (gas: 258827) +LibOpSetTest:testLibOpSetEvalTwoOutputs() (gas: 40502) +LibOpSetTest:testLibOpSetEvalZeroInputs() (gas: 29423) +LibOpSetTest:testLibOpSetIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2064, μ: 20444, ~: 20711) +LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPEval() (gas: 880174) +LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailBadShiftAmount() (gas: 128301) +LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailTwoInputs() (gas: 44497) +LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailTwoOutputs() (gas: 40381) +LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailZeroInputs() (gas: 34657) +LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailZeroOutputs() (gas: 39306) +LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint8) (runs: 2064, μ: 19739, ~: 19710) +LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityNoop((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8) (runs: 2064, μ: 35798, ~: 35560) +LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityZero((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2064, μ: 41992, ~: 42651) +LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPRun(bytes32,uint8) (runs: 2064, μ: 16833, ~: 16833) +LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPEval() (gas: 1055354) +LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPIntegrityFailBadShiftAmount() (gas: 128890) +LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint8) (runs: 116, μ: 19743, ~: 19207) +LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPIntegrityNoop((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8) (runs: 116, μ: 36908, ~: 37164) +LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPIntegrityZero((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 116, μ: 40709, ~: 41177) +LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPRun(bytes32,uint8) (runs: 2064, μ: 16836, ~: 16836) +LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPTwoInputs() (gas: 44621) +LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPTwoOutputs() (gas: 40441) +LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPZeroInputs() (gas: 34716) +LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPZeroOutputs() (gas: 39390) +LibOpStackNPTest:testOpStackEval() (gas: 66054) +LibOpStackNPTest:testOpStackEvalSeveral() (gas: 90587) +LibOpStackNPTest:testOpStackNPIntegrity(bytes,uint256,bytes32[],bytes32) (runs: 2064, μ: 18900, ~: 18763) +LibOpStackNPTest:testOpStackNPIntegrityOOBStack(bytes,uint16,bytes32[],uint16,uint256) (runs: 2064, μ: 41378, ~: 41563) +LibOpStackNPTest:testOpStackNPMultipleOutputErrorSugared() (gas: 40060) +LibOpStackNPTest:testOpStackNPMultipleOutputErrorUnsugared() (gas: 43046) +LibOpStackNPTest:testOpStackNPRun(bytes32[][],uint256) (runs: 116, μ: 2004899, ~: 1835418) +LibOpStackNPTest:testOpStackNPZeroOutputErrorSugared() (gas: 38605) +LibOpStackNPTest:testOpStackNPZeroOutputErrorUnsugared() (gas: 41556) +LibOpSubTest:testOpSubEvalOneInput() (gas: 129791) +LibOpSubTest:testOpSubEvalThreeInputs() (gas: 226422) +LibOpSubTest:testOpSubEvalTwoInputs() (gas: 343485) +LibOpSubTest:testOpSubEvalZeroInputs() (gas: 30182) +LibOpSubTest:testOpSubIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2064, μ: 18249, ~: 18472) +LibOpSubTest:testOpSubIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2064, μ: 13827, ~: 13719) +LibOpSubTest:testOpSubIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2064, μ: 13828, ~: 13720) +LibOpSubTest:testOpSubRun(bytes32[]) (runs: 2052, μ: 55617, ~: 54480) +LibOpTimestampTest:testOpBlockTimestampNPEvalFail() (gas: 65915) +LibOpTimestampTest:testOpBlockTimestampNPTwoOutputs() (gas: 58834) +LibOpTimestampTest:testOpBlockTimestampNPZeroOutputs() (gas: 56709) +LibOpTimestampTest:testOpTimestampEval(uint256) (runs: 2064, μ: 85120, ~: 84795) +LibOpTimestampTest:testOpTimestampIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2064, μ: 19670, ~: 19905) +LibOpTimestampTest:testOpTimestampRun(uint256) (runs: 2064, μ: 20592, ~: 20364) +LibOpUint256AddTest:testOpUint256AddEvalOneInput() (gas: 128471) +LibOpUint256AddTest:testOpUint256AddEvalOperandsDisallowed() (gas: 95615) +LibOpUint256AddTest:testOpUint256AddEvalThreeInputsHappy() (gas: 209954) +LibOpUint256AddTest:testOpUint256AddEvalThreeInputsUnhappy() (gas: 114915) +LibOpUint256AddTest:testOpUint256AddEvalTwoInputsHappy() (gas: 280492) +LibOpUint256AddTest:testOpUint256AddEvalTwoOutputs() (gas: 41472) +LibOpUint256AddTest:testOpUint256AddEvalZeroInputs() (gas: 30890) +LibOpUint256AddTest:testOpUint256AddEvalZeroOutputs() (gas: 40403) +LibOpUint256AddTest:testOpUint256AddIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2064, μ: 18250, ~: 18471) +LibOpUint256AddTest:testOpUint256AddIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2064, μ: 13829, ~: 13721) +LibOpUint256AddTest:testOpUint256AddIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2064, μ: 13827, ~: 13719) +LibOpUint256AddTest:testOpUint256AddRun(bytes32[]) (runs: 2052, μ: 19915, ~: 19497) +LibOpUint256DivTest:testOpUint256DivEval2InputsHappy() (gas: 771856) +LibOpUint256DivTest:testOpUint256DivEval2InputsUnhappy() (gas: 143734) +LibOpUint256DivTest:testOpUint256DivEval3InputsHappy() (gas: 1408548) +LibOpUint256DivTest:testOpUint256DivEval3InputsUnhappy() (gas: 483115) +LibOpUint256DivTest:testOpUint256DivEvalOneInput() (gas: 134047) +LibOpUint256DivTest:testOpUint256DivEvalOperandDisallowed() (gas: 61608) +LibOpUint256DivTest:testOpUint256DivEvalTwoOutputs() (gas: 41473) +LibOpUint256DivTest:testOpUint256DivEvalZeroInputs() (gas: 30891) +LibOpUint256DivTest:testOpUint256DivEvalZeroOutputs() (gas: 40381) +LibOpUint256DivTest:testOpUint256DivIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2064, μ: 18268, ~: 18424) +LibOpUint256DivTest:testOpUint256DivIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2064, μ: 13849, ~: 13741) +LibOpUint256DivTest:testOpUint256DivIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2064, μ: 13829, ~: 13721) LibOpUint256DivTest:testOpUint256DivRun(bytes32[]) (runs: 2052, μ: 24849, ~: 25168) -LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceEvalFourInputs() (gas: 56687) -LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceEvalHappy(uint256) (runs: 2060, μ: 70325, ~: 70325) -LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceEvalOneInput() (gas: 37979) -LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceEvalOperandDisallowed() (gas: 19285) -LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceEvalTwoInputs() (gas: 44319) -LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceEvalTwoOutputs() (gas: 51351) -LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceEvalZeroInputs() (gas: 31773) -LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceEvalZeroOutputs() (gas: 50327) -LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2060, μ: 13779, ~: 13686) -LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceRun(address,address,address,uint256) (runs: 2059, μ: 24718, ~: 24718) -LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfEvalHappy(uint256) (runs: 2060, μ: 63385, ~: 63385) -LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfEvalOneInput() (gas: 38018) -LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfEvalOperandDisallowed() (gas: 19343) -LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfEvalThreeInputs() (gas: 50220) -LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfEvalTwoOutputs() (gas: 45089) -LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfEvalZeroInputs() (gas: 31876) -LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfEvalZeroOutputs() (gas: 44044) -LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2060, μ: 13802, ~: 13709) -LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfRun(address,address,uint256,uint16) (runs: 2059, μ: 24168, ~: 24168) -LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyEvalHappy(uint256) (runs: 2060, μ: 56486, ~: 56486) -LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyEvalOperandDisallowed() (gas: 19506) -LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyEvalTwoInputs() (gas: 44541) -LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyEvalTwoOutputs() (gas: 38914) -LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyEvalZeroInputs() (gas: 32059) -LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyEvalZeroOutputs() (gas: 37841) -LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2060, μ: 13802, ~: 13709) -LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyRun(address,uint256,uint16) (runs: 2059, μ: 23332, ~: 23332) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfEvalHappy(address,address,uint256) (runs: 2058, μ: 104732, ~: 104901) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2060, μ: 19686, ~: 19905) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFail0() (gas: 31498) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFail1() (gas: 35881) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFail3() (gas: 45221) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFailOperand() (gas: 22217) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfOneInput() (gas: 36411) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfRun(address,address,uint256,uint16) (runs: 2058, μ: 24211, ~: 24211) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfThreeInputs() (gas: 45741) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfTwoOutputs() (gas: 41738) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfZeroInputs() (gas: 31932) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfZeroOutputs() (gas: 40713) -LibOpUint256MulTest:testOpUint256MulEvalOneInput() (gas: 128511) -LibOpUint256MulTest:testOpUint256MulEvalOperandsDisallowed() (gas: 95559) -LibOpUint256MulTest:testOpUint256MulEvalThreeInputsHappy() (gas: 1015276) -LibOpUint256MulTest:testOpUint256MulEvalThreeInputsUnhappy() (gas: 642388) -LibOpUint256MulTest:testOpUint256MulEvalTwoInputsHappy() (gas: 417178) -LibOpUint256MulTest:testOpUint256MulEvalTwoInputsUnhappy() (gas: 143810) -LibOpUint256MulTest:testOpUint256MulEvalTwoOutputs() (gas: 41405) -LibOpUint256MulTest:testOpUint256MulEvalZeroInputs() (gas: 30932) -LibOpUint256MulTest:testOpUint256MulEvalZeroOutputs() (gas: 40404) -LibOpUint256MulTest:testOpUint256MulIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2060, μ: 18211, ~: 18429) -LibOpUint256MulTest:testOpUint256MulIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2060, μ: 13875, ~: 13763) -LibOpUint256MulTest:testOpUint256MulIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2060, μ: 13832, ~: 13720) -LibOpUint256MulTest:testOpUint256MulRun(bytes32[]) (runs: 2052, μ: 18820, ~: 19078) -LibOpUint256PowTest:testOpUint256ExpIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2060, μ: 18227, ~: 18417) -LibOpUint256PowTest:testOpUint256PowEval2InputsHappy() (gas: 872462) -LibOpUint256PowTest:testOpUint256PowEval2InputsUnhappy() (gas: 145790) -LibOpUint256PowTest:testOpUint256PowEval3InputsHappy() (gas: 1980577) -LibOpUint256PowTest:testOpUint256PowEval3InputsUnhappy() (gas: 633799) -LibOpUint256PowTest:testOpUint256PowEvalOneInput() (gas: 133312) -LibOpUint256PowTest:testOpUint256PowEvalOperandDisallowed() (gas: 62276) -LibOpUint256PowTest:testOpUint256PowEvalTwoOutputs() (gas: 41590) -LibOpUint256PowTest:testOpUint256PowEvalZeroInputs() (gas: 31071) -LibOpUint256PowTest:testOpUint256PowEvalZeroOutputs() (gas: 40522) -LibOpUint256PowTest:testOpUint256PowIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2060, μ: 13855, ~: 13743) -LibOpUint256PowTest:testOpUint256PowIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2060, μ: 13832, ~: 13720) -LibOpUint256PowTest:testOpUint256PowRun(bytes32[]) (runs: 2052, μ: 19372, ~: 19304) -LibOpUint256SubTest:testOpUint256SubEvalOneInput() (gas: 131206) -LibOpUint256SubTest:testOpUint256SubEvalOperandsDisallowed() (gas: 99625) -LibOpUint256SubTest:testOpUint256SubEvalThreeInputsHappy() (gas: 212449) -LibOpUint256SubTest:testOpUint256SubEvalThreeInputsUnhappy() (gas: 116400) -LibOpUint256SubTest:testOpUint256SubEvalTwoInputsHappy() (gas: 284419) -LibOpUint256SubTest:testOpUint256SubEvalTwoOutputs() (gas: 42123) -LibOpUint256SubTest:testOpUint256SubEvalZeroInputs() (gas: 31563) -LibOpUint256SubTest:testOpUint256SubEvalZeroOutputs() (gas: 41055) -LibOpUint256SubTest:testOpUint256SubIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2060, μ: 18248, ~: 18443) -LibOpUint256SubTest:testOpUint256SubIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2060, μ: 13876, ~: 13764) -LibOpUint256SubTest:testOpUint256SubIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2060, μ: 13832, ~: 13720) -LibOpUint256SubTest:testOpUint256SubRun(bytes32[]) (runs: 2052, μ: 17633, ~: 17687) +LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceEvalFourInputs() (gas: 56699) +LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceEvalHappy(uint256) (runs: 2064, μ: 70344, ~: 70344) +LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceEvalOneInput() (gas: 37992) +LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceEvalOperandDisallowed() (gas: 19291) +LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceEvalTwoInputs() (gas: 44331) +LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceEvalTwoOutputs() (gas: 51365) +LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceEvalZeroInputs() (gas: 31785) +LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceEvalZeroOutputs() (gas: 50341) +LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2064, μ: 13775, ~: 13686) +LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceRun(address,address,address,uint256) (runs: 2062, μ: 24718, ~: 24718) +LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfEvalHappy(uint256) (runs: 2064, μ: 63403, ~: 63403) +LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfEvalOneInput() (gas: 38031) +LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfEvalOperandDisallowed() (gas: 19349) +LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfEvalThreeInputs() (gas: 50232) +LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfEvalTwoOutputs() (gas: 45101) +LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfEvalZeroInputs() (gas: 31888) +LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfEvalZeroOutputs() (gas: 44056) +LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2064, μ: 13798, ~: 13709) +LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfRun(address,address,uint256,uint16) (runs: 2061, μ: 24168, ~: 24168) +LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyEvalHappy(uint256) (runs: 2064, μ: 56505, ~: 56505) +LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyEvalOperandDisallowed() (gas: 19512) +LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyEvalTwoInputs() (gas: 44553) +LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyEvalTwoOutputs() (gas: 38927) +LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyEvalZeroInputs() (gas: 32071) +LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyEvalZeroOutputs() (gas: 37854) +LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2064, μ: 13798, ~: 13709) +LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyRun(address,uint256,uint16) (runs: 2063, μ: 23332, ~: 23332) +LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfEvalHappy(address,address,uint256) (runs: 2062, μ: 609276, ~: 104920) +LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2064, μ: 19689, ~: 19908) +LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFail0() (gas: 31510) +LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFail1() (gas: 35894) +LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFail3() (gas: 45235) +LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFailOperand() (gas: 22223) +LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfOneInput() (gas: 36424) +LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfRun(address,address,uint256,uint16) (runs: 2062, μ: 24211, ~: 24211) +LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfThreeInputs() (gas: 45755) +LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfTwoOutputs() (gas: 41750) +LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfZeroInputs() (gas: 31944) +LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfZeroOutputs() (gas: 40725) +LibOpUint256MulTest:testOpUint256MulEvalOneInput() (gas: 128559) +LibOpUint256MulTest:testOpUint256MulEvalOperandsDisallowed() (gas: 95595) +LibOpUint256MulTest:testOpUint256MulEvalThreeInputsHappy() (gas: 1015655) +LibOpUint256MulTest:testOpUint256MulEvalThreeInputsUnhappy() (gas: 642622) +LibOpUint256MulTest:testOpUint256MulEvalTwoInputsHappy() (gas: 417350) +LibOpUint256MulTest:testOpUint256MulEvalTwoInputsUnhappy() (gas: 143866) +LibOpUint256MulTest:testOpUint256MulEvalTwoOutputs() (gas: 41417) +LibOpUint256MulTest:testOpUint256MulEvalZeroInputs() (gas: 30944) +LibOpUint256MulTest:testOpUint256MulEvalZeroOutputs() (gas: 40416) +LibOpUint256MulTest:testOpUint256MulIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2064, μ: 18205, ~: 18436) +LibOpUint256MulTest:testOpUint256MulIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2064, μ: 13871, ~: 13763) +LibOpUint256MulTest:testOpUint256MulIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2064, μ: 13828, ~: 13720) +LibOpUint256MulTest:testOpUint256MulRun(bytes32[]) (runs: 2052, μ: 18794, ~: 19053) +LibOpUint256PowTest:testOpUint256ExpIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2064, μ: 18226, ~: 18444) +LibOpUint256PowTest:testOpUint256PowEval2InputsHappy() (gas: 872829) +LibOpUint256PowTest:testOpUint256PowEval2InputsUnhappy() (gas: 145846) +LibOpUint256PowTest:testOpUint256PowEval3InputsHappy() (gas: 1981311) +LibOpUint256PowTest:testOpUint256PowEval3InputsUnhappy() (gas: 634027) +LibOpUint256PowTest:testOpUint256PowEvalOneInput() (gas: 133360) +LibOpUint256PowTest:testOpUint256PowEvalOperandDisallowed() (gas: 62300) +LibOpUint256PowTest:testOpUint256PowEvalTwoOutputs() (gas: 41602) +LibOpUint256PowTest:testOpUint256PowEvalZeroInputs() (gas: 31083) +LibOpUint256PowTest:testOpUint256PowEvalZeroOutputs() (gas: 40534) +LibOpUint256PowTest:testOpUint256PowIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2064, μ: 13851, ~: 13743) +LibOpUint256PowTest:testOpUint256PowIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2064, μ: 13828, ~: 13720) +LibOpUint256PowTest:testOpUint256PowRun(bytes32[]) (runs: 2052, μ: 19385, ~: 19304) +LibOpUint256SubTest:testOpUint256SubEvalOneInput() (gas: 131254) +LibOpUint256SubTest:testOpUint256SubEvalOperandsDisallowed() (gas: 99661) +LibOpUint256SubTest:testOpUint256SubEvalThreeInputsHappy() (gas: 212525) +LibOpUint256SubTest:testOpUint256SubEvalThreeInputsUnhappy() (gas: 116436) +LibOpUint256SubTest:testOpUint256SubEvalTwoInputsHappy() (gas: 284534) +LibOpUint256SubTest:testOpUint256SubEvalTwoOutputs() (gas: 42135) +LibOpUint256SubTest:testOpUint256SubEvalZeroInputs() (gas: 31575) +LibOpUint256SubTest:testOpUint256SubEvalZeroOutputs() (gas: 41067) +LibOpUint256SubTest:testOpUint256SubIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2064, μ: 18242, ~: 18443) +LibOpUint256SubTest:testOpUint256SubIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2064, μ: 13872, ~: 13764) +LibOpUint256SubTest:testOpUint256SubIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2064, μ: 13828, ~: 13720) +LibOpUint256SubTest:testOpUint256SubRun(bytes32[]) (runs: 2052, μ: 17660, ~: 17687) LibParseCommentsTest:testParseCommentAfterSources() (gas: 69689) LibParseCommentsTest:testParseCommentBetweenSources() (gas: 69745) LibParseCommentsTest:testParseCommentInIgnoredLHS() (gas: 46231) @@ -701,7 +711,7 @@ LibParseInputsOnlyGasTest:testParseGasInputsOnly09() (gas: 52192) LibParseInputsOnlyTest:testParseInputsOnlyMultiple() (gas: 52451) LibParseInputsOnlyTest:testParseInputsOnlySingle() (gas: 51541) LibParseLiteralBoundLiteralHexTest:testParseLiteralBoundLiteralHexBounds() (gas: 18858) -LibParseLiteralBoundLiteralHexTest:testParseLiteralBoundLiteralHexFuzz(string,bytes1,string) (runs: 2060, μ: 44956, ~: 43980) +LibParseLiteralBoundLiteralHexTest:testParseLiteralBoundLiteralHexFuzz(string,bytes1,string) (runs: 2064, μ: 44939, ~: 43980) LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatDotE() (gas: 11195) LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatDotE0() (gas: 11173) LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatDotRevert() (gas: 11218) @@ -720,7 +730,7 @@ LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatNegative LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatNonDecimal() (gas: 11150) LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatPrecisionRevert0() (gas: 35135) LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatPrecisionRevert1() (gas: 35045) -LibParseLiteralHexBoundHexTest:testParseLiteralHexRoundTrip(bytes32) (runs: 2060, μ: 27283, ~: 37882) +LibParseLiteralHexBoundHexTest:testParseLiteralHexRoundTrip(bytes32) (runs: 2064, μ: 27274, ~: 37882) LibParseLiteralIntegerDecimalTest:testParseIntegerLiteralDecimal00() (gas: 56730) LibParseLiteralIntegerDecimalTest:testParseIntegerLiteralDecimal01() (gas: 63896) LibParseLiteralIntegerDecimalTest:testParseIntegerLiteralDecimal02() (gas: 70152) @@ -739,23 +749,23 @@ LibParseLiteralIntegerHexTest:testParseIntegerLiteralHex00() (gas: 55856) LibParseLiteralIntegerHexTest:testParseIntegerLiteralHex01() (gas: 61572) LibParseLiteralIntegerHexTest:testParseIntegerLiteralHex02() (gas: 66623) LibParseLiteralIntegerHexTest:testParseIntegerLiteralHexUint256Max() (gas: 72869) -LibParseLiteralStringBoundTest:testParseStringLiteralBounds(string) (runs: 2058, μ: 16494, ~: 16416) -LibParseLiteralStringBoundTest:testParseStringLiteralBoundsInvalidCharBefore(string,uint256) (runs: 2058, μ: 30116, ~: 29992) -LibParseLiteralStringBoundTest:testParseStringLiteralBoundsParserOutOfBounds(string,uint256) (runs: 2058, μ: 19021, ~: 18937) -LibParseLiteralStringBoundTest:testParseStringLiteralBoundsTooLong(string) (runs: 2050, μ: 31899, ~: 31378) -LibParseLiteralStringTest:testParseStringLiteralAny(bytes) (runs: 2049, μ: 13483, ~: 13384) -LibParseLiteralStringTest:testParseStringLiteralCorrupt(bytes,uint256) (runs: 2049, μ: 24344, ~: 24269) +LibParseLiteralStringBoundTest:testParseStringLiteralBounds(string) (runs: 2061, μ: 16495, ~: 16416) +LibParseLiteralStringBoundTest:testParseStringLiteralBoundsInvalidCharBefore(string,uint256) (runs: 2062, μ: 30115, ~: 29992) +LibParseLiteralStringBoundTest:testParseStringLiteralBoundsParserOutOfBounds(string,uint256) (runs: 2061, μ: 19023, ~: 18937) +LibParseLiteralStringBoundTest:testParseStringLiteralBoundsTooLong(string) (runs: 2051, μ: 31900, ~: 31390) +LibParseLiteralStringTest:testParseStringLiteralAny(bytes) (runs: 2050, μ: 13485, ~: 13384) +LibParseLiteralStringTest:testParseStringLiteralCorrupt(bytes,uint256) (runs: 2050, μ: 24344, ~: 24269) LibParseLiteralStringTest:testParseStringLiteralEmpty() (gas: 54552) LibParseLiteralStringTest:testParseStringLiteralEmpty() (gas: 5643) -LibParseLiteralStringTest:testParseStringLiteralInvalidCharAfter(string,string) (runs: 102, μ: 68644, ~: 68371) -LibParseLiteralStringTest:testParseStringLiteralInvalidCharWithin(string,uint256) (runs: 110, μ: 65788, ~: 65523) -LibParseLiteralStringTest:testParseStringLiteralLongASCII(string) (runs: 102, μ: 69365, ~: 69426) -LibParseLiteralStringTest:testParseStringLiteralShortASCII(string) (runs: 110, μ: 61674, ~: 61811) +LibParseLiteralStringTest:testParseStringLiteralInvalidCharAfter(string,string) (runs: 103, μ: 68659, ~: 68457) +LibParseLiteralStringTest:testParseStringLiteralInvalidCharWithin(string,uint256) (runs: 114, μ: 65816, ~: 65523) +LibParseLiteralStringTest:testParseStringLiteralLongASCII(string) (runs: 103, μ: 69367, ~: 69457) +LibParseLiteralStringTest:testParseStringLiteralShortASCII(string) (runs: 113, μ: 61716, ~: 61825) LibParseLiteralStringTest:testParseStringLiteralSimple() (gas: 54654) -LibParseLiteralStringTest:testParseStringLiteralTwo(string,string) (runs: 106, μ: 75055, ~: 75737) +LibParseLiteralStringTest:testParseStringLiteralTwo(string,string) (runs: 108, μ: 75177, ~: 75793) LibParseLiteralSubParseableTest:testParseLiteralSubParseableBody() (gas: 64571) LibParseLiteralSubParseableTest:testParseLiteralSubParseableEmptyBody() (gas: 19630) -LibParseLiteralSubParseableTest:testParseLiteralSubParseableHappyFuzz(string,string,string) (runs: 2058, μ: 89540, ~: 87701) +LibParseLiteralSubParseableTest:testParseLiteralSubParseableHappyFuzz(string,string,string) (runs: 2062, μ: 89553, ~: 87701) LibParseLiteralSubParseableTest:testParseLiteralSubParseableMissingDispatchEmpty() (gas: 10659) LibParseLiteralSubParseableTest:testParseLiteralSubParseableMissingDispatchUnclosed() (gas: 10619) LibParseLiteralSubParseableTest:testParseLiteralSubParseableMissingDispatchUnclosedWhitespace0() (gas: 10679) @@ -820,36 +830,36 @@ LibParseOperandDoublePerByteNoDefaultTest:testOperandDoublePerByteNoDefaultSecon LibParseOperandDoublePerByteNoDefaultTest:testOperandDoublePerByteNoDefaultThird() (gas: 55536) LibParseOperandDoublePerByteNoDefaultTest:testOperandDoublePerByteNoDefaultUnclosed() (gas: 52609) LibParseOperandDoublePerByteNoDefaultTest:testOperandDoublePerByteNoDefaultUnopened() (gas: 47193) -LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1AllValues(uint256,uint256,uint256) (runs: 2060, μ: 12115, ~: 12193) -LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1AllValuesThirdValueTooLarge(uint256,uint256,uint256) (runs: 2060, μ: 13578, ~: 13436) -LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1FirstAndSecondValue(uint256,uint256) (runs: 2060, μ: 10368, ~: 10410) -LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1FirstAndSecondValueSecondValueTooLarge(uint256,uint256) (runs: 2060, μ: 11731, ~: 11562) -LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1FirstValueOnly(uint256) (runs: 2060, μ: 8643, ~: 8700) -LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1FirstValueTooLarge(int256) (runs: 2060, μ: 11709, ~: 11953) -LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1ManyValues(bytes32[]) (runs: 2058, μ: 35375, ~: 35566) +LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1AllValues(uint256,uint256,uint256) (runs: 2064, μ: 12114, ~: 12193) +LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1AllValuesThirdValueTooLarge(uint256,uint256,uint256) (runs: 2064, μ: 13578, ~: 13436) +LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1FirstAndSecondValue(uint256,uint256) (runs: 2064, μ: 10367, ~: 10410) +LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1FirstAndSecondValueSecondValueTooLarge(uint256,uint256) (runs: 2064, μ: 11731, ~: 11562) +LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1FirstValueOnly(uint256) (runs: 2064, μ: 8643, ~: 8700) +LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1FirstValueTooLarge(int256) (runs: 2064, μ: 11709, ~: 11953) +LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1ManyValues(bytes32[]) (runs: 2062, μ: 35362, ~: 35566) LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1NoValues() (gas: 4679) -LibParseOperandHandleOperandDisallowedTest:testHandleOperandDisallowedAnyValues(bytes32[]) (runs: 2060, μ: 34731, ~: 34754) +LibParseOperandHandleOperandDisallowedTest:testHandleOperandDisallowedAnyValues(bytes32[]) (runs: 2064, μ: 34718, ~: 34636) LibParseOperandHandleOperandDisallowedTest:testHandleOperandDisallowedNoValues() (gas: 3219) -LibParseOperandHandleOperandDoublePerByteNoDefaultTest:testHandleOperandDoublePerByteNoDefaultBothValuesWithinOneByte(uint256,uint256) (runs: 2060, μ: 9918, ~: 10039) -LibParseOperandHandleOperandDoublePerByteNoDefaultTest:testHandleOperandDoublePerByteNoDefaultFirstValueTooLarge(uint256,uint256) (runs: 2060, μ: 11257, ~: 11074) -LibParseOperandHandleOperandDoublePerByteNoDefaultTest:testHandleOperandDoublePerByteNoDefaultManyValues(bytes32[]) (runs: 2059, μ: 35165, ~: 35470) +LibParseOperandHandleOperandDoublePerByteNoDefaultTest:testHandleOperandDoublePerByteNoDefaultBothValuesWithinOneByte(uint256,uint256) (runs: 2064, μ: 9918, ~: 10039) +LibParseOperandHandleOperandDoublePerByteNoDefaultTest:testHandleOperandDoublePerByteNoDefaultFirstValueTooLarge(uint256,uint256) (runs: 2064, μ: 11257, ~: 11074) +LibParseOperandHandleOperandDoublePerByteNoDefaultTest:testHandleOperandDoublePerByteNoDefaultManyValues(bytes32[]) (runs: 2063, μ: 35152, ~: 35470) LibParseOperandHandleOperandDoublePerByteNoDefaultTest:testHandleOperandDoublePerByteNoDefaultNoValues() (gas: 4625) -LibParseOperandHandleOperandDoublePerByteNoDefaultTest:testHandleOperandDoublePerByteNoDefaultOneValue(uint256) (runs: 2060, μ: 8806, ~: 9089) -LibParseOperandHandleOperandDoublePerByteNoDefaultTest:testHandleOperandDoublePerByteNoDefaultSecondValueTooLarge(uint256,uint256) (runs: 2060, μ: 11279, ~: 11085) -LibParseOperandHandleOperandM1M1Test:testHandleOperandM1M1ManyValues(bytes32[]) (runs: 2059, μ: 35059, ~: 35364) +LibParseOperandHandleOperandDoublePerByteNoDefaultTest:testHandleOperandDoublePerByteNoDefaultOneValue(uint256) (runs: 2064, μ: 8807, ~: 9089) +LibParseOperandHandleOperandDoublePerByteNoDefaultTest:testHandleOperandDoublePerByteNoDefaultSecondValueTooLarge(uint256,uint256) (runs: 2064, μ: 11278, ~: 11085) +LibParseOperandHandleOperandM1M1Test:testHandleOperandM1M1ManyValues(bytes32[]) (runs: 2063, μ: 35046, ~: 35364) LibParseOperandHandleOperandM1M1Test:testHandleOperandM1M1NoValues() (gas: 3891) -LibParseOperandHandleOperandM1M1Test:testHandleOperandM1M1OneValue(uint256) (runs: 2060, μ: 8180, ~: 8200) -LibParseOperandHandleOperandM1M1Test:testHandleOperandM1M1OneValueTooLarge(uint256) (runs: 2060, μ: 9321, ~: 9095) -LibParseOperandHandleOperandM1M1Test:testHandleOperandM1M1TwoValues(uint256,uint256) (runs: 2060, μ: 9877, ~: 9901) -LibParseOperandHandleOperandM1M1Test:testHandleOperandM1M1TwoValuesSecondValueTooLarge(uint256,uint256) (runs: 2060, μ: 11184, ~: 11003) -LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullManyValues(bytes32[]) (runs: 2060, μ: 34966, ~: 35145) -LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullNoDefaultManyValues(bytes32[]) (runs: 2060, μ: 34986, ~: 35165) +LibParseOperandHandleOperandM1M1Test:testHandleOperandM1M1OneValue(uint256) (runs: 2064, μ: 8180, ~: 8200) +LibParseOperandHandleOperandM1M1Test:testHandleOperandM1M1OneValueTooLarge(uint256) (runs: 2064, μ: 9320, ~: 9095) +LibParseOperandHandleOperandM1M1Test:testHandleOperandM1M1TwoValues(uint256,uint256) (runs: 2064, μ: 9877, ~: 9901) +LibParseOperandHandleOperandM1M1Test:testHandleOperandM1M1TwoValuesSecondValueTooLarge(uint256,uint256) (runs: 2064, μ: 11184, ~: 11003) +LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullManyValues(bytes32[]) (runs: 2064, μ: 34953, ~: 35145) +LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullNoDefaultManyValues(bytes32[]) (runs: 2064, μ: 34973, ~: 35165) LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullNoDefaultNoValues() (gas: 4599) -LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullNoDefaultSingleValue(uint256) (runs: 2060, μ: 7612, ~: 7893) +LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullNoDefaultSingleValue(uint256) (runs: 2064, μ: 7612, ~: 7893) LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullNoValues() (gas: 3266) -LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullSingleValue(uint256) (runs: 2060, μ: 7651, ~: 7936) -LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullSingleValueDisallowed(uint256) (runs: 2060, μ: 9290, ~: 9499) -LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullSingleValueNoDefaultDisallowed(uint256) (runs: 2060, μ: 9331, ~: 9540) +LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullSingleValue(uint256) (runs: 2064, μ: 7651, ~: 7936) +LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullSingleValueDisallowed(uint256) (runs: 2064, μ: 9290, ~: 9499) +LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullSingleValueNoDefaultDisallowed(uint256) (runs: 2064, μ: 9331, ~: 9540) LibParseOperandM1M1Test:testOperandM1M1Both() (gas: 57649) LibParseOperandM1M1Test:testOperandM1M1BothZero() (gas: 55824) LibParseOperandM1M1Test:testOperandM1M1Elided() (gas: 51802) @@ -861,13 +871,13 @@ LibParseOperandM1M1Test:testOperandM1M1SecondOverflow() (gas: 53500) LibParseOperandM1M1Test:testOperandM1M1SecondZero() (gas: 57377) LibParseOperandM1M1Test:testOperandM1M1Unclosed() (gas: 251386) LibParseOperandM1M1Test:testOperandM1M1Unopened() (gas: 49346) -LibParseOperandParseOperandTest:testParseOperandEmptyOperand(string) (runs: 109, μ: 42975, ~: 42972) -LibParseOperandParseOperandTest:testParseOperandFourDecimalLiterals(bool[4],int256[4],string[5],string) (runs: 112, μ: 359040, ~: 356850) -LibParseOperandParseOperandTest:testParseOperandNoOpeningCharacter(string) (runs: 110, μ: 42852, ~: 42849) -LibParseOperandParseOperandTest:testParseOperandSingleDecimalLiteral(bool,int256,string,string,string) (runs: 112, μ: 155827, ~: 159198) -LibParseOperandParseOperandTest:testParseOperandThreeDecimalLiterals(bool,bool,bool,int256,int256,int256,string,string,string,string,string) (runs: 112, μ: 276159, ~: 269780) +LibParseOperandParseOperandTest:testParseOperandEmptyOperand(string) (runs: 113, μ: 42975, ~: 42972) +LibParseOperandParseOperandTest:testParseOperandFourDecimalLiterals(bool[4],int256[4],string[5],string) (runs: 116, μ: 359664, ~: 356850) +LibParseOperandParseOperandTest:testParseOperandNoOpeningCharacter(string) (runs: 114, μ: 42852, ~: 42849) +LibParseOperandParseOperandTest:testParseOperandSingleDecimalLiteral(bool,int256,string,string,string) (runs: 116, μ: 154937, ~: 157351) +LibParseOperandParseOperandTest:testParseOperandThreeDecimalLiterals(bool,bool,bool,int256,int256,int256,string,string,string,string,string) (runs: 116, μ: 274418, ~: 266789) LibParseOperandParseOperandTest:testParseOperandTooManyValues() (gas: 54582) -LibParseOperandParseOperandTest:testParseOperandTwoDecimalLiterals(bool,bool,int256,int256,string,string,string,string) (runs: 112, μ: 213621, ~: 212623) +LibParseOperandParseOperandTest:testParseOperandTwoDecimalLiterals(bool,bool,int256,int256,string,string,string,string) (runs: 116, μ: 214051, ~: 214817) LibParseOperandParseOperandTest:testParseOperandUnclosed() (gas: 54141) LibParseOperandParseOperandTest:testParseOperandUnexpectedChars() (gas: 51419) LibParseOperandSingleFullTest:testOperandSingleFullElided() (gas: 51178) @@ -886,16 +896,16 @@ LibParseOperandSingleFullTest:testOperandSingleFullUint16MaxOverflow() (gas: 514 LibParseOperandSingleFullTest:testOperandSingleFullUnclosed() (gas: 49874) LibParseOperandSingleFullTest:testOperandSingleFullUnopened() (gas: 48263) LibParseOperandSingleFullTest:testOperandSingleFullZero() (gas: 54245) -LibParseParseWordTest:testLibParseParseWordEnd(uint256) (runs: 2060, μ: 9457, ~: 9402) +LibParseParseWordTest:testLibParseParseWordEnd(uint256) (runs: 2064, μ: 9457, ~: 9402) LibParseParseWordTest:testLibParseParseWordExamples() (gas: 26983) -LibParseParseWordTest:testLibParseParseWordReferenceImplementation(bytes,uint256) (runs: 2049, μ: 6477, ~: 6257) -LibParseParseWordTest:testLibParseParseWordTooLong(bytes) (runs: 2059, μ: 9726, ~: 9660) -LibParsePragmaKeywordTest:testPragmaKeywordNoWhitespace(uint256,string) (runs: 112, μ: 8982, ~: 8974) -LibParsePragmaKeywordTest:testPragmaKeywordNoop((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),string) (runs: 112, μ: 16117, ~: 15980) -LibParsePragmaKeywordTest:testPragmaKeywordParseSubParserBasic(string,address,uint256,string) (runs: 110, μ: 171536, ~: 158943) -LibParsePragmaKeywordTest:testPragmaKeywordParseSubParserCoupleOfAddresses(string,string,address,address,uint256,string) (runs: 110, μ: 348711, ~: 360562) +LibParseParseWordTest:testLibParseParseWordReferenceImplementation(bytes,uint256) (runs: 2050, μ: 6477, ~: 6257) +LibParseParseWordTest:testLibParseParseWordTooLong(bytes) (runs: 2062, μ: 9726, ~: 9660) +LibParsePragmaKeywordTest:testPragmaKeywordNoWhitespace(uint256,string) (runs: 116, μ: 8981, ~: 8974) +LibParsePragmaKeywordTest:testPragmaKeywordNoop((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),string) (runs: 116, μ: 16198, ~: 15980) +LibParsePragmaKeywordTest:testPragmaKeywordParseSubParserBasic(string,address,uint256,string) (runs: 114, μ: 170723, ~: 156164) +LibParsePragmaKeywordTest:testPragmaKeywordParseSubParserCoupleOfAddresses(string,string,address,address,uint256,string) (runs: 114, μ: 347430, ~: 359033) LibParsePragmaKeywordTest:testPragmaKeywordParseSubParserSpecificStrings() (gas: 254483) -LibParsePragmaKeywordTest:testPragmaKeywordWhitespaceNoHex(uint256,string) (runs: 112, μ: 19975, ~: 18056) +LibParsePragmaKeywordTest:testPragmaKeywordWhitespaceNoHex(uint256,string) (runs: 116, μ: 19940, ~: 18056) LibParseSingleLHSIgnoredGasTest:testParseGasSingleLHSIgnored00() (gas: 8389) LibParseSingleLHSIgnoredGasTest:testParseGasSingleLHSIgnored01() (gas: 8451) LibParseSingleLHSIgnoredGasTest:testParseGasSingleLHSIgnored02() (gas: 8537) @@ -971,80 +981,80 @@ LibParseSingleRHSNamedGasTest:testParseGasRHS30() (gas: 119933) LibParseSourceInputsTest:testParseSourceInputsEmptyLinePrefix() (gas: 49446) LibParseSourceInputsTest:testParseSourceInputsMultipleLines() (gas: 52189) LibParseSourceInputsTest:testParseSourceInputsSingle() (gas: 49423) -LibParseStackNameTest:testPushAndRetrieveStackNameDouble((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),bytes32,bytes32) (runs: 2060, μ: 20472, ~: 20339) -LibParseStackNameTest:testPushAndRetrieveStackNameDoubleIdentical((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),bytes32) (runs: 2060, μ: 17752, ~: 17668) -LibParseStackNameTest:testPushAndRetrieveStackNameMany((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),uint256) (runs: 2060, μ: 312857, ~: 261007) -LibParseStackNameTest:testPushAndRetrieveStackNameSingle((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),bytes32) (runs: 2060, μ: 17716, ~: 17632) -LibParseStateConstantValueBloomTest:testConstantValueBloom(bytes32) (runs: 2060, μ: 3330, ~: 3330) +LibParseStackNameTest:testPushAndRetrieveStackNameDouble((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),bytes32,bytes32) (runs: 2064, μ: 20475, ~: 20339) +LibParseStackNameTest:testPushAndRetrieveStackNameDoubleIdentical((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),bytes32) (runs: 2064, μ: 17755, ~: 17668) +LibParseStackNameTest:testPushAndRetrieveStackNameMany((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),uint256) (runs: 2064, μ: 313486, ~: 261966) +LibParseStackNameTest:testPushAndRetrieveStackNameSingle((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),bytes32) (runs: 2064, μ: 17719, ~: 17632) +LibParseStateConstantValueBloomTest:testConstantValueBloom(bytes32) (runs: 2064, μ: 3330, ~: 3330) LibParseStateConstantValueBloomTest:testConstantValueBloomAllBits() (gas: 45879) -LibParseStateConstantValueBloomTest:testConstantValueBloomSingleBit(bytes32) (runs: 2060, μ: 3447, ~: 3447) -LibParseStateExportSubParsersTest:testExportSubParsers((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),address[]) (runs: 2060, μ: 147925, ~: 144413) -LibParseStateNewActiveSourcePointerTest:testAlignedOldPointer(uint256,uint256) (runs: 2060, μ: 13351, ~: 13470) -LibParseStateNewActiveSourcePointerTest:testPostUnalignedNewPointer(uint256) (runs: 2060, μ: 7158, ~: 7158) +LibParseStateConstantValueBloomTest:testConstantValueBloomSingleBit(bytes32) (runs: 2064, μ: 3447, ~: 3447) +LibParseStateExportSubParsersTest:testExportSubParsers((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),address[]) (runs: 2064, μ: 147899, ~: 144376) +LibParseStateNewActiveSourcePointerTest:testAlignedOldPointer(uint256,uint256) (runs: 2064, μ: 13350, ~: 13470) +LibParseStateNewActiveSourcePointerTest:testPostUnalignedNewPointer(uint256) (runs: 2064, μ: 7158, ~: 7158) LibParseStateNewActiveSourcePointerTest:testPreUnalignedNewPointer() (gas: 9188) -LibParseStateNewActiveSourcePointerTest:testZeroOldPointer(bytes) (runs: 2060, μ: 4802, ~: 4799) -LibParseStatePushConstantValueTest:testPushConstantValueEmpty(bytes,bytes,bytes,bytes) (runs: 2060, μ: 6476, ~: 6474) -LibParseStatePushConstantValueTest:testPushConstantValueMany(bytes32[]) (runs: 2060, μ: 225246, ~: 225640) -LibParseStatePushConstantValueTest:testPushConstantValueSingle(bytes32) (runs: 2060, μ: 7030, ~: 7030) -LibParseStatePushSubParserTest:testPushSubParserList((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),address[]) (runs: 2060, μ: 134548, ~: 131638) -LibParseStatePushSubParserTest:testPushSubParserMultiple((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),address,address,address) (runs: 2060, μ: 17005, ~: 16935) -LibParseStatePushSubParserTest:testPushSubParserOverflow((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),uint256) (runs: 2060, μ: 44727, ~: 45088) -LibParseStatePushSubParserTest:testPushSubParserZero((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),address) (runs: 2060, μ: 15486, ~: 15494) +LibParseStateNewActiveSourcePointerTest:testZeroOldPointer(bytes) (runs: 2064, μ: 4802, ~: 4799) +LibParseStatePushConstantValueTest:testPushConstantValueEmpty(bytes,bytes,bytes,bytes) (runs: 2064, μ: 6476, ~: 6474) +LibParseStatePushConstantValueTest:testPushConstantValueMany(bytes32[]) (runs: 2064, μ: 225155, ~: 224765) +LibParseStatePushConstantValueTest:testPushConstantValueSingle(bytes32) (runs: 2064, μ: 7030, ~: 7030) +LibParseStatePushSubParserTest:testPushSubParserList((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),address[]) (runs: 2064, μ: 134524, ~: 131588) +LibParseStatePushSubParserTest:testPushSubParserMultiple((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),address,address,address) (runs: 2064, μ: 17008, ~: 16935) +LibParseStatePushSubParserTest:testPushSubParserOverflow((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),uint256) (runs: 2064, μ: 44736, ~: 45088) +LibParseStatePushSubParserTest:testPushSubParserZero((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),address) (runs: 2064, μ: 15489, ~: 15494) LibParseUnclosedLeftParenTest:testParseUnclosedLeftParen() (gas: 48678) LibParseUnclosedLeftParenTest:testParseUnclosedLeftParenNested() (gas: 68700) LibParseUnclosedLeftParenTest:testParseUnclosedLeftParenNested2() (gas: 70248) LibParseUnclosedLeftParenTest:testParseUnclosedLeftParenNested3() (gas: 80148) LibParseUnclosedLeftParenTest:testParseUnclosedLeftParenNested4() (gas: 80013) -LibParseUnexpectedLHSTest:testParseUnexpectedLHSBadIgnoredTail(uint8) (runs: 2059, μ: 46790, ~: 46791) -LibParseUnexpectedLHSTest:testParseUnexpectedLHSBadNamedTail(uint8,bytes) (runs: 2060, μ: 52911, ~: 52956) +LibParseUnexpectedLHSTest:testParseUnexpectedLHSBadIgnoredTail(uint8) (runs: 2062, μ: 46790, ~: 46791) +LibParseUnexpectedLHSTest:testParseUnexpectedLHSBadNamedTail(uint8,bytes) (runs: 2064, μ: 52910, ~: 52956) LibParseUnexpectedLHSTest:testParseUnexpectedLHSEOF() (gas: 132631) LibParseUnexpectedLHSTest:testParseUnexpectedLHSEOL() (gas: 132654) -LibParseUnexpectedLHSTest:testParseUnexpectedLHSSingleChar(uint8) (runs: 2059, μ: 46382, ~: 46382) +LibParseUnexpectedLHSTest:testParseUnexpectedLHSSingleChar(uint8) (runs: 2062, μ: 46382, ~: 46382) LibParseUnexpectedLHSTest:testParseUnexpectedLHSUnderscoreTail() (gas: 134986) -LibParseUnexpectedRHSTest:testParseUnexpectedRHS(uint8) (runs: 2060, μ: 46615, ~: 46615) +LibParseUnexpectedRHSTest:testParseUnexpectedRHS(uint8) (runs: 2064, μ: 46615, ~: 46615) LibParseUnexpectedRHSTest:testParseUnexpectedRHSLeftParen() (gas: 46106) LibParseUnexpectedRightParenTest:testParseUnexpectedRightParen() (gas: 50722) LibParseUnexpectedRightParenTest:testParseUnexpectedRightParenNested() (gas: 56990) -LibSubParseSubParserExternTest:testLibSubParseSubParserExtern(address,uint8,uint8,uint8,uint16,uint8) (runs: 2060, μ: 13232, ~: 13163) -LibSubParseSubParserExternTest:testLibSubParseSubParserExternConstantsHeightOverflow(address,uint256,uint8,uint8,uint16,uint8) (runs: 2060, μ: 11434, ~: 11167) -RainterpreterExpressionDeployerDeployCheckTest:testRainterpreterExpressionDeployerDeployNoEIP1820() (gas: 8595346) -RainterpreterExpressionDeployerDescribedByMetaV1Test:testRainterpreterExpressionDeployerDescribedByMetaV1Happy() (gas: 8607770) -RainterpreterExpressionDeployerIERC165Test:testRainterpreterExpressionDeployerIERC165(bytes4) (runs: 2060, μ: 8602787, ~: 8602787) +LibSubParseSubParserExternTest:testLibSubParseSubParserExtern(address,uint8,uint8,uint8,uint16,uint8) (runs: 2064, μ: 13231, ~: 13163) +LibSubParseSubParserExternTest:testLibSubParseSubParserExternConstantsHeightOverflow(address,uint256,uint8,uint8,uint16,uint8) (runs: 2064, μ: 11435, ~: 11167) +RainterpreterExpressionDeployerDeployCheckTest:testRainterpreterExpressionDeployerDeployNoEIP1820() (gas: 8618001) +RainterpreterExpressionDeployerDescribedByMetaV1Test:testRainterpreterExpressionDeployerDescribedByMetaV1Happy() (gas: 8630601) +RainterpreterExpressionDeployerIERC165Test:testRainterpreterExpressionDeployerIERC165(bytes4) (runs: 2064, μ: 8625442, ~: 8625442) RainterpreterExpressionDeployerMetaTest:testRainterpreterExpressionDeployerExpectedConstructionMetaHash() (gas: 6221) -RainterpreterIERC165Test:testRainterpreterIERC165(bytes4) (runs: 2060, μ: 3391514, ~: 3391514) -RainterpreterParserIERC165Test:testRainterpreterParserIERC165(bytes4) (runs: 2060, μ: 3527746, ~: 3527746) -RainterpreterParserParserPragma:testParsePragmaNoPragma() (gas: 17621116) -RainterpreterParserParserPragma:testParsePragmaSinglePragma() (gas: 10624405) -RainterpreterParserParserPragma:testParsePragmaWithInterstitial() (gas: 10627697) -RainterpreterParserPointersTest:testLiteralParserFunctionPointers() (gas: 3526752) -RainterpreterParserPointersTest:testOperandHandlerFunctionPointers() (gas: 3534430) -RainterpreterParserPointersTest:testParserParseMeta() (gas: 4690394) -RainterpreterPointersTest:testOpcodeFunctionPointers() (gas: 3398169) -RainterpreterReferenceExternContextRainlenTest:testRainterpreterReferenceExterNPE2ContextRainlenHappy() (gas: 2160770) -RainterpreterReferenceExternContextSenderTest:testRainterpreterReferenceExterNPE2ContextContractHappy() (gas: 2160356) -RainterpreterReferenceExternContextSenderTest:testRainterpreterReferenceExterNPE2ContextSenderHappy() (gas: 2159052) +RainterpreterIERC165Test:testRainterpreterIERC165(bytes4) (runs: 2064, μ: 3409362, ~: 3409362) +RainterpreterParserIERC165Test:testRainterpreterParserIERC165(bytes4) (runs: 2064, μ: 3530562, ~: 3530562) +RainterpreterParserParserPragma:testParsePragmaNoPragma() (gas: 17635206) +RainterpreterParserParserPragma:testParsePragmaSinglePragma() (gas: 10632861) +RainterpreterParserParserPragma:testParsePragmaWithInterstitial() (gas: 10636153) +RainterpreterParserPointersTest:testLiteralParserFunctionPointers() (gas: 3529568) +RainterpreterParserPointersTest:testOperandHandlerFunctionPointers() (gas: 3537642) +RainterpreterParserPointersTest:testParserParseMeta() (gas: 4764457) +RainterpreterPointersTest:testOpcodeFunctionPointers() (gas: 3416437) +RainterpreterReferenceExternContextRainlenTest:testRainterpreterReferenceExterNPE2ContextRainlenHappy() (gas: 2160790) +RainterpreterReferenceExternContextSenderTest:testRainterpreterReferenceExterNPE2ContextContractHappy() (gas: 2160375) +RainterpreterReferenceExternContextSenderTest:testRainterpreterReferenceExterNPE2ContextSenderHappy() (gas: 2159071) RainterpreterReferenceExternDescribedByMetaV1:testRainterpreterReferenceExternDescribedByMetaV1Happy() (gas: 2081641) -RainterpreterReferenceExternIERC165Test:testRainterpreterReferenceExternIERC165(bytes4) (runs: 2060, μ: 2093899, ~: 2093899) -RainterpreterReferenceExternIntIncTest:testRainterpreterReferenceExternIntIncHappySugared() (gas: 2184511) -RainterpreterReferenceExternIntIncTest:testRainterpreterReferenceExternIntIncHappyUnsugared() (gas: 2178076) -RainterpreterReferenceExternIntIncTest:testRainterpreterReferenceExternIntIncIntegrity(bytes32,uint256,uint256) (runs: 112, μ: 3597, ~: 3597) -RainterpreterReferenceExternIntIncTest:testRainterpreterReferenceExternIntIncRun(bytes32,bytes32[]) (runs: 112, μ: 768290, ~: 770064) -RainterpreterReferenceExternIntIncTest:testRainterpreterReferenceExternIntIncSubParseKnownWord(uint16,bytes1) (runs: 112, μ: 2095517, ~: 2095759) -RainterpreterReferenceExternIntIncTest:testRainterpreterReferenceExternIntIncSubParseUnknownWord(uint16,bytes1,bytes) (runs: 101, μ: 2091861, ~: 2091662) +RainterpreterReferenceExternIERC165Test:testRainterpreterReferenceExternIERC165(bytes4) (runs: 2064, μ: 2093899, ~: 2093899) +RainterpreterReferenceExternIntIncTest:testRainterpreterReferenceExternIntIncHappySugared() (gas: 2184531) +RainterpreterReferenceExternIntIncTest:testRainterpreterReferenceExternIntIncHappyUnsugared() (gas: 2178094) +RainterpreterReferenceExternIntIncTest:testRainterpreterReferenceExternIntIncIntegrity(bytes32,uint256,uint256) (runs: 116, μ: 3597, ~: 3597) +RainterpreterReferenceExternIntIncTest:testRainterpreterReferenceExternIntIncRun(bytes32,bytes32[]) (runs: 116, μ: 764805, ~: 770064) +RainterpreterReferenceExternIntIncTest:testRainterpreterReferenceExternIntIncSubParseKnownWord(uint16,bytes1) (runs: 116, μ: 2095518, ~: 2095759) +RainterpreterReferenceExternIntIncTest:testRainterpreterReferenceExternIntIncSubParseUnknownWord(uint16,bytes1,bytes) (runs: 103, μ: 2091856, ~: 2091662) RainterpreterReferenceExternPointersTest:testIntegrityFunctionPointers() (gas: 2081736) RainterpreterReferenceExternPointersTest:testOpcodeFunctionPointers() (gas: 2081779) RainterpreterReferenceExternPointersTest:testSubParserFunctionPointers() (gas: 2082202) RainterpreterReferenceExternPointersTest:testSubParserLiteralParsers() (gas: 2081756) RainterpreterReferenceExternPointersTest:testSubParserOperandParsers() (gas: 2082229) RainterpreterReferenceExternPointersTest:testSubParserParseMeta() (gas: 22017) -RainterpreterReferenceExternRepeatTest:testRainterpreterReferenceExternRepeatHappy() (gas: 2213046) -RainterpreterReferenceExternStackOperandTest:testRainterpreterReferenceExternStackOperandSingle(uint256) (runs: 2060, μ: 2168226, ~: 2168303) -RainterpreterReferenceExternUnknownWordTest:testRainterpreterReferenceExternUnknownWord() (gas: 2129390) -RainterpreterStateOverlayTest:testStateOverlayGet() (gas: 52398) -RainterpreterStateOverlayTest:testStateOverlaySet() (gas: 83137) -RainterpreterStoreIERC165Test:testRainterpreterStoreIERC165(bytes4) (runs: 2060, μ: 229923, ~: 229923) +RainterpreterReferenceExternRepeatTest:testRainterpreterReferenceExternRepeatHappy() (gas: 2213082) +RainterpreterReferenceExternStackOperandTest:testRainterpreterReferenceExternStackOperandSingle(uint256) (runs: 2064, μ: 2168232, ~: 2168321) +RainterpreterReferenceExternUnknownWordTest:testRainterpreterReferenceExternUnknownWord() (gas: 2129396) +RainterpreterStateOverlayTest:testStateOverlayGet() (gas: 52416) +RainterpreterStateOverlayTest:testStateOverlaySet() (gas: 83156) +RainterpreterStoreIERC165Test:testRainterpreterStoreIERC165(bytes4) (runs: 2064, μ: 229923, ~: 229923) RainterpreterStoreTest:testRainterpreterStoreSetGetDupes((uint256,bytes32[11])[]) (runs: 105, μ: 1602851, ~: 1605247) -RainterpreterStoreTest:testRainterpreterStoreSetGetNoDupesMany((uint256,bytes32[])[]) (runs: 112, μ: 3403233, ~: 3312550) -RainterpreterStoreTest:testRainterpreterStoreSetGetNoDupesSingle(uint256,bytes32[]) (runs: 112, μ: 1923307, ~: 1924733) -RainterpreterStoreTest:testRainterpreterStoreSetOddLength(uint256,bytes32[]) (runs: 109, μ: 249571, ~: 249891) -RainterpreterTest:testRainterpreterOddFunctionPointersLength() (gas: 3684) \ No newline at end of file +RainterpreterStoreTest:testRainterpreterStoreSetGetNoDupesMany((uint256,bytes32[])[]) (runs: 116, μ: 3388156, ~: 3286339) +RainterpreterStoreTest:testRainterpreterStoreSetGetNoDupesSingle(uint256,bytes32[]) (runs: 116, μ: 1922218, ~: 1924733) +RainterpreterStoreTest:testRainterpreterStoreSetOddLength(uint256,bytes32[]) (runs: 111, μ: 249445, ~: 249891) +RainterpreterTest:testRainterpreterOddFunctionPointersLength() (gas: 3696) \ No newline at end of file diff --git a/src/generated/Rainterpreter.pointers.sol b/src/generated/Rainterpreter.pointers.sol index 66e4ebf17..20e811644 100644 --- a/src/generated/Rainterpreter.pointers.sol +++ b/src/generated/Rainterpreter.pointers.sol @@ -10,11 +10,11 @@ pragma solidity =0.8.25; /// @dev Hash of the known bytecode. -bytes32 constant BYTECODE_HASH = bytes32(0x3067cd3ea6ed3bd416a94f05994e24197fbea237f58ebb54c31c455c02c9c578); +bytes32 constant BYTECODE_HASH = bytes32(0xa5175c6153d5ad9a3d70865c13a68a940e0dc7bd2b5853bc328483d0dc49e89b); /// @dev The function pointers known to the interpreter for dynamic dispatch. /// By setting these as a constant they can be inlined into the interpreter /// and loaded at eval time for very low gas (~100) due to the compiler /// optimising it to a single `codecopy` to build the in memory bytes array. bytes constant OPCODE_FUNCTION_POINTERS = - hex"0831086308870a130adc0aee0b000b190b3d0b710b820b930c350c540d120dc20e460f8810bb0d1211b4126613081380139113a213a213b3141e152915a815c115d51634164d1666169f16ca16e316fc17231736179817e61834188218d018de192c197a19ab19b919c719d51a231a541a851ad31b041b351b831bb01bfe1cf4"; + hex"083f087108950a210aea0afc0b0e0b270b4b0b7f0b900ba10c430c620d200dd00e540f9610c90d2011c212741316138e139f13b013b013c1142c153715b615cf15e31642165b167416ad16d816f1170a1753177a178d17ef183d188b18d919271935198319d11a021a101a1e1a2c1a7a1aab1adc1b2a1b5b1b8c1bda1c071c551d4b"; diff --git a/src/generated/RainterpreterExpressionDeployer.pointers.sol b/src/generated/RainterpreterExpressionDeployer.pointers.sol index 2de4954e0..0298dd5c7 100644 --- a/src/generated/RainterpreterExpressionDeployer.pointers.sol +++ b/src/generated/RainterpreterExpressionDeployer.pointers.sol @@ -10,11 +10,11 @@ pragma solidity =0.8.25; /// @dev Hash of the known bytecode. -bytes32 constant BYTECODE_HASH = bytes32(0xe31030f8cd9295c31787bc462f4a710eb6ffd3b3acc358eb126ef96540cd56b4); +bytes32 constant BYTECODE_HASH = bytes32(0x332f44ea870a144ee68d08d1ee0959b99372cc76824247c8f256299ddce31111); /// @dev The hash of the meta that describes the contract. -bytes32 constant DESCRIBED_BY_META_HASH = bytes32(0xd80b1ab409ece8a0cc8b7cf98b80d67805b2cfdafeeee1797fdb999edd8ba1dd); +bytes32 constant DESCRIBED_BY_META_HASH = bytes32(0x559180d545e1c55b597631749dd73aa478dbcbb573fe185ba63407725d65c3e0); /// @dev The function pointers for the integrity check fns. bytes constant INTEGRITY_FUNCTION_POINTERS = - hex"0eb80f360f9a1114111e111e11281131114c11f211f2124e12c612d3111e112812d3111e1128111e111e111e1128111411141114111412dd1302131c111e111e12dd111e111e12d31128111e111e12d311141326132613261326132611281326134011141128112811281326111411141326111411141340111e13401128131c"; + hex"0ec00f3e0fa2111c1126112611301139115411fa11fa125612ce12db1126113012db112611301126112611261130111c111c111c111c12e5130a13241126112612e51126112612db11301126112612db12db111c132e132e132e132e132e1130132e1348111c113011301130132e111c111c132e111c111c13481126134811301324"; diff --git a/src/generated/RainterpreterParser.pointers.sol b/src/generated/RainterpreterParser.pointers.sol index ba3bab281..ef8c3c3f1 100644 --- a/src/generated/RainterpreterParser.pointers.sol +++ b/src/generated/RainterpreterParser.pointers.sol @@ -10,7 +10,7 @@ pragma solidity =0.8.25; /// @dev Hash of the known bytecode. -bytes32 constant BYTECODE_HASH = bytes32(0x81b9d86cfe33dbfd1bfc4f9fcbe240b785ffac59ee86533e175590c227f8538d); +bytes32 constant BYTECODE_HASH = bytes32(0xbb928fe4d73b4e338f52b27b686becb028a6b532281f27ee70d64a9d05d417eb); /// @dev The parse meta that is used to lookup word definitions. /// The structure of the parse meta is: @@ -29,7 +29,7 @@ bytes32 constant BYTECODE_HASH = bytes32(0x81b9d86cfe33dbfd1bfc4f9fcbe240b785ffa /// bit count of the previous bloom filter. If we reach the end of the bloom /// filters then we have a miss. bytes constant PARSE_META = - hex"02192ac782060c081806c6c1900010012220200283045069400114680901208401260000000000000000000000000000000000000000001000000000000000000000202c49b09d200441910d1e98a7329c08461fd6ea18118eba9713065d3029ab10ec04ac72c00e7ff5a23fae0c8706fb9c253ec7bc2333acb2941b0b5fc712fec72836e7c86c18d295ed35d9a6c50063d58d34dd44c9261df07b3acb6609012ba09831d9776c0c6cbb422f6d6b2403ae6396082c4e962787daec2841d78a16172ab51a5b8f1d1c2d57c43cca85c615f871180f48502f25b9d38d0be7f2e71ef1ff4d19d140c23d1a1e3510abcc6405b702d7020f038b2a93067d220df2ef07ee624a214143471482e75b1d60aa350a3d21ff174c80cb30cc4a6a3b023c042ba9578e370cdb6909a046dc39d89c342ed4e3cf233bc325389b388724b25e682d7b09ff"; + hex"02192ac782060c081806c6c1900010012220200283045069400114680901208401260000200000000000000000000000000000000000001000000000000000000000202d49b09d200441910d1e98a7339c08461fd6ea18118eba9713065d302aab10ec04ac72c00e7ff5a240ae0c8706fb9c253fc7bc2334acb2941b0b5fc712fec72837e7c86c18d295ed36d9a6c50063d58d35dd44c9261df07b3bcb6609012ba09832d9776c0c6cbb42306d6b2403ae6396082c4e96277f03402941d78a16172ab51a5b8f1d1c2d57c43dca85c615f871180f48502f25b9d38d0be7f2e71ef1ff4d19d140c23e1a1e3510abcc6405b702d7020f038b2b93067d220df2ef07ee624a214143471482e75b1d60aa350a3d21ff174c80cb31cc4a6a3c023c042ca9578e380cdb6909a046dc3ad89c342fd4e3cf233bc325399b388724b25e682e7b09ff28dc84e5"; /// @dev The build depth of the parser meta. @@ -39,11 +39,11 @@ uint8 constant PARSE_META_BUILD_DEPTH = 2; /// These positional indexes all map to the same indexes looked up in the parse /// meta. bytes constant OPERAND_HANDLER_FUNCTION_POINTERS = - hex"1a9d1a9d1a9d1b721c891c891c891b721b721a9d1a9d1a9d1c891c891c891c891c891c891c891c891c891c891c891c891c891c891c891c891c891c891c891c891c891c891c891c891c891c891c891c891c891c891c891c891c891c891c891c891c891c891c891c891c891c891c891c891c891c891c891c891c891a9d1c891c89"; + hex"1aa51aa51aa51b7a1c911c911c911b7a1b7a1aa51aa51aa51c911c911c911c911c911c911c911c911c911c911c911c911c911c911c911c911c911c911c911c911c911c911c911c911c911c911c911c911c911c911c911c911c911c911c911c911c911c911c911c911c911c911c911c911c911c911c911c911c911c911aa51c911c91"; /// @dev Every two bytes is a function pointer for a literal parser. /// Literal dispatches are determined by the first byte(s) of the literal /// rather than a full word lookup, and are done with simple conditional /// jumps as the possibilities are limited compared to the number of words we /// have. -bytes constant LITERAL_PARSER_FUNCTION_POINTERS = hex"15e51817185a18f8"; +bytes constant LITERAL_PARSER_FUNCTION_POINTERS = hex"15ed181f18621900"; diff --git a/src/lib/op/LibAllStandardOps.sol b/src/lib/op/LibAllStandardOps.sol index 4e1f7d236..2125ad2e9 100644 --- a/src/lib/op/LibAllStandardOps.sol +++ b/src/lib/op/LibAllStandardOps.sol @@ -59,7 +59,7 @@ import {LibOpIsZero} from "./logic/LibOpIsZero.sol"; import {LibOpLessThan} from "./logic/LibOpLessThan.sol"; import {LibOpLessThanOrEqualTo} from "./logic/LibOpLessThanOrEqualTo.sol"; -// import {LibOpExponentialGrowth} from "./math/growth/LibOpExponentialGrowth.sol"; +import {LibOpExponentialGrowth} from "./math/growth/LibOpExponentialGrowth.sol"; import {LibOpLinearGrowth} from "./math/growth/LibOpLinearGrowth.sol"; import {LibOpMaxUint256} from "./math/uint256/LibOpMaxUint256.sol"; @@ -112,7 +112,7 @@ import {LibParseLiteralHex} from "../parse/literal/LibParseLiteralHex.sol"; import {LibParseLiteralSubParseable} from "../parse/literal/LibParseLiteralSubParseable.sol"; /// @dev Number of ops currently provided by `AllStandardOps`. -uint256 constant ALL_STANDARD_OPS_LENGTH = 64; +uint256 constant ALL_STANDARD_OPS_LENGTH = 65; /// @title LibAllStandardOps /// @notice Every opcode available from the core repository laid out as a single @@ -239,10 +239,10 @@ library LibAllStandardOps { AuthoringMetaV2( "less-than-or-equal-to", "1 if the first input is less than or equal to the second input, 0 otherwise." ), - // AuthoringMetaV2( - // "exponential-growth", - // "Calculates an exponential growth curve as `base(1 + rate)^t` where `base` is the initial value, `rate` is the rate of growth and `t` is units of time. Inputs in order are `base`, `rate`, and `t` respectively." - // ), + AuthoringMetaV2( + "exponential-growth", + "Calculates an exponential growth curve as `base(1 + rate)^t` where `base` is the initial value, `rate` is the rate of growth and `t` is units of time. Inputs in order are `base`, `rate`, and `t` respectively." + ), AuthoringMetaV2( "linear-growth", "Calculates a linear growth curve as `base + (rate * t)` where `base` is the initial value, `rate` is the rate of growth and `t` is units of time. Inputs in order are `base`, `rate`, and `t` respectively." @@ -444,8 +444,8 @@ library LibAllStandardOps { LibParseOperand.handleOperandDisallowed, // less-than-or-equal-to LibParseOperand.handleOperandDisallowed, - // // exponential-growth - // LibParseOperand.handleOperandDisallowed, + // exponential-growth + LibParseOperand.handleOperandDisallowed, // linear-growth LibParseOperand.handleOperandDisallowed, // uint256-max-value @@ -590,7 +590,7 @@ library LibAllStandardOps { LibOpIsZero.integrity, LibOpLessThan.integrity, LibOpLessThanOrEqualTo.integrity, - // LibOpExponentialGrowth.integrity, + LibOpExponentialGrowth.integrity, LibOpLinearGrowth.integrity, LibOpMaxUint256.integrity, LibOpUint256Add.integrity, @@ -701,7 +701,7 @@ library LibAllStandardOps { LibOpIsZero.run, LibOpLessThan.run, LibOpLessThanOrEqualTo.run, - // LibOpExponentialGrowth.run, + LibOpExponentialGrowth.run, LibOpLinearGrowth.run, LibOpMaxUint256.run, LibOpUint256Add.run, diff --git a/src/lib/op/math/growth/LibOpExponentialGrowth.sol b/src/lib/op/math/growth/LibOpExponentialGrowth.sol index c20817073..0830a8d72 100644 --- a/src/lib/op/math/growth/LibOpExponentialGrowth.sol +++ b/src/lib/op/math/growth/LibOpExponentialGrowth.sol @@ -1,49 +1,54 @@ // SPDX-License-Identifier: CAL pragma solidity ^0.8.18; -// import {UD60x18, mul, pow} from "prb-math/UD60x18.sol"; -// import {OperandV2} from "rain.interpreter.interface/interface/unstable/IInterpreterV4.sol"; -// import {Pointer} from "rain.solmem/lib/LibPointer.sol"; -// import {InterpreterState} from "../../../state/LibInterpreterState.sol"; -// import {IntegrityCheckState} from "../../../integrity/LibIntegrityCheck.sol"; +import {OperandV2, StackItem} from "rain.interpreter.interface/interface/unstable/IInterpreterV4.sol"; +import {Pointer} from "rain.solmem/lib/LibPointer.sol"; +import {InterpreterState} from "../../../state/LibInterpreterState.sol"; +import {IntegrityCheckState} from "../../../integrity/LibIntegrityCheck.sol"; +import {Float, LibDecimalFloat} from "rain.math.float/lib/LibDecimalFloat.sol"; -// /// @title LibOpExponentialGrowth -// /// @notice Exponential growth is base(1 + rate)^t where base is the initial -// /// value, rate is the growth rate, and t is time. -// library LibOpExponentialGrowth { -// function integrity(IntegrityCheckState memory, Operand) internal pure returns (uint256, uint256) { -// // There must be three inputs and one output. -// return (3, 1); -// } +/// @title LibOpExponentialGrowth +/// @notice Exponential growth is base(1 + rate)^t where base is the initial +/// value, rate is the growth rate, and t is time. +library LibOpExponentialGrowth { + using LibDecimalFloat for Float; -// /// exponential-growth -// function run(InterpreterState memory, Operand, Pointer stackTop) internal pure returns (Pointer) { -// uint256 base; -// uint256 rate; -// uint256 t; -// assembly ("memory-safe") { -// base := mload(stackTop) -// rate := mload(add(stackTop, 0x20)) -// stackTop := add(stackTop, 0x40) -// t := mload(stackTop) -// } -// base = UD60x18.unwrap(mul(UD60x18.wrap(base), pow(UD60x18.wrap(1e18 + rate), UD60x18.wrap(t)))); + function integrity(IntegrityCheckState memory, OperandV2) internal pure returns (uint256, uint256) { + // There must be three inputs and one output. + return (3, 1); + } -// assembly ("memory-safe") { -// mstore(stackTop, base) -// } -// return stackTop; -// } + /// exponential-growth + function run(InterpreterState memory, OperandV2, Pointer stackTop) internal view returns (Pointer) { + Float base; + Float rate; + Float t; + assembly ("memory-safe") { + base := mload(stackTop) + rate := mload(add(stackTop, 0x20)) + stackTop := add(stackTop, 0x40) + t := mload(stackTop) + } + base = base.mul(rate.add(LibDecimalFloat.FLOAT_ONE).pow(t, LibDecimalFloat.LOG_TABLES_ADDRESS)); -// /// Gas intensive reference implementation for testing. -// function referenceFn(InterpreterState memory, Operand, uint256[] memory inputs) -// internal -// pure -// returns (uint256[] memory) -// { -// uint256[] memory outputs = new uint256[](1); -// outputs[0] = -// UD60x18.unwrap(mul(UD60x18.wrap(inputs[0]), pow(UD60x18.wrap(1e18 + inputs[1]), UD60x18.wrap(inputs[2])))); -// return outputs; -// } -// } + assembly ("memory-safe") { + mstore(stackTop, base) + } + return stackTop; + } + + /// Gas intensive reference implementation for testing. + function referenceFn(InterpreterState memory, OperandV2, StackItem[] memory inputs) + internal + view + returns (StackItem[] memory) + { + Float base = Float.wrap(StackItem.unwrap(inputs[0])); + Float rate = Float.wrap(StackItem.unwrap(inputs[1])); + Float t = Float.wrap(StackItem.unwrap(inputs[2])); + base = base.mul(rate.add(LibDecimalFloat.FLOAT_ONE).pow(t, LibDecimalFloat.LOG_TABLES_ADDRESS)); + StackItem[] memory outputs = new StackItem[](1); + outputs[0] = StackItem.wrap(Float.unwrap(base)); + return outputs; + } +} diff --git a/test/src/lib/op/math/LibOpPow.t.sol b/test/src/lib/op/math/LibOpPow.t.sol index c4cb5fe1e..064d8db2b 100644 --- a/test/src/lib/op/math/LibOpPow.t.sol +++ b/test/src/lib/op/math/LibOpPow.t.sol @@ -10,7 +10,7 @@ import {Log10Negative} from "rain.math.float/error/ErrDecimalFloat.sol"; contract LibOpPowTest is OpTest { function beforeOpTestConstructor() internal virtual override { - vm.createSelectFork("https://1rpc.io/arb"); + vm.createSelectFork(vm.envString("ETH_RPC_URL")); } /// Directly test the integrity logic of LibOpPow. diff --git a/test/src/lib/op/math/growth/LibOpExponentialGrowth.t.sol b/test/src/lib/op/math/growth/LibOpExponentialGrowth.t.sol index 02922dcbf..edce0a062 100644 --- a/test/src/lib/op/math/growth/LibOpExponentialGrowth.t.sol +++ b/test/src/lib/op/math/growth/LibOpExponentialGrowth.t.sol @@ -1,91 +1,121 @@ // SPDX-License-Identifier: CAL pragma solidity =0.8.25; -// import {OpTest, IntegrityCheckState, Operand, InterpreterState, UnexpectedOperand} from "test/abstract/OpTest.sol"; -// import {LibOpExponentialGrowth} from "src/lib/op/math/growth/LibOpExponentialGrowth.sol"; -// import {LibOperand} from "test/lib/operand/LibOperand.sol"; - -// contract LibOpExponentialGrowthTest is OpTest { -// /// Directly test the integrity logic of LibOpExponentialGrowth. -// /// Inputs are always 3, outputs are always 1. -// function testOpExponentialGrowthIntegrity(IntegrityCheckState memory state, Operand operand) external pure { -// (uint256 calcInputs, uint256 calcOutputs) = LibOpExponentialGrowth.integrity(state, operand); -// assertEq(calcInputs, 3); -// assertEq(calcOutputs, 1); -// } - -// /// Directly test the runtime logic of LibOpExponentialGrowth. -// function testOpExponentialGrowthRun(uint256 a, uint256 r, uint256 t, uint16 operandData) public view { -// // @TODO This is a hack to cover some range that we can definitely -// // handle but it doesn't cover the full range of the function. -// a = bound(a, 0, type(uint64).max); -// r = bound(r, 0, type(uint64).max); -// // PRB math can't reliably handle t beyond 44e18 with a and r both up to -// // ~18e18 (uint64 max). -// t = bound(t, 0, 44e18); -// InterpreterState memory state = opTestDefaultInterpreterState(); - -// Operand operand = LibOperand.build(3, 1, operandData); -// uint256[] memory inputs = new uint256[](3); -// inputs[0] = a; -// inputs[1] = r; -// inputs[2] = t; - -// opReferenceCheck( -// state, -// operand, -// LibOpExponentialGrowth.referenceFn, -// LibOpExponentialGrowth.integrity, -// LibOpExponentialGrowth.run, -// inputs -// ); -// } - -// /// Test the eval of `exponential-growth`. -// function testOpExponentialGrowthEval() external view { -// checkHappy("_: exponential-growth(0 0 0);", 0, "0 0 0"); -// checkHappy("_: exponential-growth(0 0.1 0);", 0, "0 0.1 0"); -// checkHappy("_: exponential-growth(0 0.1 1);", 0, "0 0.1 1"); -// checkHappy("_: exponential-growth(1 0.1 0);", 1e18, "1 0.1 0"); -// checkHappy("_: exponential-growth(1 0.1 1);", 1.1e18, "1 0.1 1"); -// // Not exactly 1.21 -// checkHappy("_: exponential-growth(1 0.1 2);", 1209999999999999974, "1 0.1 2"); -// // Not exactly 1.26905870629 -// checkHappy("_: exponential-growth(1 0.1 2.5);", 1269058706285883337, "1 0.1 2.5"); -// checkHappy("_: exponential-growth(1 0 2);", 1e18, "1 0 2"); -// checkHappy("_: exponential-growth(1 0.1 0.5);", 1048808848170151541, "1 0.1 0.5"); -// checkHappy("_: exponential-growth(2 0.1 0);", 2e18, "2 0.1 0"); -// checkHappy("_: exponential-growth(2 0.1 1);", 2.2e18, "2 0.1 1"); -// // Not exactly 2.42 -// checkHappy("_: exponential-growth(2 0.1 2);", 2419999999999999948, "2 0.1 2"); -// } - -// function testOpExponentialGrowthEvalZeroInputs() external { -// checkBadInputs(": exponential-growth();", 0, 3, 0); -// } - -// function testOpExponentialGrowthEvalOneInput() external { -// checkBadInputs("_: exponential-growth(1);", 1, 3, 1); -// } - -// function testOpExponentialGrowthEvalTwoInputs() external { -// checkBadInputs("_: exponential-growth(1 0);", 2, 3, 2); -// } - -// function testOpExponentialGrowthEvalFourInputs() external { -// checkBadInputs("_: exponential-growth(1 0 0 1);", 4, 3, 4); -// } - -// function testOpExponentialGrowthEvalZeroOutputs() external { -// checkBadOutputs(": exponential-growth(1 0 0);", 3, 1, 0); -// } - -// function testOpExponentialGrowthEvalTwoOutputs() external { -// checkBadOutputs("_ _: exponential-growth(1 0 0);", 3, 1, 2); -// } - -// /// Test that operand is disallowed. -// function testOpExponentialGrowthEvalOperandDisallowed() external { -// checkUnhappyParse("_: exponential-growth<0>(1 0 0);", abi.encodeWithSelector(UnexpectedOperand.selector)); -// } -// } +import {OpTest, IntegrityCheckState, OperandV2, InterpreterState, UnexpectedOperand} from "test/abstract/OpTest.sol"; +import {LibOpExponentialGrowth} from "src/lib/op/math/growth/LibOpExponentialGrowth.sol"; +import {LibOperand} from "test/lib/operand/LibOperand.sol"; +import {LibDecimalFloat, Float} from "rain.math.float/lib/LibDecimalFloat.sol"; +import {StackItem} from "rain.interpreter.interface/interface/unstable/IInterpreterV4.sol"; + +contract LibOpExponentialGrowthTest is OpTest { + function beforeOpTestConstructor() internal virtual override { + vm.createSelectFork(vm.envString("ETH_RPC_URL")); + } + + /// Directly test the integrity logic of LibOpExponentialGrowth. + /// Inputs are always 3, outputs are always 1. + function testOpExponentialGrowthIntegrity(IntegrityCheckState memory state, OperandV2 operand) external pure { + (uint256 calcInputs, uint256 calcOutputs) = LibOpExponentialGrowth.integrity(state, operand); + assertEq(calcInputs, 3); + assertEq(calcOutputs, 1); + } + + /// Directly test the runtime logic of LibOpExponentialGrowth. + function testOpExponentialGrowthRun( + int224 signedCoefficientA, + int32 exponentA, + int224 signedCoefficientR, + int32 exponentR, + int224 signedCoefficientT, + int32 exponentT, + uint16 operandData + ) public view { + signedCoefficientA = int224(bound(signedCoefficientA, 0, type(int8).max)); + exponentA = int32(bound(exponentA, -10, 10)); + Float a = LibDecimalFloat.packLossless(signedCoefficientA, exponentA); + + signedCoefficientR = int224(bound(signedCoefficientR, 0, type(int8).max)); + exponentR = int32(bound(exponentR, -10, 10)); + Float r = LibDecimalFloat.packLossless(signedCoefficientR, exponentR); + + signedCoefficientT = int224(bound(signedCoefficientT, 0, type(int8).max)); + exponentT = int32(bound(exponentT, -10, 5)); + Float t = LibDecimalFloat.packLossless(signedCoefficientT, exponentT); + + InterpreterState memory state = opTestDefaultInterpreterState(); + + OperandV2 operand = LibOperand.build(3, 1, operandData); + StackItem[] memory inputs = new StackItem[](3); + inputs[0] = StackItem.wrap(Float.unwrap(a)); + inputs[1] = StackItem.wrap(Float.unwrap(r)); + inputs[2] = StackItem.wrap(Float.unwrap(t)); + + opReferenceCheck( + state, + operand, + LibOpExponentialGrowth.referenceFn, + LibOpExponentialGrowth.integrity, + LibOpExponentialGrowth.run, + inputs + ); + } + + /// Test the eval of `exponential-growth`. + function testOpExponentialGrowthEval() external view { + checkHappy("_: exponential-growth(0 0 0);", 0, "0 0 0"); + checkHappy("_: exponential-growth(0 0.1 0);", 0, "0 0.1 0"); + checkHappy("_: exponential-growth(0 0.1 1);", 0, "0 0.1 1"); + checkHappy("_: exponential-growth(1 0.1 0);", Float.unwrap(LibDecimalFloat.FLOAT_ONE), "1 0.1 0"); + checkHappy("_: exponential-growth(1 0.1 1);", Float.unwrap(LibDecimalFloat.packLossless(11e2, -3)), "1 0.1 1"); + // Exactly 1.21 + checkHappy("_: exponential-growth(1 0.1 2);", Float.unwrap(LibDecimalFloat.packLossless(121e1, -3)), "1 0.1 2"); + // Not exactly 1.26905870629 + checkHappy( + "_: exponential-growth(1 0.1 2.5);", Float.unwrap(LibDecimalFloat.packLossless(1269, -3)), "1 0.1 2.5" + ); + checkHappy("_: exponential-growth(1 0 2);", Float.unwrap(LibDecimalFloat.packLossless(1e3, -3)), "1 0 2"); + // Not exactly 1.0488088482 + checkHappy( + "_: exponential-growth(1 0.1 0.5);", Float.unwrap(LibDecimalFloat.packLossless(1049, -3)), "1 0.1 0.5" + ); + checkHappy("_: exponential-growth(2 0.1 0);", Float.unwrap(LibDecimalFloat.packLossless(2, 0)), "2 0.1 0"); + checkHappy("_: exponential-growth(2 0.1 1);", Float.unwrap(LibDecimalFloat.packLossless(22e2, -3)), "2 0.1 1"); + checkHappy("_: exponential-growth(2 0.1 2);", Float.unwrap(LibDecimalFloat.packLossless(242e1, -3)), "2 0.1 2"); + + /// 1.8181.. + checkHappy( + "_: exponential-growth(2 0.1 -1);", + Float.unwrap(LibDecimalFloat.packLossless(1.8181818181818181818181818181818181818e38, -38)), + "2 0.1 -1" + ); + } + + function testOpExponentialGrowthEvalZeroInputs() external { + checkBadInputs(": exponential-growth();", 0, 3, 0); + } + + function testOpExponentialGrowthEvalOneInput() external { + checkBadInputs("_: exponential-growth(1);", 1, 3, 1); + } + + function testOpExponentialGrowthEvalTwoInputs() external { + checkBadInputs("_: exponential-growth(1 0);", 2, 3, 2); + } + + function testOpExponentialGrowthEvalFourInputs() external { + checkBadInputs("_: exponential-growth(1 0 0 1);", 4, 3, 4); + } + + function testOpExponentialGrowthEvalZeroOutputs() external { + checkBadOutputs(": exponential-growth(1 0 0);", 3, 1, 0); + } + + function testOpExponentialGrowthEvalTwoOutputs() external { + checkBadOutputs("_ _: exponential-growth(1 0 0);", 3, 1, 2); + } + + /// Test that operand is disallowed. + function testOpExponentialGrowthEvalOperandDisallowed() external { + checkUnhappyParse("_: exponential-growth<0>(1 0 0);", abi.encodeWithSelector(UnexpectedOperand.selector)); + } +}