Skip to content

Conversation

@miguelmtzinf
Copy link
Member

No description provided.

sakulstra and others added 30 commits June 2, 2025 08:59
Aave has historically used half-up / bankers rounding, but the ecosystem has aligned behind 4626, so it makes sense for aave to follow suit.
This(or a variant of this) was recommended by stermi for v3.4.
While we did not include it back then, we decided to include it now.
#mixbytes-5
fix: round in favor of the protocol
this was recommended by stermi on 3.4 and we preferred to move it to 3.5

v3.3 GHO VToken (`GhoVariableDebtToken`) storage layout:
```
╭-------------------------+--------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------╮
| Name                    | Type                                                         | Slot | Offset | Bytes | Contract                                                                             |
+=======================================================================================================================================================================================================+
| lastInitializedRevision | uint256                                                      | 0    | 0      | 32    | src/contracts/facilitators/aave/tokens/GhoVariableDebtToken.sol:GhoVariableDebtToken |
|-------------------------+--------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------|
| initializing            | bool                                                         | 1    | 0      | 1     | src/contracts/facilitators/aave/tokens/GhoVariableDebtToken.sol:GhoVariableDebtToken |
|-------------------------+--------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------|
| ______gap               | uint256[50]                                                  | 2    | 0      | 1600  | src/contracts/facilitators/aave/tokens/GhoVariableDebtToken.sol:GhoVariableDebtToken |
|-------------------------+--------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------|
| _nonces                 | mapping(address => uint256)                                  | 52   | 0      | 32    | src/contracts/facilitators/aave/tokens/GhoVariableDebtToken.sol:GhoVariableDebtToken |
|-------------------------+--------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------|
| _domainSeparator        | bytes32                                                      | 53   | 0      | 32    | src/contracts/facilitators/aave/tokens/GhoVariableDebtToken.sol:GhoVariableDebtToken |
|-------------------------+--------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------|
| _borrowAllowances       | mapping(address => mapping(address => uint256))              | 54   | 0      | 32    | src/contracts/facilitators/aave/tokens/GhoVariableDebtToken.sol:GhoVariableDebtToken |
|-------------------------+--------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------|
| _underlyingAsset        | address                                                      | 55   | 0      | 20    | src/contracts/facilitators/aave/tokens/GhoVariableDebtToken.sol:GhoVariableDebtToken |
|-------------------------+--------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------|
| _userState              | mapping(address => struct IncentivizedERC20.UserState)       | 56   | 0      | 32    | src/contracts/facilitators/aave/tokens/GhoVariableDebtToken.sol:GhoVariableDebtToken |
|-------------------------+--------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------|
| _allowances             | mapping(address => mapping(address => uint256))              | 57   | 0      | 32    | src/contracts/facilitators/aave/tokens/GhoVariableDebtToken.sol:GhoVariableDebtToken |
|-------------------------+--------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------|
| _totalSupply            | uint256                                                      | 58   | 0      | 32    | src/contracts/facilitators/aave/tokens/GhoVariableDebtToken.sol:GhoVariableDebtToken |
|-------------------------+--------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------|
| _name                   | string                                                       | 59   | 0      | 32    | src/contracts/facilitators/aave/tokens/GhoVariableDebtToken.sol:GhoVariableDebtToken |
|-------------------------+--------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------|
| _symbol                 | string                                                       | 60   | 0      | 32    | src/contracts/facilitators/aave/tokens/GhoVariableDebtToken.sol:GhoVariableDebtToken |
|-------------------------+--------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------|
| _decimals               | uint8                                                        | 61   | 0      | 1     | src/contracts/facilitators/aave/tokens/GhoVariableDebtToken.sol:GhoVariableDebtToken |
|-------------------------+--------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------|
| _incentivesController   | contract IAaveIncentivesController                           | 61   | 1      | 20    | src/contracts/facilitators/aave/tokens/GhoVariableDebtToken.sol:GhoVariableDebtToken |
|-------------------------+--------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------|
| _ghoAToken              | address                                                      | 62   | 0      | 20    | src/contracts/facilitators/aave/tokens/GhoVariableDebtToken.sol:GhoVariableDebtToken |
|-------------------------+--------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------|
| _discountToken          | contract IERC20                                              | 63   | 0      | 20    | src/contracts/facilitators/aave/tokens/GhoVariableDebtToken.sol:GhoVariableDebtToken |
|-------------------------+--------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------|
| _discountRateStrategy   | contract IGhoDiscountRateStrategy                            | 64   | 0      | 20    | src/contracts/facilitators/aave/tokens/GhoVariableDebtToken.sol:GhoVariableDebtToken |
|-------------------------+--------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------|
| _ghoUserState           | mapping(address => struct GhoVariableDebtToken.GhoUserState) | 65   | 0      | 32    | src/contracts/facilitators/aave/tokens/GhoVariableDebtToken.sol:GhoVariableDebtToken |
╰-------------------------+--------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------╯
```

v3.4 payload upgrade GHO vToken (`VariableDebtTokenMainnetInstanceGHO`) storage layout:
```
╭-----------------------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------╮
| Name                              | Type                                                   | Slot | Offset | Bytes | Contract                                                                        |
+======================================================================================================================================================================================================+
| lastInitializedRevision           | uint256                                                | 0    | 0      | 32    | src/VariableDebtTokenMainnetInstanceGHO.sol:VariableDebtTokenMainnetInstanceGHO |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------|
| initializing                      | bool                                                   | 1    | 0      | 1     | src/VariableDebtTokenMainnetInstanceGHO.sol:VariableDebtTokenMainnetInstanceGHO |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------|
| ______gap                         | uint256[50]                                            | 2    | 0      | 1600  | src/VariableDebtTokenMainnetInstanceGHO.sol:VariableDebtTokenMainnetInstanceGHO |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------|
| _nonces                           | mapping(address => uint256)                            | 52   | 0      | 32    | src/VariableDebtTokenMainnetInstanceGHO.sol:VariableDebtTokenMainnetInstanceGHO |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------|
| _domainSeparator                  | bytes32                                                | 53   | 0      | 32    | src/VariableDebtTokenMainnetInstanceGHO.sol:VariableDebtTokenMainnetInstanceGHO |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------|
| _borrowAllowances                 | mapping(address => mapping(address => uint256))        | 54   | 0      | 32    | src/VariableDebtTokenMainnetInstanceGHO.sol:VariableDebtTokenMainnetInstanceGHO |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------|
| _underlyingAsset                  | address                                                | 55   | 0      | 20    | src/VariableDebtTokenMainnetInstanceGHO.sol:VariableDebtTokenMainnetInstanceGHO |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------|
| _userState                        | mapping(address => struct IncentivizedERC20.UserState) | 56   | 0      | 32    | src/VariableDebtTokenMainnetInstanceGHO.sol:VariableDebtTokenMainnetInstanceGHO |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------|
| _allowances                       | mapping(address => mapping(address => uint256))        | 57   | 0      | 32    | src/VariableDebtTokenMainnetInstanceGHO.sol:VariableDebtTokenMainnetInstanceGHO |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------|
| _totalSupply                      | uint256                                                | 58   | 0      | 32    | src/VariableDebtTokenMainnetInstanceGHO.sol:VariableDebtTokenMainnetInstanceGHO |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------|
| _name                             | string                                                 | 59   | 0      | 32    | src/VariableDebtTokenMainnetInstanceGHO.sol:VariableDebtTokenMainnetInstanceGHO |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------|
| _symbol                           | string                                                 | 60   | 0      | 32    | src/VariableDebtTokenMainnetInstanceGHO.sol:VariableDebtTokenMainnetInstanceGHO |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------|
| _decimals                         | uint8                                                  | 61   | 0      | 1     | src/VariableDebtTokenMainnetInstanceGHO.sol:VariableDebtTokenMainnetInstanceGHO |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------|
| __deprecated_incentivesController | contract IAaveIncentivesController                     | 61   | 1      | 20    | src/VariableDebtTokenMainnetInstanceGHO.sol:VariableDebtTokenMainnetInstanceGHO |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------|
| _deprecated_ghoAToken             | address                                                | 62   | 0      | 20    | src/VariableDebtTokenMainnetInstanceGHO.sol:VariableDebtTokenMainnetInstanceGHO |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------|
| _deprecated_discountToken         | address                                                | 63   | 0      | 20    | src/VariableDebtTokenMainnetInstanceGHO.sol:VariableDebtTokenMainnetInstanceGHO |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------|
| _deprecated_discountRateStrategy  | address                                                | 64   | 0      | 20    | src/VariableDebtTokenMainnetInstanceGHO.sol:VariableDebtTokenMainnetInstanceGHO |
╰-----------------------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------╯
```

v3.5 GHO vToken (`VariableDebtToken`) storage layout:
```
╭-----------------------------------+--------------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------╮
| Name                              | Type                                                   | Slot | Offset | Bytes | Contract                                                                    |
+==================================================================================================================================================================================================+
| lastInitializedRevision           | uint256                                                | 0    | 0      | 32    | src/contracts/protocol/tokenization/VariableDebtToken.sol:VariableDebtToken |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------|
| initializing                      | bool                                                   | 1    | 0      | 1     | src/contracts/protocol/tokenization/VariableDebtToken.sol:VariableDebtToken |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------|
| ______gap                         | uint256[50]                                            | 2    | 0      | 1600  | src/contracts/protocol/tokenization/VariableDebtToken.sol:VariableDebtToken |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------|
| _nonces                           | mapping(address => uint256)                            | 52   | 0      | 32    | src/contracts/protocol/tokenization/VariableDebtToken.sol:VariableDebtToken |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------|
| _domainSeparator                  | bytes32                                                | 53   | 0      | 32    | src/contracts/protocol/tokenization/VariableDebtToken.sol:VariableDebtToken |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------|
| _borrowAllowances                 | mapping(address => mapping(address => uint256))        | 54   | 0      | 32    | src/contracts/protocol/tokenization/VariableDebtToken.sol:VariableDebtToken |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------|
| _underlyingAsset                  | address                                                | 55   | 0      | 20    | src/contracts/protocol/tokenization/VariableDebtToken.sol:VariableDebtToken |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------|
| _userState                        | mapping(address => struct IncentivizedERC20.UserState) | 56   | 0      | 32    | src/contracts/protocol/tokenization/VariableDebtToken.sol:VariableDebtToken |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------|
| _allowances                       | mapping(address => mapping(address => uint256))        | 57   | 0      | 32    | src/contracts/protocol/tokenization/VariableDebtToken.sol:VariableDebtToken |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------|
| _totalSupply                      | uint256                                                | 58   | 0      | 32    | src/contracts/protocol/tokenization/VariableDebtToken.sol:VariableDebtToken |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------|
| _name                             | string                                                 | 59   | 0      | 32    | src/contracts/protocol/tokenization/VariableDebtToken.sol:VariableDebtToken |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------|
| _symbol                           | string                                                 | 60   | 0      | 32    | src/contracts/protocol/tokenization/VariableDebtToken.sol:VariableDebtToken |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------|
| _decimals                         | uint8                                                  | 61   | 0      | 1     | src/contracts/protocol/tokenization/VariableDebtToken.sol:VariableDebtToken |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------|
| __deprecated_incentivesController | contract IAaveIncentivesController                     | 61   | 1      | 20    | src/contracts/protocol/tokenization/VariableDebtToken.sol:VariableDebtToken |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------|
| __unusedGap                       | uint256[3]                                             | 62   | 0      | 96    | src/contracts/protocol/tokenization/VariableDebtToken.sol:VariableDebtToken |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------|
| __deprecated_ghoUserState         | bytes32                                                | 65   | 0      | 32    | src/contracts/protocol/tokenization/VariableDebtToken.sol:VariableDebtToken |
╰-----------------------------------+--------------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------╯
```
This instance of the v token is intended to be used with vGHO as long as stkAAVE is not upgraded to remove the discount hook.
…tions in base currency

Rounding up the debt usd amount, so that liquidations can also happen on very small amounts.
Fixes an edge case in liquidation:
When the liquidated collateral cannot cover the liquidation protocol fee, there is a chance that due to rounding the txn reverts. This pr fixes the edge case by rounding up, so on L377, the fee will be lowered accordingly, resulting a non reverting transferOnLiquidation.

stermi 65
certora 12
The protocol switches between scaled and upscaled balance back and forth - sometimes unnecessarily.
Therefore, this pr changes the pool operations to consistently work with the scaled balance where possible.
 
---------

Co-authored-by: TepNik <[email protected]>
Co-authored-by: Nikita <[email protected]>
Co-authored-by: Pavel <[email protected]>
Co-authored-by: Andrey <[email protected]>
Historically transferFrom etc have consumed ther users input as allowance.
That has never really been accurate, as the users input might not actually be transferrable due to rounding, to account for that we improved the logic to consumer "up to the raw scaled up transfer amount".
liquidation protocol fee is rounded up, not down (in practice is still a bit arbitrary as it rounds multiple times, but the explicit part is now up)

add totalSupply to the docs
Certora managed to prove an occasion where the supply of 1 wei could reduce a users hf to to precision loss on avgLt calculation. While this is an extreme adge case on very small amounts, it makes sense to just not lose the precision if possible.

Moving the hf check on borrow at the end, reduces code duplication and makes the operation more equivalent to e.g. withdraw.
TepNik and others added 26 commits July 9, 2025 08:36
audit: add certora audit

audit: add abdk

Add MixBytes audit for Aave v3.5.0

fix: add all audits

fix: don't prettier audits

for PR V3.5

fix: remove duplicate certora audit
fix: update abdk audit

fix: abdk report
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
The cli was used mainly on aave-helpers, thus it's more natural to move it there and drop it from the origin.
Readme contained wrong links.
Aslo there was a bug in foundry nightly used to generate the last report which decreased coverage: foundry-rs/foundry#11432 - merging this pr will update based on latest nightly.
fix: Update solidity-utils with XLayer network
@github-actions
Copy link

Forge Build Sizes

🔕 Unchanged
Contract Runtime Size (B) Initcode Size (B) Runtime Margin (B) Initcode Margin (B)
ACLManager 3,493 3,971 21,083 45,181
ATokenHandler 9,933 10,653 14,643 38,499
ATokenInstance 10,432 11,532 14,144 37,620
ATokenMock 803 961 23,773 48,191
ATokenWithDelegationInstance 14,076 15,182 10,500 33,970
ATokenWithDelegationInstanceNext (tests/gas/ATokenWithDelegation.Transfer.gas.t.sol) 14,098 15,260 10,478 33,892
ATokenWithDelegationInstanceNext (tests/protocol/tokenization/ATokenDelegation.t.sol) 14,098 15,260 10,478 33,892
ATokenWithDelegationInstanceNext (tests/protocol/tokenization/ATokenWithDelegationRounding.t.sol) 14,098 15,260 10,478 33,892
AaveOracle 2,466 3,462 22,110 45,690
AaveProtocolDataProvider 7,435 7,893 17,141 41,259
AaveSetters 44 94 24,532 49,058
AaveV3BatchOrchestration 44 94 24,532 49,058
AaveV3ConfigEngine 7,897 9,426 16,679 39,726
AaveV3DefaultRateStrategyProcedure 21 47 24,555 49,105
AaveV3GettersBatchOne 189 22,551 24,387 26,601
AaveV3GettersBatchTwo 189 18,744 24,387 30,408
AaveV3GettersProcedureOne 21 47 24,555 49,105
AaveV3GettersProcedureTwo 21 47 24,555 49,105
AaveV3HelpersBatchOne 353 35,476 24,223 13,676
AaveV3HelpersBatchTwo 229 30,885 24,347 18,267
AaveV3HelpersProcedureOne 21 47 24,555 49,105
AaveV3HelpersProcedureTwo 21 47 24,555 49,105
AaveV3IncentiveProcedure 21 47 24,555 49,105
AaveV3L2PoolBatch 137 40,350 24,439 8,802
AaveV3L2PoolProcedure 21 47 24,555 49,105
AaveV3LibrariesBatch1 321 21,554 24,255 27,598
AaveV3LibrariesBatch2 321 42,288 24,255 6,864
AaveV3MiscBatch 137 6,160 24,439 42,992
AaveV3MiscProcedure 21 47 24,555 49,105
AaveV3MockAssetEModeUpdate 3,617 3,846 20,959 45,306
AaveV3MockBorrowUpdate 3,506 3,698 21,070 45,454
AaveV3MockBorrowUpdateNoChange 3,536 3,728 21,040 45,424
AaveV3MockCapUpdate 3,451 3,643 21,125 45,509
AaveV3MockCollateralUpdate 3,510 3,702 21,066 45,450
AaveV3MockCollateralUpdateCorrectBonus 3,510 3,702 21,066 45,450
AaveV3MockCollateralUpdateNoChange 3,537 3,729 21,039 45,423
AaveV3MockCollateralUpdateWrongBonus 3,514 3,706 21,062 45,446
AaveV3MockEModeCategoryCreation 3,900 4,179 20,676 44,973
AaveV3MockEModeCategoryUpdate 3,367 3,499 21,209 45,653
AaveV3MockEModeCategoryUpdateEdgeBonus 3,370 3,502 21,206 45,650
AaveV3MockEModeCategoryUpdateNoChange 3,438 3,570 21,138 45,582
AaveV3MockListing 3,792 4,021 20,784 45,131
AaveV3MockListingCustom 4,086 4,395 20,490 44,757
AaveV3MockListingCustomWithEModeCreation 4,565 4,888 20,011 44,264
AaveV3MockListingWithEModeCreation 4,270 4,513 20,306 44,639
AaveV3MockPriceFeedUpdate 3,461 3,690 21,115 45,462
AaveV3MockRatesUpdate 3,469 3,661 21,107 45,491
AaveV3OracleProcedure 21 47 24,555 49,105
AaveV3ParaswapBatch 189 28,296 24,387 20,856
AaveV3ParaswapProcedure 21 47 24,555 49,105
AaveV3PeripheryBatch 353 37,439 24,223 11,713
AaveV3PoolBatch 137 39,050 24,439 10,102
AaveV3PoolConfigProcedure 21 47 24,555 49,105
AaveV3PoolProcedure 21 47 24,555 49,105
AaveV3SetupBatch 11,437 28,469 13,139 20,683
AaveV3SetupProcedure 21 47 24,555 49,105
AaveV3TestListing 5,172 12,833 19,404 36,319
AaveV3TokensBatch 137 20,281 24,439 28,871
AaveV3TokensProcedure 21 47 24,555 49,105
AaveV3TreasuryProcedure 21 47 24,555 49,105
Actor 945 1,757 23,631 47,395
Address (lib/solidity-utils/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Address.sol) 44 94 24,532 49,058
Address (src/contracts/dependencies/openzeppelin/contracts/Address.sol) 44 94 24,532 49,058
AdminUpgradeabilityProxy 1,546 2,458 23,030 46,694
AugustusRegistryMock 162 188 24,414 48,964
BaseAdminUpgradeabilityProxy 1,538 1,566 23,038 47,586
BaseHandler 147 866 24,429 48,286
BaseHooks 147 866 24,429 48,286
BaseImmutableAdminUpgradeabilityProxy 1,304 1,471 23,272 47,681
BaseUpgradeabilityProxy 108 134 24,468 49,018
BorrowEngine 2,499 2,551 22,077 46,601
BorrowLogic 11,175 11,227 13,401 37,925
BorrowingHandler 14,809 15,529 9,767 33,623
CalldataLogic 44 94 24,532 49,058
CapsEngine 1,149 1,201 23,427 47,951
CollateralEngine 2,704 2,756 21,872 46,396
Collector 6,496 6,710 18,080 42,442
ConfiguratorInputTypes 44 94 24,532 49,058
ConfiguratorLogic 5,513 5,565 19,063 43,587
Create2Factory 52 78 24,524 49,074
Create2Utils 121 171 24,455 48,981
DataTypes 44 94 24,532 49,058
DefaultMarketInput 21 47 24,555 49,105
DefaultReserveInterestRateStrategyV2 3,575 3,759 21,001 45,393
DeployPermit2 44 94 24,532 49,058
DeployUtils 916 944 23,660 48,208
DonationAttackHandler 670 1,390 23,906 47,762
ECDSA 44 94 24,532 49,058
EIP712SigUtils 1,576 1,628 23,000 47,524
EModeConfiguration 44 94 24,532 49,058
EModeEngine 6,397 6,449 18,179 42,703
EModeLogic 3,163 3,215 21,413 45,937
ERC1967Proxy 122 973 24,454 48,179
ERC1967Utils 44 94 24,532 49,058
ERC20 2,086 2,788 22,490 46,364
EmissionManager 3,444 3,905 21,132 45,247
EmptyImplementation 21 47 24,555 49,105
EngineFlags 44 94 24,532 49,058
EnumerableSet 44 94 24,532 49,058
Errors (lib/solidity-utils/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Errors.sol) 44 94 24,532 49,058
Errors (src/contracts/protocol/libraries/helpers/Errors.sol) 44 94 24,532 49,058
FactoryDeployer 214 240 24,362 48,912
Faucet 2,038 2,570 22,538 46,582
FlashLoanHandler 8,913 9,633 15,663 39,519
FlashLoanLogic 8,394 8,446 16,182 40,706
FlashloanAttacker 1,610 2,034 22,966 47,118
GPv2SafeERC20 44 94 24,532 49,058
GenericLogic 44 94 24,532 49,058
InitializableAdminUpgradeabilityProxy 2,392 2,420 22,184 46,732
InitializableImmutableAdminUpgradeabilityProxy 1,863 2,030 22,713 47,122
InitializableUpgradeabilityProxy 879 907 23,697 48,245
IsolationModeLogic 44 94 24,532 49,058
L2Encoder 3,585 3,780 20,991 45,372
L2PoolInstance 22,612 23,080 1,964 26,072
LendingHandler 12,322 13,042 12,254 36,110
LiquidationDataProvider 7,603 7,877 16,973 41,275
LiquidationHandler 11,638 12,358 12,938 36,794
LiquidationHelper 44 94 24,532 49,058
LiquidationLogic 13,474 13,526 11,102 35,626
ListingEngine 6,731 6,783 17,845 42,369
MarketReportUtils 44 94 24,532 49,058
Math 44 94 24,532 49,058
MathUtils 44 94 24,532 49,058
MessageHashUtils 44 94 24,532 49,058
MetadataReporter 12,326 12,354 12,250 36,798
MintableDelegationERC20 2,534 3,267 22,042 45,885
MintableERC20 3,729 4,626 20,847 44,526
Mock 182 208 24,394 48,944
MockAToken (src/contracts/mocks/tokens/MockAToken.sol) 10,650 11,806 13,926 37,346
MockAToken (src/contracts/mocks/upgradeability/MockAToken.sol) 10,432 11,538 14,144 37,614
MockAggregator 134 273 24,442 48,879
MockAggregatorSetPrice 243 386 24,333 48,766
MockBadTransferStrategy 914 1,103 23,662 48,049
MockERC20AaveLMUpgradeable 7,937 8,152 16,639 41,000
MockERC4626StataTokenUpgradeable 9,517 9,859 15,059 39,293
MockFlashLoanATokenReceiver 2,378 2,756 22,198 46,396
MockFlashLoanBorrowInsideFlashLoan 2,123 2,400 22,453 46,752
MockFlashLoanReceiver (src/contracts/mocks/flashloan/MockFlashLoanReceiver.sol) 2,237 2,522 22,339 46,630
MockFlashLoanReceiver (tests/invariants/helpers/FlashLoanReceiver.sol) 2,034 2,062 22,542 47,090
MockFlashLoanReceiverWithoutMint 1,234 1,518 23,342 47,634
MockFlashLoanSimpleReceiver 1,484 1,769 23,092 47,383
MockIncentivesController 132 158 24,444 48,994
MockInitializableFromConstructorImple 349 643 24,227 48,509
MockInitializableImple 1,556 1,591 23,020 47,561
MockInitializableImpleV2 1,558 1,593 23,018 47,559
MockInitializableV1 307 342 24,269 48,810
MockInitializableV2 309 344 24,267 48,808
MockL2Pool 22,639 23,172 1,937 25,980
MockParaSwapAugustus 1,939 1,967 22,637 47,185
MockParaSwapAugustusRegistry 179 302 24,397 48,850
MockPeripheryContractV1 309 337 24,267 48,815
MockPeripheryContractV2 290 318 24,286 48,834
MockPoolInherited 21,476 22,019 3,100 27,133
MockReentrantInitializableImple 413 448 24,163 48,704
MockReserveConfiguration 2,142 2,170 22,434 46,982
MockReserveInterestRateStrategy 3,070 3,257 21,506 45,895
MockScaledTestnetERC20 4,479 5,845 20,097 43,307
MockScaledToken 2,679 3,505 21,897 45,647
MockSimpleFlashLoanReceiverWithoutMint 754 1,037 23,822 48,115
MockVariableDebtToken (src/contracts/mocks/tokens/MockDebtTokens.sol) 7,209 8,273 17,367 40,879
MockVariableDebtToken (src/contracts/mocks/upgradeability/MockVariableDebtToken.sol) 7,187 8,201 17,389 40,951
Ownable (src/contracts/dependencies/openzeppelin/contracts/Ownable.sol) 629 721 23,947 48,431
Panic 44 94 24,532 49,058
ParaSwapLiquiditySwapAdapter 8,151 9,238 16,425 39,914
ParaSwapRepayAdapter 8,726 9,902 15,850 39,250
ParaSwapWithdrawSwapAdapter 6,673 7,690 17,903 41,462
PercentageMath 44 94 24,532 49,058
PoolAddressesProvider 6,965 8,251 17,611 40,901
PoolAddressesProviderRegistry 1,946 2,407 22,630 46,745
PoolConfiguratorInstance 16,585 16,620 7,991 32,532
PoolHandler 12,227 12,947 12,349 36,205
PoolInstance 21,316 21,780 3,260 27,372
PoolLogic 8,141 8,193 16,435 40,959
PoolPermissionedHandler 10,241 10,961 14,335 38,191
PoolStorage 21 47 24,555 49,105
Pretty 2,458 2,510 22,118 46,642
PriceAggregatorHandler 485 1,205 24,091 47,947
PriceFeedEngine 1,544 1,596 23,032 47,556
PriceOracle 469 497 24,107 48,655
PriceOracleSentinel 1,530 1,746 23,046 47,406
PropertiesLibString 44 94 24,532 49,058
ProtocolAssertions 147 866 24,429 48,286
ProxyAdmin 998 1,234 23,578 47,918
ProxyHelpers 44 94 24,532 49,058
PullRewardsTransferStrategy 1,172 1,398 23,404 47,754
RateEngine 2,227 2,279 22,349 46,873
ReserveConfiguration 128 178 24,448 48,974
ReserveLogic 44 94 24,532 49,058
RevenueSplitter 1,953 2,270 22,623 46,882
RewardsController 13,965 14,155 10,611 34,997
RewardsDataTypes 44 94 24,532 49,058
SafeCast 44 94 24,532 49,058
SafeERC20 (lib/solidity-utils/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol) 44 94 24,532 49,058
SafeERC20 (src/contracts/dependencies/openzeppelin/contracts/SafeERC20.sol) 44 94 24,532 49,058
SafeMath 44 94 24,532 49,058
SequencerOracle 865 1,326 23,711 47,826
Setup 147 866 24,429 48,286
SigUtils 492 544 24,084 48,608
SignedMath 44 94 24,532 49,058
SlotParser 330 382 24,246 48,770
StakeMock 355 383 24,221 48,769
StakedTokenTransferStrategy 1,972 2,682 22,604 46,470
StataTokenFactory 2,989 3,445 21,587 45,707
StataTokenV2 18,933 19,611 5,643 29,541
StorageSlot 44 94 24,532 49,058
Strings (lib/solidity-utils/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Strings.sol) 44 94 24,532 49,058
Strings (src/contracts/dependencies/openzeppelin/contracts/Strings.sol) 44 94 24,532 49,058
Strings (tests/invariants/utils/Pretty.sol) 44 94 24,532 49,058
SupplyLogic 10,477 10,529 14,099 38,623
TestERC20 3,948 5,125 20,628 44,027
TestnetERC20 4,359 5,717 20,217 43,435
TokenMath 44 94 24,532 49,058
TransparentProxyFactory 6,667 6,695 17,909 42,457
TransparentUpgradeableProxy 1,096 3,528 23,480 45,624
UiIncentiveDataProviderV3 9,118 9,146 15,458 40,006
UiPoolDataProviderV3 9,977 10,175 14,599 38,977
UpgradeabilityProxy 108 861 24,468 48,291
UserConfiguration 44 94 24,532 49,058
ValidationLogic 189 239 24,387 48,913
VariableDebtTokenHandler 1,185 1,905 23,391 47,247
VariableDebtTokenHarness 7,205 8,219 17,371 40,933
VariableDebtTokenInstance 7,187 8,159 17,389 40,993
VariableDebtTokenMainnetInstanceGHO 7,216 8,188 17,360 40,964
WETH9 1,886 2,352 22,690 46,800
WETH9Mock 2,641 3,812 21,935 45,340
WETH9Mocked 2,192 2,658 22,384 46,494
WadRayMath 44 94 24,532 49,058
WalletBalanceProvider 2,485 2,513 22,091 46,639
WalletMock 21 47 24,555 49,105
WrappedTokenGatewayV3 5,387 6,252 19,189 42,900

@github-actions
Copy link

🔮 Coverage report
File Line Coverage Function Coverage Branch Coverage
src/contracts/dependencies/gnosis/contracts/GPv2SafeERC20.sol ${\color{red}68.42\%}$
$26 / 38$
23, 24, 78, 79, 80 and 7 more
${\color{green}100\%}$
$4 / 4$
${\color{red}42.86\%}$
$3 / 7$
src/contracts/dependencies/openzeppelin/ReentrancyGuard.sol ${\color{red}75\%}$
$6 / 8$
67, 68
${\color{red}66.67\%}$
$2 / 3$
ReentrancyGuard._initGuard
${\color{red}50\%}$
$1 / 2$
src/contracts/dependencies/openzeppelin/contracts/AccessControl.sol ${\color{orange}91.18\%}$
$31 / 34$
76, 77, 115
${\color{orange}83.33\%}$
$10 / 12$
AccessControl.supportsInterface, AccessControl.getRoleAdmin
${\color{red}80\%}$
$4 / 5$
src/contracts/dependencies/openzeppelin/contracts/ERC165.sol ${\color{red}0\%}$
$0 / 2$
25, 26
${\color{red}0\%}$
$0 / 1$
ERC165.supportsInterface
${\color{green}100\%}$
$0 / 0$
src/contracts/dependencies/openzeppelin/contracts/ERC20.sol ${\color{red}79.66\%}$
$47 / 59$
182, 183, 184, 201, 205 and 7 more
${\color{orange}83.33\%}$
$15 / 18$
ERC20.increaseAllowance, ERC20.decreaseAllowance, ERC20._burn
${\color{red}41.67\%}$
$5 / 12$
src/contracts/dependencies/openzeppelin/contracts/Ownable.sol ${\color{red}80\%}$
$12 / 15$
55, 56, 57
${\color{red}80\%}$
$4 / 5$
Ownable.renounceOwnership
${\color{red}75\%}$
$3 / 4$
src/contracts/dependencies/openzeppelin/contracts/SafeERC20.sol ${\color{red}47.37\%}$
$9 / 19$
25, 26, 50, 51, 52 and 5 more
${\color{red}50\%}$
$3 / 6$
SafeERC20.safeTransferFrom, SafeERC20.safeIncreaseAllowance, SafeERC20.safeDecreaseAllowance
${\color{red}42.86\%}$
$3 / 7$
src/contracts/dependencies/openzeppelin/contracts/SafeMath.sol ${\color{green}100\%}$
$10 / 10$
${\color{green}100\%}$
$5 / 5$
${\color{red}62.5\%}$
$5 / 8$
src/contracts/dependencies/openzeppelin/upgradeability/AdminUpgradeabilityProxy.sol ${\color{red}0\%}$
$0 / 5$
21, 26, 27, 33, 34
${\color{red}0\%}$
$0 / 2$
AdminUpgradeabilityProxy.constructor, AdminUpgradeabilityProxy._willFallback
${\color{green}100\%}$
$0 / 0$
src/contracts/dependencies/openzeppelin/upgradeability/BaseAdminUpgradeabilityProxy.sol ${\color{red}0\%}$
$0 / 26$
35, 36, 39, 46, 47 and 21 more
${\color{red}0\%}$
$0 / 9$
BaseAdminUpgradeabilityProxy.ifAdmin, BaseAdminUpgradeabilityProxy.admin, BaseAdminUpgradeabilityProxy.implementation, BaseAdminUpgradeabilityProxy.changeAdmin, BaseAdminUpgradeabilityProxy.upgradeTo and 4 more
${\color{red}0\%}$
$0 / 8$
src/contracts/dependencies/openzeppelin/upgradeability/BaseUpgradeabilityProxy.sol ${\color{green}100\%}$
$10 / 10$
${\color{green}100\%}$
$3 / 3$
${\color{red}50\%}$
$1 / 2$
src/contracts/dependencies/openzeppelin/upgradeability/InitializableAdminUpgradeabilityProxy.sol ${\color{red}0\%}$
$0 / 7$
25, 26, 27, 28, 29 and 2 more
${\color{red}0\%}$
$0 / 2$
InitializableAdminUpgradeabilityProxy.initialize, InitializableAdminUpgradeabilityProxy._willFallback
${\color{red}0\%}$
$0 / 2$
src/contracts/dependencies/openzeppelin/upgradeability/InitializableUpgradeabilityProxy.sol ${\color{green}100\%}$
$7 / 7$
${\color{green}100\%}$
$1 / 1$
${\color{red}60\%}$
$3 / 5$
src/contracts/dependencies/openzeppelin/upgradeability/Proxy.sol ${\color{orange}87.5\%}$
$14 / 16$
25, 26
${\color{red}80\%}$
$4 / 5$
Proxy.receive
${\color{green}100\%}$
$0 / 0$
src/contracts/dependencies/openzeppelin/upgradeability/UpgradeabilityProxy.sol ${\color{red}0\%}$
$0 / 6$
20, 21, 22, 23, 24 and 1 more
${\color{red}0\%}$
$0 / 1$
UpgradeabilityProxy.constructor
${\color{red}0\%}$
$0 / 3$
src/contracts/dependencies/weth/WETH9.sol ${\color{orange}85.19\%}$
$23 / 27$
31, 32, 47, 48
${\color{red}71.43\%}$
$5 / 7$
WETH9.receive, WETH9.totalSupply
${\color{red}57.14\%}$
$4 / 7$
src/contracts/extensions/paraswap-adapters/BaseParaSwapAdapter.sol ${\color{green}100\%}$
$18 / 18$
${\color{green}100\%}$
$6 / 6$
${\color{red}60\%}$
$3 / 5$
src/contracts/extensions/paraswap-adapters/BaseParaSwapBuyAdapter.sol ${\color{orange}90\%}$
$27 / 30$
87, 94, 95
${\color{green}100\%}$
$2 / 2$
${\color{red}50\%}$
$8 / 16$
src/contracts/extensions/paraswap-adapters/BaseParaSwapSellAdapter.sol ${\color{orange}88.89\%}$
$24 / 27$
87, 94, 95
${\color{green}100\%}$
$2 / 2$
${\color{red}50\%}$
$8 / 16$
src/contracts/extensions/paraswap-adapters/ParaSwapLiquiditySwapAdapter.sol ${\color{green}100\%}$
$39 / 39$
${\color{green}100\%}$
$4 / 4$
${\color{red}63.64\%}$
$7 / 11$
src/contracts/extensions/paraswap-adapters/ParaSwapRepayAdapter.sol ${\color{lightgreen}95.83\%}$
$46 / 48$
143, 208
${\color{green}100\%}$
$5 / 5$
${\color{red}53.85\%}$
$7 / 13$
src/contracts/extensions/paraswap-adapters/ParaSwapWithdrawSwapAdapter.sol ${\color{green}100\%}$
$13 / 13$
${\color{green}100\%}$
$3 / 3$
${\color{red}66.67\%}$
$2 / 3$
src/contracts/extensions/stata-token/ERC20AaveLMUpgradeable.sol ${\color{orange}94.02\%}$
$110 / 117$
97, 114, 116, 126, 213 and 2 more
${\color{lightgreen}95.45\%}$
$21 / 22$
ERC20AaveLMUpgradeable.getCurrentRewardsIndex
${\color{red}68.75\%}$
$11 / 16$
src/contracts/extensions/stata-token/ERC4626StataTokenUpgradeable.sol ${\color{lightgreen}98.06\%}$
$101 / 103$
146, 221
${\color{green}100\%}$
$21 / 21$
${\color{orange}85.71\%}$
$12 / 14$
src/contracts/extensions/stata-token/StataTokenFactory.sol ${\color{orange}88.46\%}$
$23 / 26$
75, 82, 83
${\color{red}80\%}$
$4 / 5$
StataTokenFactory.getStataTokens
${\color{red}33.33\%}$
$1 / 3$
src/contracts/extensions/stata-token/StataTokenV2.sol ${\color{orange}90.63\%}$
$29 / 32$
59, 63, 68
${\color{orange}81.82\%}$
$9 / 11$
StataTokenV2.whoCanRescue, StataTokenV2.maxRescue
${\color{red}75\%}$
$3 / 4$
src/contracts/extensions/v3-config-engine/AaveV3ConfigEngine.sol ${\color{green}100\%}$
$47 / 47$
${\color{green}100\%}$
$13 / 13$
${\color{red}50\%}$
$4 / 8$
src/contracts/extensions/v3-config-engine/AaveV3Payload.sol ${\color{red}75.51\%}$
$37 / 49$
126, 127, 131, 134, 142 and 7 more
${\color{red}26.67\%}$
$4 / 15$
AaveV3Payload._bpsToRay, AaveV3Payload.newListings, AaveV3Payload.newListingsCustom, AaveV3Payload.capsUpdates, AaveV3Payload.collateralsUpdates and 6 more
${\color{green}100\%}$
$10 / 10$
src/contracts/extensions/v3-config-engine/libraries/BorrowEngine.sol ${\color{green}100\%}$
$18 / 18$
${\color{green}100\%}$
$2 / 2$
${\color{red}80\%}$
$8 / 10$
src/contracts/extensions/v3-config-engine/libraries/CapsEngine.sol ${\color{green}100\%}$
$9 / 9$
${\color{green}100\%}$
$2 / 2$
${\color{red}75\%}$
$3 / 4$
src/contracts/extensions/v3-config-engine/libraries/CollateralEngine.sol ${\color{red}70\%}$
$21 / 30$
39, 42, 48, 50, 51 and 4 more
${\color{green}100\%}$
$2 / 2$
${\color{red}57.14\%}$
$8 / 14$
src/contracts/extensions/v3-config-engine/libraries/EModeEngine.sol ${\color{orange}92.73\%}$
$51 / 55$
124, 128, 133, 172
${\color{green}100\%}$
$6 / 6$
${\color{red}61.9\%}$
$13 / 21$
src/contracts/extensions/v3-config-engine/libraries/ListingEngine.sol ${\color{green}100\%}$
$34 / 34$
${\color{green}100\%}$
$3 / 3$
${\color{red}50\%}$
$2 / 4$
src/contracts/extensions/v3-config-engine/libraries/PriceFeedEngine.sol ${\color{green}100\%}$
$12 / 12$
${\color{green}100\%}$
$2 / 2$
${\color{red}50\%}$
$3 / 6$
src/contracts/extensions/v3-config-engine/libraries/RateEngine.sol ${\color{red}64.52\%}$
$20 / 31$
45, 46, 47, 50, 51 and 6 more
${\color{green}100\%}$
$3 / 3$
${\color{red}14.29\%}$
$1 / 7$
src/contracts/helpers/AaveProtocolDataProvider.sol ${\color{orange}90.67\%}$
$68 / 75$
56, 57, 60, 61, 156 and 2 more
${\color{lightgreen}95.24\%}$
$20 / 21$
AaveProtocolDataProvider.getReserveData
${\color{red}25\%}$
$1 / 4$
src/contracts/helpers/L2Encoder.sol ${\color{green}100\%}$
$68 / 68$
${\color{green}100\%}$
$10 / 10$
${\color{green}100\%}$
$0 / 0$
src/contracts/helpers/LiquidationDataProvider.sol ${\color{orange}90.97\%}$
$131 / 144$
49, 66, 70, 74, 78 and 8 more
${\color{red}80\%}$
$12 / 15$
LiquidationDataProvider.getUserPositionFullInfo, LiquidationDataProvider.getCollateralFullInfo, LiquidationDataProvider.getDebtFullInfo
${\color{red}75\%}$
$15 / 20$
src/contracts/helpers/UiIncentiveDataProviderV3.sol ${\color{red}0\%}$
$0 / 90$
17, 26, 29, 32, 35 and 85 more
${\color{red}0\%}$
$0 / 5$
UiIncentiveDataProviderV3.getFullReservesIncentiveData, UiIncentiveDataProviderV3.getReservesIncentivesData, UiIncentiveDataProviderV3._getReservesIncentivesData, UiIncentiveDataProviderV3.getUserReservesIncentivesData, UiIncentiveDataProviderV3._getUserReservesIncentivesData
${\color{red}0\%}$
$0 / 4$
src/contracts/helpers/UiPoolDataProviderV3.sol ${\color{red}2.8\%}$
$3 / 107$
38, 41, 42, 45, 48 and 99 more
${\color{red}16.67\%}$
$1 / 6$
UiPoolDataProviderV3.getReservesList, UiPoolDataProviderV3.getReservesData, UiPoolDataProviderV3.getEModes, UiPoolDataProviderV3.getUserReservesData, UiPoolDataProviderV3.bytes32ToString
${\color{red}0\%}$
$0 / 11$
src/contracts/helpers/WalletBalanceProvider.sol ${\color{red}0\%}$
$0 / 29$
34, 35, 36, 38, 39 and 24 more
${\color{red}0\%}$
$0 / 3$
WalletBalanceProvider.balanceOf, WalletBalanceProvider.batchBalanceOf, WalletBalanceProvider.getUserWalletBalances
${\color{red}0\%}$
$0 / 4$
src/contracts/helpers/WrappedTokenGatewayV3.sol ${\color{green}100\%}$
$55 / 55$
${\color{green}100\%}$
$12 / 12$
${\color{orange}81.82\%}$
$9 / 11$
src/contracts/instances/ATokenInstance.sol ${\color{green}100\%}$
$10 / 10$
${\color{green}100\%}$
$2 / 2$
${\color{red}50\%}$
$1 / 2$
src/contracts/instances/ATokenWithDelegationInstance.sol ${\color{red}80\%}$
$8 / 10$
28, 29
${\color{red}50\%}$
$1 / 2$
ATokenWithDelegationInstance.getRevision
${\color{red}50\%}$
$1 / 2$
src/contracts/instances/PoolConfiguratorInstance.sol ${\color{green}100\%}$
$5 / 5$
${\color{green}100\%}$
$2 / 2$
${\color{green}100\%}$
$0 / 0$
src/contracts/instances/PoolInstance.sol ${\color{green}100\%}$
$4 / 4$
${\color{green}100\%}$
$2 / 2$
${\color{green}100\%}$
$2 / 2$
src/contracts/instances/VariableDebtTokenInstance.sol ${\color{green}100\%}$
$10 / 10$
${\color{green}100\%}$
$2 / 2$
${\color{green}100\%}$
$2 / 2$
src/contracts/instances/VariableDebtTokenMainnetInstanceGHO.sol ${\color{red}0\%}$
$0 / 11$
18, 19, 23, 31, 32 and 6 more
${\color{red}0\%}$
$0 / 3$
VariableDebtTokenMainnetInstanceGHO.getRevision, VariableDebtTokenMainnetInstanceGHO.initialize, VariableDebtTokenMainnetInstanceGHO.updateDiscountDistribution
${\color{red}0\%}$
$0 / 2$
src/contracts/misc/AaveOracle.sol ${\color{green}100\%}$
$43 / 43$
${\color{green}100\%}$
$11 / 11$
${\color{green}100\%}$
$10 / 10$
src/contracts/misc/DefaultReserveInterestRateStrategyV2.sol ${\color{green}100\%}$
$52 / 52$
${\color{green}100\%}$
$15 / 15$
${\color{green}100\%}$
$16 / 16$
src/contracts/misc/PriceOracleSentinel.sol ${\color{green}100\%}$
$27 / 27$
${\color{green}100\%}$
$10 / 10$
${\color{green}100\%}$
$4 / 4$
src/contracts/misc/aave-upgradeability/BaseImmutableAdminUpgradeabilityProxy.sol ${\color{green}100\%}$
$18 / 18$
${\color{green}100\%}$
$7 / 7$
${\color{red}33.33\%}$
$2 / 6$
src/contracts/misc/aave-upgradeability/InitializableImmutableAdminUpgradeabilityProxy.sol ${\color{green}100\%}$
$2 / 2$
${\color{green}100\%}$
$1 / 1$
${\color{green}100\%}$
$0 / 0$
src/contracts/misc/aave-upgradeability/VersionedInitializable.sol ${\color{green}100\%}$
$15 / 15$
${\color{green}100\%}$
$3 / 3$
${\color{green}100\%}$
$4 / 4$
src/contracts/misc/flashloan/base/FlashLoanReceiverBase.sol ${\color{green}100\%}$
$3 / 3$
${\color{green}100\%}$
$1 / 1$
${\color{green}100\%}$
$0 / 0$
src/contracts/misc/flashloan/base/FlashLoanSimpleReceiverBase.sol ${\color{green}100\%}$
$3 / 3$
${\color{green}100\%}$
$1 / 1$
${\color{green}100\%}$
$0 / 0$
src/contracts/protocol/configuration/ACLManager.sol ${\color{lightgreen}95.35\%}$
$41 / 43$
115, 116
${\color{orange}95\%}$
$19 / 20$
ACLManager.isBridge
${\color{green}100\%}$
$2 / 2$
src/contracts/protocol/configuration/PoolAddressesProvider.sol ${\color{green}100\%}$
$81 / 81$
${\color{green}100\%}$
$23 / 23$
${\color{green}100\%}$
$4 / 4$
src/contracts/protocol/configuration/PoolAddressesProviderRegistry.sol ${\color{green}100\%}$
$34 / 34$
${\color{green}100\%}$
$8 / 8$
${\color{orange}85.71\%}$
$6 / 7$
src/contracts/protocol/libraries/configuration/EModeConfiguration.sol ${\color{green}100\%}$
$9 / 9$
${\color{green}100\%}$
$2 / 2$
${\color{red}66.67\%}$
$4 / 6$
src/contracts/protocol/libraries/configuration/ReserveConfiguration.sol ${\color{green}100\%}$
$85 / 85$
${\color{green}100\%}$
$36 / 36$
${\color{red}61.11\%}$
$11 / 18$
src/contracts/protocol/libraries/configuration/UserConfiguration.sol ${\color{lightgreen}95.08\%}$
$58 / 61$
78, 83, 84
${\color{orange}92.86\%}$
$13 / 14$
UserConfiguration.isUsingAsCollateralOrBorrowing
${\color{red}66.67\%}$
$12 / 18$
src/contracts/protocol/libraries/helpers/TokenMath.sol ${\color{green}100\%}$
$14 / 14$
${\color{green}100\%}$
$7 / 7$
${\color{green}100\%}$
$0 / 0$
src/contracts/protocol/libraries/logic/BorrowLogic.sol ${\color{green}100\%}$
$44 / 44$
${\color{green}100\%}$
$2 / 2$
${\color{green}100\%}$
$10 / 10$
src/contracts/protocol/libraries/logic/CalldataLogic.sol ${\color{green}100\%}$
$70 / 70$
${\color{green}100\%}$
$8 / 8$
${\color{green}100\%}$
$3 / 3$
src/contracts/protocol/libraries/logic/ConfiguratorLogic.sol ${\color{green}100\%}$
$35 / 35$
${\color{green}100\%}$
$5 / 5$
${\color{green}100\%}$
$2 / 2$
src/contracts/protocol/libraries/logic/EModeLogic.sol ${\color{green}100\%}$
$6 / 6$
${\color{green}100\%}$
$1 / 1$
${\color{green}100\%}$
$1 / 1$
src/contracts/protocol/libraries/logic/FlashLoanLogic.sol ${\color{green}100\%}$
$37 / 37$
${\color{green}100\%}$
$3 / 3$
${\color{green}100\%}$
$6 / 6$
src/contracts/protocol/libraries/logic/GenericLogic.sol ${\color{lightgreen}97.87\%}$
$46 / 47$
130
${\color{green}100\%}$
$4 / 4$
${\color{green}100\%}$
$9 / 9$
src/contracts/protocol/libraries/logic/IsolationModeLogic.sol ${\color{green}100\%}$
$24 / 24$
${\color{green}100\%}$
$5 / 5$
${\color{green}100\%}$
$6 / 6$
src/contracts/protocol/libraries/logic/LiquidationLogic.sol ${\color{green}100\%}$
$142 / 142$
${\color{green}100\%}$
$7 / 7$
${\color{orange}94.74\%}$
$36 / 38$
src/contracts/protocol/libraries/logic/PoolLogic.sol ${\color{green}100\%}$
$48 / 48$
${\color{green}100\%}$
$9 / 9$
${\color{red}72.73\%}$
$8 / 11$
src/contracts/protocol/libraries/logic/ReserveLogic.sol ${\color{green}100\%}$
$64 / 64$
${\color{green}100\%}$
$8 / 8$
${\color{green}100\%}$
$13 / 13$
src/contracts/protocol/libraries/logic/SupplyLogic.sol ${\color{green}100\%}$
$64 / 64$
${\color{green}100\%}$
$4 / 4$
${\color{green}100\%}$
$22 / 22$
src/contracts/protocol/libraries/logic/ValidationLogic.sol ${\color{green}100\%}$
$125 / 125$
${\color{green}100\%}$
$16 / 16$
${\color{lightgreen}95.97\%}$
$119 / 124$
src/contracts/protocol/libraries/math/PercentageMath.sol ${\color{orange}90.91\%}$
$20 / 22$
34, 87
${\color{green}100\%}$
$5 / 5$
${\color{red}60\%}$
$3 / 5$
src/contracts/protocol/libraries/math/WadRayMath.sol ${\color{orange}86.05\%}$
$37 / 43$
39, 57, 68, 108, 146 and 1 more
${\color{green}100\%}$
$10 / 10$
${\color{red}40\%}$
$4 / 10$
src/contracts/protocol/pool/L2Pool.sol ${\color{green}100\%}$
$29 / 29$
${\color{green}100\%}$
$9 / 9$
${\color{green}100\%}$
$0 / 0$
src/contracts/protocol/pool/Pool.sol ${\color{lightgreen}98.99\%}$
$197 / 199$
551, 552
${\color{lightgreen}98.57\%}$
$69 / 70$
Pool.getReservesCount
${\color{red}75.76\%}$
$25 / 33$
src/contracts/protocol/pool/PoolConfigurator.sol ${\color{green}100\%}$
$210 / 210$
${\color{green}100\%}$
$40 / 40$
${\color{orange}94.83\%}$
$55 / 58$
src/contracts/protocol/tokenization/AToken.sol ${\color{green}100\%}$
$77 / 77$
${\color{green}100\%}$
$18 / 18$
${\color{orange}92.86\%}$
$13 / 14$
src/contracts/protocol/tokenization/ATokenWithDelegation.sol ${\color{orange}80.95\%}$
$17 / 21$
41, 42, 60, 63
${\color{red}75\%}$
$6 / 8$
ATokenWithDelegation._getDomainSeparator, ATokenWithDelegation._incrementNonces
${\color{green}100\%}$
$0 / 0$
src/contracts/protocol/tokenization/VariableDebtToken.sol ${\color{green}100\%}$
$30 / 30$
${\color{green}100\%}$
$12 / 12$
${\color{green}100\%}$
$1 / 1$
src/contracts/protocol/tokenization/base/DebtTokenBase.sol ${\color{green}100\%}$
$23 / 23$
${\color{green}100\%}$
$5 / 5$
${\color{green}100\%}$
$7 / 7$
src/contracts/protocol/tokenization/base/EIP712Base.sol ${\color{green}100\%}$
$11 / 11$
${\color{green}100\%}$
$4 / 4$
${\color{green}100\%}$
$1 / 1$
src/contracts/protocol/tokenization/base/IncentivizedERC20.sol ${\color{orange}92.75\%}$
$64 / 69$
158, 163, 164, 165, 166
${\color{lightgreen}95.24\%}$
$20 / 21$
IncentivizedERC20.transferFrom
${\color{green}100\%}$
$7 / 7$
src/contracts/protocol/tokenization/base/MintableIncentivizedERC20.sol ${\color{green}100\%}$
$14 / 14$
${\color{green}100\%}$
$2 / 2$
${\color{green}100\%}$
$2 / 2$
src/contracts/protocol/tokenization/base/ScaledBalanceTokenBase.sol ${\color{green}100\%}$
$36 / 36$
${\color{green}100\%}$
$6 / 6$
${\color{green}100\%}$
$6 / 6$
src/contracts/protocol/tokenization/delegation/BaseDelegation.sol ${\color{orange}85.56\%}$
$77 / 90$
143, 152, 154, 156, 170 and 8 more
${\color{orange}86.67\%}$
$13 / 15$
BaseDelegation.metaDelegateByType, BaseDelegation.metaDelegate
${\color{red}60\%}$
$18 / 30$
src/contracts/rewards/EmissionManager.sol ${\color{green}100\%}$
$30 / 30$
${\color{green}100\%}$
$12 / 12$
${\color{red}50\%}$
$3 / 6$
src/contracts/rewards/RewardsController.sol ${\color{lightgreen}99.04\%}$
$103 / 104$
201
${\color{green}100\%}$
$24 / 24$
${\color{red}60.71\%}$
$17 / 28$
src/contracts/rewards/RewardsDistributor.sol ${\color{lightgreen}99.32\%}$
$145 / 146$
429
${\color{green}100\%}$
$24 / 24$
${\color{orange}80.95\%}$
$17 / 21$
src/contracts/rewards/transfer-strategies/PullRewardsTransferStrategy.sol ${\color{green}100\%}$
$7 / 7$
${\color{green}100\%}$
$3 / 3$
${\color{green}100\%}$
$0 / 0$
src/contracts/rewards/transfer-strategies/StakedTokenTransferStrategy.sol ${\color{green}100\%}$
$18 / 18$
${\color{green}100\%}$
$6 / 6$
${\color{red}50\%}$
$1 / 2$
src/contracts/rewards/transfer-strategies/TransferStrategyBase.sol ${\color{green}100\%}$
$14 / 14$
${\color{green}100\%}$
$6 / 6$
${\color{red}50\%}$
$2 / 4$
src/contracts/treasury/Collector.sol ${\color{lightgreen}96.74\%}$
$89 / 92$
152, 191, 206
${\color{orange}93.75\%}$
$15 / 16$
Collector.deltaOf
${\color{red}79.17\%}$
$19 / 24$
src/contracts/treasury/RevenueSplitter.sol ${\color{green}100\%}$
$25 / 25$
${\color{green}100\%}$
$3 / 3$
${\color{green}100\%}$
$3 / 3$

@github-actions
Copy link

♻️ Forge Gas Snapshots

Path Value
snapshots/AToken.transfer.json
full amount; receiver: ->enableCollateral ↓1% (-921) 138,977
full amount; receiver: ->enableCollateral; transferFrom ↑5% (+7211) 150,094
full amount; sender: ->disableCollateral; ↓1% (-921) 97,382
full amount; sender: ->disableCollateral; receiver: ->enableCollateral ↓1% (-921) 139,094
full amount; sender: ->disableCollateral; receiver: ->enableCollateral; transferFrom ↑5% (+7211) 150,211
full amount; sender: ->disableCollateral; receiver: dirty, ->enableCollateral ↓1% (-915) 127,142
full amount; sender: ->disableCollateral; receiver: dirty, ->enableCollateral; transferFrom ↑6% (+7217) 138,259
full amount; sender: ->disableCollateral; transferFrom ↑7% (+7211) 108,499
full amount; sender: collateralDisabled ↓1% (-921) 97,265
full amount; sender: collateralDisabled; transferFrom ↑7% (+7211) 108,382
partial amount; sender: collateralDisabled; ↓1% (-945) 97,241
partial amount; sender: collateralDisabled; receiver: ->enableCollateral ↓1% (-945) 138,953
partial amount; sender: collateralDisabled; receiver: ->enableCollateral; transferFrom ↑2% (+2387) 145,270
partial amount; sender: collateralDisabled; transferFrom ↑2% (+2387) 103,558
partial amount; sender: collateralEnabled; ↓1% (-945) 97,449
partial amount; sender: collateralEnabled; receiver: ->enableCollateral ↓1% (-945) 139,161
partial amount; sender: collateralEnabled; receiver: ->enableCollateral; transferFrom ↑2% (+2387) 145,478
partial amount; sender: collateralEnabled; transferFrom ↑2% (+2387) 103,766
snapshots/ATokenWithDelegation.transfer.json
full amount; sender: with delegations, ->disableCollateral; receiver: without delegations, ->enableCollateral ↓1% (-1042) 158,387
full amount; sender: with delegations, delegatee, ->disableCollateral; receiver: with delegations, delegatee, ->enableCollateral ↓1% (-1042) 154,325
full amount; sender: with delegations, not delegatee, ->disableCollateral; receiver: with delegations, not delegatee, ->enableCollateral ↓1% (-1042) 154,325
full amount; sender: without delegations, ->disableCollateral; receiver: with delegations, ->enableCollateral ↓1% (-1042) 141,287
full amount; sender: without delegations, delegatee, ->disableCollateral; receiver: without delegations, delegatee, ->enableCollateral ↓1% (-1042) 145,350
full amount; sender: without delegations, not delegatee, ->disableCollateral; receiver: without delegations, not delegatee, ->enableCollateral ↓1% (-1042) 145,350
snapshots/Pool.Getters.json
getUserAccountData: supplies: 0, borrows: 0 ↓0% (-10) 20,339
getUserAccountData: supplies: 0, borrows: 0 with eMode enabled ↓0% (-10) 20,339
getUserAccountData: supplies: 1, borrows: 0 with eMode enabled ↓0% (-2) 57,760
getUserAccountData: supplies: 2, borrows: 0 ↑0% (+7) 84,027
getUserAccountData: supplies: 2, borrows: 0 with eMode enabled ↑0% (+3) 86,877
getUserAccountData: supplies: 2, borrows: 1 ↑0% (+1) 114,907
getUserAccountData: supplies: 2, borrows: 1 with eMode enabled ↓0% (-3) 117,757
snapshots/Pool.Operations.json
borrow: first borrow->borrowingEnabled ↑3% (+6323) 250,372
borrow: first borrow->borrowingEnabled; onBehalfOf ↑3% (+8871) 262,707
borrow: recurrent borrow ↓0% (-960) 215,290
borrow: recurrent borrow; onBehalfOf ↑1% (+1610) 222,847
flashLoan: flash loan for one asset ↓0% (-30) 162,245
flashLoan: flash loan for one asset and borrow ↑1% (+1861) 267,522
flashLoan: flash loan for two assets ↓0% (-80) 257,244
flashLoan: flash loan for two assets and borrow ↑1% (+3593) 462,398
flashLoanSimple: simple flash loan ↓0% (-30) 138,143
liquidationCall: deficit on liquidated asset ↓1% (-2199) 352,397
liquidationCall: deficit on liquidated asset + other asset ↓1% (-5423) 438,234
liquidationCall: full liquidation ↓1% (-2199) 352,397
liquidationCall: full liquidation and receive ATokens ↑6% (+18778) 349,700
liquidationCall: partial liquidation ↓1% (-2208) 343,302
liquidationCall: partial liquidation and receive ATokens ↑6% (+18769) 340,605
mintToTreasury: one asset with non zero amount ↑0% (+256) 100,311
mintToTreasury: one asset with zero amount ↑0% (+4) 35,737
mintToTreasury: two assets with non zero amount ↑0% (+512) 160,615
mintToTreasury: two assets with zero amount ↑0% (+8) 40,976
repay: full repay ↑6% (+8472) 161,770
repay: full repay with ATokens ↑2% (+3690) 163,597
repay: partial repay ↑6% (+8472) 158,122
repay: partial repay with ATokens ↑16% (+23886) 177,949
supply: collateralDisabled ↑0% (+303) 139,089
supply: collateralEnabled ↑0% (+303) 139,089
supply: first supply->collateralEnabled ↑0% (+309) 168,607
withdraw: full withdraw ↑0% (+277) 155,405
withdraw: partial withdraw ↑0% (+312) 172,161
withdraw: partial withdraw with active borrows ↑0% (+379) 220,677
snapshots/Pool.OperationsComposition.json
batchLiquidate: liquidate 2 users ↓1% (-3289) 486,305
repayAndWithdraw: borrow disabled, collateral disabled ↑1% (+2250) 290,170
supplyAndBorrow: first supply->collateralEnabled, first borrow ↑2% (+6648) 377,594
snapshots/Pool.Setters.json
setUserEMode: enter eMode, 1 borrow, 1 supply ↑0% (+8) 135,038
setUserEMode: leave eMode, 1 borrow, 1 supply ↑0% (+8) 107,676
setUserEModeOnBehalfOf: enter eMode, 1 borrow, 1 supply ↑0% (+8) 137,860
setUserEModeOnBehalfOf: leave eMode, 1 borrow, 1 supply ↑0% (+8) 110,498
setUserUseReserveAsCollateral: disableCollateral, 1 supply ↓0% (-16) 46,361
setUserUseReserveAsCollateral: enableCollateral, 1 supply ↓0% (-17) 80,654
setUserUseReserveAsCollateralOnBehalfOf: disableCollateral, 1 supply ↓0% (-16) 49,151
setUserUseReserveAsCollateralOnBehalfOf: enableCollateral, 1 supply ↓0% (-17) 83,444
snapshots/ProtocolDataProvider.json
getATokenTotalSupply ↓0% (-5) 30,080
getTotalDebt ↓0% (-5) 30,080
getUserReserveData ↑6% (+4119) 70,505
getAllATokens 63841
getAllReservesTokens 43072
getReserveDeficit 10973
snapshots/StataTokenV2.json
claimRewards ↑0% (+88) 359,625
deposit ↑0% (+303) 274,833
depositATokens ↑3% (+7251) 221,434
redeem ↑0% (+455) 197,171
redeemAToken ↓0% (-485) 147,141
snapshots/WrappedTokenGatewayV3.json
borrowETH ↑2% (+4330) 239,507
depositETH ↑0% (+325) 195,025
repayETH ↑5% (+8507) 179,129
withdrawETH ↑1% (+2777) 248,059
🔕 Unchanged
Path Value
snapshots/Pool.Getters.json
getEModeCategoryCollateralConfig 7,957
getEModeCategoryData 11,010
getLiquidationGracePeriod 7,804
getReserveData 29,775
getUserAccountData: supplies: 1, borrows: 0 55,014
snapshots/ProtocolDataProvider.json
getFlashLoanEnabled 11,346
getInterestRateStrategyAddress 8,811
getIsVirtualAccActive 463
getLiquidationProtocolFee 11,373
getPaused 11,462
getReserveCaps 11,383
getReserveConfigurationData 11,819
getReserveTokensAddresses 14,934
getSiloedBorrowing 11,399
getUnbackedMintCap 413
getVirtualUnderlyingBalance 11,144

@github-actions
Copy link

🌈 Test Results
No files changed, compilation skipped

Ran 20 tests for tests/protocol/configuration/ACLManager.t.sol:ACLManagerTest
[PASS] testDefaultAdminRoleAfterDeploy() (gas: 20677)
[PASS] test_defaultAdmin_grantAdminRole_FlashBorrowAdmin() (gas: 65496)
[PASS] test_defaultAdmin_grants_AssetsListingRole() (gas: 37587)
[PASS] test_defaultAdmin_grants_BridgeRole() (gas: 37653)
[PASS] test_defaultAdmin_grants_EmergencyAdminRole() (gas: 37600)
[PASS] test_defaultAdmin_grants_PoolAdminRole() (gas: 37720)
[PASS] test_defaultAdmin_grants_RiskRole() (gas: 37717)
[PASS] test_defaultAdmin_remove_AssetsListingRole() (gas: 29432)
[PASS] test_defaultAdmin_remove_BridgeRole() (gas: 29521)
[PASS] test_defaultAdmin_remove_EmergencyAdminRole() (gas: 29416)
[PASS] test_defaultAdmin_remove_PoolAdminRole() (gas: 29538)
[PASS] test_defaultAdmin_remove_RiskRole() (gas: 29423)
[PASS] test_flashBorrowAdmin_grantRole_FlashBorrowRole() (gas: 91896)
[PASS] test_flashBorrowAdmin_removeRole_FlashBorrowRole() (gas: 76412)
[PASS] test_remove_riskAdmin() (gas: 29432)
[PASS] test_revert_anyUser_grantAdminRole_FlashBorrowAdmin() (gas: 72834)
[PASS] test_revert_deploy_ACLADMIN_zeroAddress() (gas: 1523412)
[PASS] test_reverts_defaultAdmin_notRoleAdmin_addRole_FlashBorrowRole() (gas: 98813)
[PASS] test_reverts_defaultAdmin_notRoleAdmin_revokeRole_FlashBorrowRole() (gas: 125190)
[PASS] test_reverts_notAdmin_grantRole_FlashBorrow() (gas: 113970)
Suite result: ok. 20 passed; 0 failed; 0 skipped; finished in 12.55ms (2.04ms CPU time)

Ran 7 tests for tests/protocol/configuration/AddressesProviderRegistry.t.sol:PoolAddressesProviderRegistryTest
[PASS] testAddAddressesProvider() (gas: 120369)
[PASS] testRemoveAddressesProvider() (gas: 96895)
[PASS] testRemoveMultipleAddressesProvider() (gas: 242308)
[PASS] test_addressesProviderAddedToRegistry() (gas: 16383)
[PASS] test_removesLastProvider() (gas: 32576)
[PASS] test_revert_registry_0() (gas: 15287)
[PASS] test_revert_removeNonExistingAddressesProvider() (gas: 27258)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 32.87ms (1.52ms CPU time)

Ran 1 test for tests/template/BaseTest.t.sol:BaseTest
[PASS] test_default() (gas: 226314)
Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 27.31ms (268.23µs CPU time)

Ran 5 tests for tests/treasury/Collector.t.sol:CollectorTest
[PASS] testApprove() (gas: 49702)
[PASS] testApproveWhenNotFundsAdmin() (gas: 18183)
[PASS] testTransfer() (gas: 54858)
[PASS] testTransferWhenNotFundsAdmin() (gas: 18207)
[PASS] test_receiveEth() (gas: 20265)
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 2.83ms (230.04µs CPU time)

Ran 6 tests for tests/treasury/Collector.t.sol:FundsAdminRoleBytesTest
[PASS] testApprove() (gas: 49658)
[PASS] testApproveWhenNotFundsAdmin() (gas: 18161)
[PASS] testTransfer() (gas: 54903)
[PASS] testTransferWhenNotFundsAdmin() (gas: 18185)
[PASS] test_receiveEth() (gas: 20288)
[PASS] test_successful() (gas: 13383)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 2.79ms (246.05µs CPU time)

Ran 7 tests for tests/treasury/Collector.t.sol:IsFundsAdminTest
[PASS] testApprove() (gas: 49658)
[PASS] testApproveWhenNotFundsAdmin() (gas: 18183)
[PASS] testTransfer() (gas: 54858)
[PASS] testTransferWhenNotFundsAdmin() (gas: 18207)
[PASS] test_isFundsAdmin() (gas: 24249)
[PASS] test_isNotFundsAdmin() (gas: 17579)
[PASS] test_receiveEth() (gas: 20288)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 2.98ms (419.05µs CPU time)

Ran 18 tests for tests/gas/AToken.Transfer.gas.t.sol:ATokenTransfer_gas_Tests
[PASS] test_transferFrom_fullAmount() (gas: 688117)
[PASS] test_transferFrom_fullAmount_dirtyReceiver() (gas: 1123516)
[PASS] test_transferFrom_fullAmount_senderCollateralDisabled() (gas: 736921)
[PASS] test_transferFrom_fullAmount_senderCollateralDisabled_receiverNonZeroFunds() (gas: 1138622)
[PASS] test_transferFrom_fullAmount_senderCollateralDisabled_receiverNonZeroFunds2() (gas: 1089750)
[PASS] test_transferFrom_partialAmount() (gas: 698683)
[PASS] test_transferFrom_partialAmount_receiverNonZeroFunds() (gas: 1100353)
[PASS] test_transferFrom_partialAmount_senderCollateralEnabled() (gas: 654674)
[PASS] test_transferFrom_partialAmount_senderCollateralEnabled_receiverNonZeroFunds() (gas: 1056320)
[PASS] test_transfer_fullAmount() (gas: 624386)
[PASS] test_transfer_fullAmount_dirtyReceiver() (gas: 1059813)
[PASS] test_transfer_fullAmount_senderCollateralDisabled() (gas: 673216)
[PASS] test_transfer_fullAmount_senderCollateralDisabled_receiverNonZeroFunds() (gas: 1074956)
[PASS] test_transfer_fullAmount_senderCollateralDisabled_receiverNonZeroFunds2() (gas: 1026150)
[PASS] test_transfer_partialAmount() (gas: 644501)
[PASS] test_transfer_partialAmount_receiverNonZeroFunds() (gas: 1046177)
[PASS] test_transfer_partialAmount_senderCollateralEnabled() (gas: 600449)
[PASS] test_transfer_partialAmount_senderCollateralEnabled_receiverNonZeroFunds() (gas: 1002126)
Suite result: ok. 18 passed; 0 failed; 0 skipped; finished in 65.99ms (33.11ms CPU time)

Ran 26 tests for tests/treasury/Collector.t.sol:StreamsTest
[PASS] testApprove() (gas: 49636)
[PASS] testApproveWhenNotFundsAdmin() (gas: 18335)
[PASS] testCancelStreamByFundsAdmin() (gas: 206160)
[PASS] testCancelStreamByRecipient() (gas: 231265)
[PASS] testCancelStreamWhenNotAdminOrRecipient() (gas: 242221)
[PASS] testCancelStreamWhenStreamNotExists() (gas: 22839)
[PASS] testCreateStream() (gas: 244288)
[PASS] testCreateStreamWhenDepositIsZero() (gas: 27252)
[PASS] testCreateStreamWhenNotFundsAdmin() (gas: 24600)
[PASS] testCreateStreamWhenRecipientIsCollector() (gas: 25041)
[PASS] testCreateStreamWhenRecipientIsTheCaller() (gas: 25296)
[PASS] testCreateStreamWhenRecipientIsZero() (gas: 25064)
[PASS] testCreateStreamWhenStartTimeInThePast() (gas: 25761)
[PASS] testCreateStreamWhenStopTimeBeforeStart() (gas: 23210)
[PASS] testGetNextStreamId() (gas: 17592)
[PASS] testGetNotExistingStream() (gas: 18416)
[PASS] testGetStream() (gas: 234347)
[PASS] testTransfer() (gas: 54947)
[PASS] testTransferWhenNotFundsAdmin() (gas: 18337)
[PASS] testWithdrawFromStream() (gas: 307164)
[PASS] testWithdrawFromStreamFinishesSuccessfully() (gas: 230192)
[PASS] testWithdrawFromStreamWhenAmountExceedsBalance() (gas: 243607)
[PASS] testWithdrawFromStreamWhenAmountIsZero() (gas: 238105)
[PASS] testWithdrawFromStreamWhenNotAdminOrRecipient() (gas: 240264)
[PASS] testWithdrawFromStreamWhenStreamNotExists() (gas: 23004)
[PASS] test_receiveEth() (gas: 20310)
Suite result: ok. 26 passed; 0 failed; 0 skipped; finished in 7.07ms (4.40ms CPU time)

Ran 10 tests for tests/protocol/tokenization/ATokenDelegation.t.sol:ATokenDelegationTest
[PASS] test_delegate() (gas: 399556)
[PASS] test_getDelegates() (gas: 131759)
[PASS] test_getPowersCurrent() (gas: 639744)
[PASS] test_getPowersCurrent_with_index_growth() (gas: 741809)
[PASS] test_initial_state_without_delegation() (gas: 47493)
[PASS] test_mint_and_burn() (gas: 2659658)
[PASS] test_precision() (gas: 1108451)
[PASS] test_transfer() (gas: 2360500)
[PASS] test_transferFrom() (gas: 2484104)
[PASS] test_transferOnLiquidation() (gas: 2178599)
Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 147.87ms (89.66ms CPU time)

Ran 16 tests for tests/invariants/CryticToFoundry.t.sol:CryticToFoundry
[PASS] test_replay() (gas: 9529378)
[PASS] test_replay_V33_supply() (gas: 2055073)
[PASS] test_replay_v33_2repayWithAtokens() (gas: 2074706)
[PASS] test_replay_v33_2setUserEMode() (gas: 2546874)
[PASS] test_replay_v33_2transfer() (gas: 2057276)
[PASS] test_replay_v33_3liquidationCall() (gas: 2583118)
[PASS] test_replay_v33_assert_BORROWING_HSPOST_G() (gas: 2533568)
[PASS] test_replay_v33_repayWithATokens() (gas: 2480206)
[PASS] test_replay_v33_setReserveActive() (gas: 1976130)
[PASS] test_replay_v33_supply() (gas: 2689800)
[PASS] test_v32_2_borrow() (gas: 2237318)
[PASS] test_v32_borrow() (gas: 2078922)
[PASS] test_v32_mintToTreasury() (gas: 2436701)
[PASS] test_v32_repay() (gas: 1952618)
[PASS] test_v32_setPoolPause() (gas: 4290665)
[PASS] test_v32_withdrawEchidna() (gas: 2063463)
Suite result: ok. 16 passed; 0 failed; 0 skipped; finished in 156.03ms (138.51ms CPU time)

Ran 13 tests for tests/deployments/DeploymentsGasLimits.t.sol:DeploymentsGasLimits
[PASS] test0AaveV3SetupDeployment() (gas: 5310733)
[PASS] test10ConfigEngineDeployment() (gas: 7043465)
[PASS] test11StaticATokenDeployment() (gas: 6676133)
[PASS] test12PeripheralsTreasuryPartner() (gas: 7560610)
[PASS] test1AaveV3GettersBatch1Deployment() (gas: 4570271)
[PASS] test2AaveV3GettersBatch2Deployment() (gas: 3599146)
[PASS] test3AaveV3PoolDeployment() (gas: 7829213)
[PASS] test4AaveV3L2PoolDeployment() (gas: 8089731)
[PASS] test5PeripheralsRelease() (gas: 7071734)
[PASS] test6MiscDeployment() (gas: 1247701)
[PASS] test7ParaswapDeployment() (gas: 5160279)
[PASS] test8SetupMarket() (gas: 2670408)
[PASS] test9TokensMarket() (gas: 3864108)
Suite result: ok. 13 passed; 0 failed; 0 skipped; finished in 16.31ms (6.60ms CPU time)

Ran 15 tests for tests/protocol/tokenization/ATokenEdgeCases.t.sol:ATokenEdgeCasesTests
[PASS] testApprove() (gas: 45129)
[PASS] testApproveMax() (gas: 45188)
[PASS] testApproveWithZeroAddressSpender() (gas: 42171)
[PASS] testCheckGetters() (gas: 258237)
[PASS] testDecreaseAllowance() (gas: 53059)
[PASS] testIncreaseAllowance() (gas: 53080)
[PASS] testIncreaseAllowanceFromZero() (gas: 48389)
[PASS] testMintToTreasury_amount_zero() (gas: 15692)
[PASS] testTransferFromZeroAmount() (gas: 126995)
[PASS] test_burn_zeroAddress() (gas: 257704)
[PASS] test_mintToZeroAddress() (gas: 80228)
[PASS] test_reverts_burnAmountScaledZero() (gas: 18964)
[PASS] test_reverts_mintAmountScaledZero() (gas: 19075)
[PASS] test_transferFrom_zeroAddress_origin() (gas: 126806)
[PASS] test_transfer_amount_MAX_UINT_120() (gas: 16576)
Suite result: ok. 15 passed; 0 failed; 0 skipped; finished in 33.14ms (4.66ms CPU time)

Ran 8 tests for tests/protocol/tokenization/ATokenEvents.t.sol:ATokenEventsTests
[PASS] test_atoken_burnEvents_fullBalance() (gas: 529105)
[PASS] test_atoken_burnEvents_multipleWithdrawals_withInterests() (gas: 615934)
[PASS] test_atoken_burnEvents_singleWithdraw_WithInterests() (gas: 539716)
[PASS] test_atoken_burnEvents_singleWithdraw_noInterests() (gas: 249191)
[PASS] test_atoken_burnEvents_withdrawAmountLessThanInterests() (gas: 542429)
[PASS] test_atoken_mintEvents_firstSupply() (gas: 247410)
[PASS] test_atoken_mintEvents_supplyAfterBorrow() (gas: 594439)
[PASS] test_mintToTreasury_events() (gas: 85757)
Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 40.82ms (13.63ms CPU time)

Ran 4 tests for tests/protocol/tokenization/ATokenModifiers.t.sol:ATokenModifiersTests
[PASS] test_revert_notAdmin_burn() (gas: 16880)
[PASS] test_revert_notAdmin_mint() (gas: 16883)
[PASS] test_revert_notAdmin_transferOnLiquidation() (gas: 16910)
[PASS] test_revert_notAdmin_transferUnderlyingTo() (gas: 16687)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 27.40ms (231.70µs CPU time)

Ran 9 tests for tests/protocol/tokenization/ATokenPermit.t.sol:ATokenPermitTests
[PASS] testCheckDomainSeparator() (gas: 26147)
[PASS] test_cancelPermit() (gas: 101759)
[PASS] test_chain_fork_calculateDomainSeparator() (gas: 32932)
[PASS] test_revert_submitPermit_0_expiration() (gas: 46325)
[PASS] test_revert_submitPermit_InvalidExpiration_previosCurrentBlock() (gas: 47222)
[PASS] test_revert_submitPermit_InvalidSignature() (gas: 54771)
[PASS] test_revert_submitPermit_invalid_nonce() (gas: 55345)
[PASS] test_revert_submitPermit_invalid_owner() (gas: 46174)
[PASS] test_submitPermit() (gas: 94824)
Suite result: ok. 9 passed; 0 failed; 0 skipped; finished in 31.22ms (4.12ms CPU time)

Ran 3 tests for tests/protocol/tokenization/ATokenRepay.t.sol:ATokenRepayTests
[PASS] test_repay_allDebt() (gas: 244681)
[PASS] test_repay_partialDebt() (gas: 286880)
[PASS] test_revert_repay_withoutFunds() (gas: 133386)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 30.05ms (3.25ms CPU time)

Ran 3 tests for tests/protocol/tokenization/ATokenRescueTokens.sol:ATokenRescueTokensTests
[PASS] test_rescueTokens() (gas: 77721)
[PASS] test_reverts_rescueTokens_CALLER_NOT_POOL_ADMIN() (gas: 70425)
[PASS] test_reverts_rescueTokens_UnderlyingCannotBeRescued() (gas: 71084)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 27.51ms (524.32µs CPU time)

Ran 12 tests for tests/protocol/tokenization/ATokenTransfers.t.sol:ATokenTransferTests
[PASS] test_atoken_alice_transfer_all_to_bob() (gas: 156587)
[PASS] test_atoken_alice_transfer_to_bob() (gas: 224546)
[PASS] test_atoken_alice_transfer_to_bob_zero() (gas: 152630)
[PASS] test_atoken_alice_transfer_to_carol_accrues_interests() (gas: 216580)
[PASS] test_atoken_alice_transfer_to_herself() (gas: 76247)
[PASS] test_atoken_alice_transfer_to_herself_zero() (gas: 76201)
[PASS] test_atoken_multiple_transfers() (gas: 192916)
[PASS] test_atoken_transfer_sets_enabled_as_collateral(uint256,uint256) (runs: 1000, μ: 383976, ~: 383900)
Logs:
  Bound result 17339104198
  Bound result 1183462722

[PASS] test_atoken_transfer_some_collateral_from_bob_borrower_to_alice() (gas: 505082)
[PASS] test_atoken_transfer_to_bob_them_bob_borrows() (gas: 385179)
[PASS] test_reverts_atoken_transfer_all_collateral_from_bob_borrower_to_alice() (gas: 376239)
[PASS] test_scaled_balance_token_base_alice_transfer_to_bob_accrues_interests() (gas: 109535)
Suite result: ok. 12 passed; 0 failed; 0 skipped; finished in 881.99ms (847.52ms CPU time)

Ran 6 tests for tests/gas/ATokenWithDelegation.Transfer.gas.t.sol:ATokenWithDelegation_gas_Tests
[PASS] test_transfer_fullAmountSenderWithAndReceiverWithoutDelegations() (gas: 296412)
[PASS] test_transfer_fullAmountSenderWithoutAndReceiverWithDelegations_notDelegatees() (gas: 288349)
[PASS] test_transfer_fullAmountWithDelegations_delegatees() (gas: 594671)
[PASS] test_transfer_fullAmountWithDelegations_notDelegatees() (gas: 400480)
[PASS] test_transfer_fullAmountWithoutDelegations_delegatees() (gas: 382556)
[PASS] test_transfer_fullAmountWithoutDelegations_notDelegatees() (gas: 184319)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 38.93ms (3.04ms CPU time)

Ran 1 test for tests/protocol/tokenization/ATokenWithDelegationRounding.t.sol:ATokenWithDelegationRoundingTest
[PASS] test_getPowerCurrent_and_delegate_shouldRoundDown() (gas: 227502)
Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 29.65ms (820.43µs CPU time)

Ran 7 tests for tests/protocol/tokenization/ATokenRounding.t.sol:ATokenRoundingTest
[PASS] test_balanceShouldRoundDown() (gas: 48501)
[PASS] test_fuzzEdge(uint256,uint256,uint256) (runs: 1000, μ: 324126, ~: 324234)
Logs:
  Bound result 73155619664685124479411848892
  Bound result 79228162514264337593543950335
  Bound result 20253642042474201306205421

[PASS] test_supplyShouldRoundDown() (gas: 280484)
[PASS] test_supplyShouldRoundDown_revertIfZero() (gas: 142576)
[PASS] test_totalSupplyShouldRoundDown() (gas: 44267)
[PASS] test_transferAmountShouldBeRoundedUp() (gas: 426288)
[PASS] test_withdrawShouldRoundUp() (gas: 355261)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 722.91ms (692.75ms CPU time)

Ran 7 tests for tests/utils/AaveSetters.t.sol:AaveSettersTest
[PASS] test_setATokenBalance() (gas: 41857)
[PASS] test_setATokenTotalSupply() (gas: 38281)
[PASS] test_setLastUpdateTimestamp() (gas: 61359)
[PASS] test_setLiquidityIndex() (gas: 60081)
[PASS] test_setVTokenBalance() (gas: 41701)
[PASS] test_setVTokenTotalSupply() (gas: 38156)
[PASS] test_setVariableBorrowIndex() (gas: 60124)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 29.20ms (1.10ms CPU time)

Ran 5 tests for tests/deployments/AaveV3BatchDeployment.t.sol:AaveV3BatchDeployment
[PASS] testAaveV3BatchDeploy() (gas: 54386000)
[PASS] testAaveV3BatchDeploymentCheck() (gas: 62562606)
[PASS] testAaveV3Batch_reuseIncentivesProxy() (gas: 53884571)
[PASS] testAaveV3L2BatchDeploymentCheck() (gas: 64353673)
[PASS] testAaveV3TreasuryPartnerBatchDeploymentCheck() (gas: 63071884)
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 102.69ms (97.97ms CPU time)

Ran 12 tests for tests/deployments/AaveV3BatchTests.t.sol:AaveV3BatchTests
[PASS] test0AaveV3SetupDeployment() (gas: 5310820)
[PASS] test10StaticATokenDeployment() (gas: 6676156)
[PASS] test1AaveV3GettersDeployment() (gas: 7395953)
[PASS] test2AaveV3PoolDeployment() (gas: 7829247)
[PASS] test3AaveV3L2PoolDeployment() (gas: 8089808)
[PASS] test4PeripheralsRelease() (gas: 7071756)
[PASS] test5MiscDeployment() (gas: 844259)
[PASS] test6ParaswapRelease() (gas: 5160256)
[PASS] test7SetupMarket() (gas: 2645975)
[PASS] test8TokensMarket() (gas: 3864106)
[PASS] test9ConfigEngineDeployment() (gas: 7043528)
[PASS] testAaveV3FullBatchOrchestration() (gas: 54383263)
Suite result: ok. 12 passed; 0 failed; 0 skipped; finished in 21.38ms (11.43ms CPU time)

Ran 3 tests for tests/protocol/tokenization/AToken_TransferFrom.t.sol:ATokenTransferFromTests
[PASS] test_transferFrom(uint128,uint256) (runs: 1000, μ: 176785, ~: 178469)
Logs:
  Bound result 368769765737873333167396913437
  Bound result 85162358508258736682

[PASS] test_transferFrom_shouldRevertIfSenderInsufficientAllowance() (gas: 58420)
[PASS] test_transferFrom_shouldRevertIfSenderIsNotApproved() (gas: 31547)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 381.82ms (356.43ms CPU time)

Ran 12 tests for tests/misc/AaveOracle.t.sol:AaveOracleTest
[PASS] testAddSingleSource() (gas: 1012313)
[PASS] testAssetZeroPriceAndZeroFallbackPrice() (gas: 1151410)
[PASS] testAssetZeroPriceNonZeroFallback() (gas: 1171353)
[PASS] testAssetZeroPriceWithoutFallback() (gas: 994026)
[PASS] testEmptySource() (gas: 897261)
[PASS] testGetBaseCurrencyPrice() (gas: 12312)
[PASS] testGetPriceViaFallbackOracle() (gas: 1075832)
[PASS] testUpdateFallbackOracle() (gas: 178435)
[PASS] testUpdateSingleSource() (gas: 126689)
[PASS] testUpdateSourceBaseCurrency() (gas: 138281)
[PASS] test_revert_setAssetSources_inconsistentParams() (gas: 898200)
[PASS] test_revert_setAssetSources_wrongCaller() (gas: 24207)
Suite result: ok. 12 passed; 0 failed; 0 skipped; finished in 29.05ms (2.19ms CPU time)

Ran 3 tests for tests/protocol/libraries/logic/PoolLogic.initReserves.edge.t.sol:PoolLogicInitReservesTests
[PASS] test_initReserves_return_false_after_dropped_reserve() (gas: 618116)
[PASS] test_reverts_initReserves_max() (gas: 174166)
[PASS] test_reverts_initReserves_reserveAlreadyAdded() (gas: 197304)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 28.80ms (608.62µs CPU time)

Ran 11 tests for tests/misc/PriceOracleSentinel.t.sol:PriceOracleSentinelTest
[PASS] test_isBorrowAllowed_network_down() (gas: 27215)
[PASS] test_isBorrowAllowed_network_up_not_grace_period() (gas: 47299)
[PASS] test_isBorrowAllowed_true_network_up_grace_period_pass() (gas: 47353)
[PASS] test_isLiquidationAllowed_network_down() (gas: 27126)
[PASS] test_isLiquidationAllowed_network_up_not_grace_period() (gas: 47276)
[PASS] test_isLiquidationAllowed_true_network_up_grace_period_pass() (gas: 47374)
[PASS] test_new_PriceOracleSentinel() (gas: 395850)
[PASS] test_reverts_setGracePeriod_not_poolAdmin() (gas: 25429)
[PASS] test_reverts_setSequencerOracle_not_poolAdmin() (gas: 22340)
[PASS] test_setGracePeriod() (gas: 32317)
[PASS] test_setSequencerOracle() (gas: 24455)
Suite result: ok. 11 passed; 0 failed; 0 skipped; finished in 28.32ms (879.68µs CPU time)

Ran 18 tests for tests/gas/ProtocolDataProvider.gas.t.sol:ProtocolDataProvider_gas_Tests
[PASS] test_getATokenTotalSupply() (gas: 40410)
[PASS] test_getAllATokens() (gas: 75591)
[PASS] test_getAllReservesTokens() (gas: 54844)
[PASS] test_getDebtCeiling() (gas: 21703)
[PASS] test_getFlashLoanEnabled() (gas: 21803)
[PASS] test_getInterestRateStrategyAddress() (gas: 19259)
[PASS] test_getIsVirtualAccActive() (gas: 10855)
[PASS] test_getLiquidationProtocolFee() (gas: 21784)
[PASS] test_getPaused() (gas: 21854)
[PASS] test_getReserveCaps() (gas: 21788)
[PASS] test_getReserveConfigurationData() (gas: 22767)
[PASS] test_getReserveDeficit() (gas: 21302)
[PASS] test_getReserveTokensAddresses() (gas: 25610)
[PASS] test_getSiloedBorrowing() (gas: 21858)
[PASS] test_getTotalDebt() (gas: 40410)
[PASS] test_getUnbackedMintCap() (gas: 10808)
[PASS] test_getUserReserveData() (gas: 534783)
[PASS] test_getVirtualUnderlyingBalance() (gas: 21488)
Suite result: ok. 18 passed; 0 failed; 0 skipped; finished in 33.59ms (2.28ms CPU time)

Ran 2 tests for tests/deployments/AaveV3PermissionsTest.t.sol:AaveV3PermissionsTest
[PASS] testCheckPermissions() (gas: 52760842)
[PASS] testCheckPermissionsTreasuryPartner() (gas: 53252408)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 36.59ms (32.80ms CPU time)

Ran 20 tests for tests/extensions/v3-config-engine/AaveV3ConfigEngineTest.t.sol:AaveV3ConfigEngineTest
[PASS] testAssetEModeUpdates() (gas: 2732590)
[PASS] testBorrowUpdatesNoChange() (gas: 2444616)
[PASS] testBorrowsUpdates() (gas: 2513379)
[PASS] testCapsUpdate() (gas: 2454311)
[PASS] testCollateralUpdateCorrectBonus() (gas: 2468235)
[PASS] testCollateralUpdateWrongBonus() (gas: 796163)
[PASS] testCollateralsUpdates() (gas: 2468046)
[PASS] testCollateralsUpdatesNoChange() (gas: 2442724)
[PASS] testCollateralsUpdatesNoChangeShouldNotEmit() (gas: 801779)
[PASS] testEModeCategoryCreation() (gas: 1239619)
[PASS] testEModeCategoryUpdates() (gas: 2599274)
[PASS] testEModeCategoryUpdatesNoChange() (gas: 2600893)
[PASS] testEModeCategoryUpdatesNoChangeShouldNotEmit() (gas: 875932)
[PASS] testEModeCategoryUpdatesWrongBonus() (gas: 866325)
[PASS] testListingWithEModeCategoryCreation() (gas: 5863840)
[PASS] testListings() (gas: 5574653)
[PASS] testListingsCustom() (gas: 9377515)
[PASS] testListingsCustomWithEModeCategoryCreation() (gas: 9667398)
[PASS] testPriceFeedsUpdates() (gas: 2521845)
[PASS] testRateStrategiesUpdates() (gas: 2509199)
Suite result: ok. 20 passed; 0 failed; 0 skipped; finished in 279.35ms (357.11ms CPU time)

Ran 9 tests for tests/rewards/EmissionsManager.t.sol:EmissionManagerTest
[PASS] test_configureAssets() (gas: 582123)
[PASS] test_new_EmissionManager() (gas: 756819)
[PASS] test_setClaimer() (gas: 51517)
[PASS] test_setDistributionEnd() (gas: 589381)
[PASS] test_setEmissionAdmin() (gas: 43116)
[PASS] test_setEmissionPerSecond() (gas: 595890)
[PASS] test_setRewardOracle() (gas: 671191)
[PASS] test_setRewardsController() (gas: 19122)
[PASS] test_setTransferStrategy() (gas: 856073)
Suite result: ok. 9 passed; 0 failed; 0 skipped; finished in 28.47ms (1.68ms CPU time)

Ran 6 tests for tests/misc/aave-upgradeability/InitializableImmutableAdminUpgradeabilityProxy.t.sol:InitializableImmutableAdminUpgradeabilityProxyTests
[PASS] test_proxy_fallback() (gas: 600016)
[PASS] test_proxy_upgradeTo() (gas: 622088)
[PASS] test_proxy_upgradeToAndCall() (gas: 627937)
[PASS] test_proxy_upgradeToAndCall_initialize() (gas: 597095)
[PASS] test_reverts_upgradeToAndCall_notAdmin() (gas: 602961)
[PASS] test_reverts_upgradeTo_notAdmin() (gas: 600781)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 2.67ms (1.47ms CPU time)

Ran 13 tests for tests/misc/rates/RateStrategy.calculateRates.t.sol:RateStrategyCalculateRatesTests
[PASS] test_calculate_rates_100_percent_usage() (gas: 47885)
Logs:
  Bound result 8000
  Bound result 400

[PASS] test_calculate_rates_80_bps_usage() (gas: 48004)
Logs:
  Bound result 8000
  Bound result 400

[PASS] test_calculate_rates_80_percent_usage() (gas: 90655)
Logs:
  Bound result 8000
  Bound result 400

[PASS] test_calculate_rates_80_percent_usage_and_50_percent_supply_usage_due_minted_tokens() (gas: 46210)
Logs:
  Bound result 8000
  Bound result 400

[PASS] test_calculate_rates_80_percent_usage_and_80_bps_supply_usage_due_minted_tokens() (gas: 46232)
Logs:
  Bound result 8000
  Bound result 400

[PASS] test_calculate_rates_above_op_usage((uint16,uint32,uint32,uint32),uint256,uint256,uint256) (runs: 1000, μ: 123498, ~: 123962)
Logs:
  Bound result 100
  Bound result 2
  Bound result 152255124078842365735272538
  Bound result 36262502210080922217404354
  Bound result 800557957651553420468109767

[PASS] test_calculate_rates_below_op_usage((uint16,uint32,uint32,uint32),uint256,uint256,uint256) (runs: 1000, μ: 117206, ~: 120332)
Logs:
  Bound result 4623
  Bound result 125
  Bound result 202
  Bound result 154
  Bound result 18389

[PASS] test_calculate_rates_below_op_usage_when_no_debt((uint16,uint32,uint32,uint32),uint256,uint256) (runs: 1000, μ: 74890, ~: 75364)
Logs:
  Bound result 1471
  Bound result 0

[PASS] test_calculate_rates_empty_reserve((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 43515, ~: 43416)
Logs:
  Bound result 5699
  Bound result 1

[PASS] test_calculate_rates_when_not_using_virtual_valance((uint16,uint32,uint32,uint32),uint256,uint256) (runs: 1000, μ: 67465, ~: 68630)
Logs:
  Bound result 572
  Bound result 0

[PASS] test_calculate_rates_when_total_debt_0((uint16,uint32,uint32,uint32),uint256,uint256) (runs: 1000, μ: 67485, ~: 68639)
Logs:
  Bound result 597
  Bound result 1086

[PASS] test_fuzz_calculate_rates_80_percent_usage_added_and_virtual_equal(uint256) (runs: 1000, μ: 32802, ~: 33021)
Logs:
  Bound result 23220720832484223

[PASS] test_zero_rates_strategy_calculate_rates() (gas: 18549)
Suite result: ok. 13 passed; 0 failed; 0 skipped; finished in 3.96s (3.93s CPU time)

Ran 7 tests for tests/misc/rates/RateStrategy.setters.t.sol:RateStrategySettersTests
[PASS] test_new_SetReserveInterestRateParams((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 52131, ~: 52029)
Logs:
  Bound result 486
  Bound result 2774

[PASS] test_new_SetReserveInterestRateParams_when_not_configurator((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 25932, ~: 25843)
Logs:
  Bound result 5637
  Bound result 10664

[PASS] test_reverts_SetReserveInterestRateParams_when_gt_maxRate((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 29075, ~: 29184)
Logs:
  Bound result 8580
  Bound result 167781

[PASS] test_reverts_SetReserveInterestRateParams_when_gt_max_op((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 22028, ~: 22028)
[PASS] test_reverts_SetReserveInterestRateParams_when_lt_min_op((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 22076, ~: 22076)
[PASS] test_reverts_SetReserveInterestRateParams_when_reserve_0((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 26802, ~: 26699)
Logs:
  Bound result 100
  Bound result 4743

[PASS] test_reverts_SetReserveInterestRateParams_when_slope1_gt_slope2((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 23308, ~: 23308)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 2.14s (2.08s CPU time)

Ran 7 tests for tests/misc/rates/RateStrategy.setters.t.sol:RateStrategySettersTestsOverride
[PASS] test_new_SetReserveInterestRateParams((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 51510, ~: 51412)
Logs:
  Bound result 167
  Bound result 859

[PASS] test_new_SetReserveInterestRateParams_when_not_configurator((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 25325, ~: 25210)
Logs:
  Bound result 212
  Bound result 154

[PASS] test_reverts_SetReserveInterestRateParams_when_gt_maxRate((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 28466, ~: 28559)
Logs:
  Bound result 2022
  Bound result 6382

[PASS] test_reverts_SetReserveInterestRateParams_when_gt_max_op((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 21403, ~: 21403)
[PASS] test_reverts_SetReserveInterestRateParams_when_lt_min_op((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 21451, ~: 21451)
[PASS] test_reverts_SetReserveInterestRateParams_when_reserve_0((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 26151, ~: 26074)
Logs:
  Bound result 120
  Bound result 661

[PASS] test_reverts_SetReserveInterestRateParams_when_slope1_gt_slope2((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 22683, ~: 22683)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 1.44s (1.41s CPU time)

Ran 54 tests for tests/protocol/pool/L2Pool.t.sol:L2PoolTests
[PASS] test_approvePositionManager_false() (gas: 42552)
[PASS] test_approvePositionManager_true() (gas: 48988)
[PASS] test_dropReserve() (gas: 96195)
[PASS] test_getBorrowLogic() (gas: 13740)
[PASS] test_getEModeLogic() (gas: 13718)
[PASS] test_getFlashLoanLogic() (gas: 13675)
[PASS] test_getLiquidationLogic() (gas: 13761)
[PASS] test_getPoolLogic() (gas: 13782)
[PASS] test_getSupplyLogic() (gas: 13693)
[PASS] test_getVirtualUnderlyingBalance() (gas: 227268)
[PASS] test_getters_getUserAccountData() (gas: 580422)
[PASS] test_l2_borrow() (gas: 411859)
[PASS] test_l2_liquidationCall() (gas: 1018961)
[PASS] test_l2_partial_withdraw() (gas: 299105)
[PASS] test_l2_repay() (gas: 435639)
[PASS] test_l2_repay_atokens() (gas: 441948)
[PASS] test_l2_repay_permit(uint128,uint128,uint128,uint128,uint128) (runs: 1000, μ: 611201, ~: 611989)
Logs:
  Bound result 17674126842477160696
  Bound result 10662620544901568468
  Bound result 1669140398
  Bound result 240856109

[PASS] test_l2_set_user_collateral() (gas: 246470)
[PASS] test_l2_supply() (gas: 245738)
[PASS] test_l2_supply_permit(uint128,uint120) (runs: 1000, μ: 415608, ~: 415612)
[PASS] test_l2_withdraw() (gas: 236604)
[PASS] test_mintToTreasury() (gas: 664085)
[PASS] test_mintToTreasury_skip_invalid_addresses() (gas: 668668)
[PASS] test_noop_approvePositionManager_true_when_already_is_activated() (gas: 54177)
[PASS] test_noop_setUserUseReserveAsCollateralOnBehalfOf_true_when_already_is_activated() (gas: 425161)
[PASS] test_noop_setUserUseReserveAsCollateral_true_when_already_is_activated() (gas: 256367)
[PASS] test_pool_defaultValues() (gas: 4929087)
[PASS] test_renouncePositionManager() (gas: 38418)
[PASS] test_rescueTokens(uint256) (runs: 1000, μ: 81732, ~: 81992)
Logs:
  Bound result 9931482

[PASS] test_resetIsolationModeTotalDebt() (gas: 699134)
[PASS] test_revert_setUserEModeOnBehalfOf_not_position_manager(address) (runs: 1000, μ: 212735, ~: 212735)
[PASS] test_reverts_impl_initialize() (gas: 4342635)
[PASS] test_reverts_initReserve_not_poolConfigurator(address) (runs: 1000, μ: 24906, ~: 24906)
[PASS] test_reverts_modifiers_not_poolConfigurator(address) (runs: 1000, μ: 98895, ~: 98895)
[PASS] test_reverts_new_Pool_invalidAddressesProvider() (gas: 4442888)
[PASS] test_reverts_setUserEmode_0_bad_hf() (gas: 949578)
[PASS] test_reverts_setUserUseReserveAsCollateralOnBehalfOf_caller_not_position_manager(address) (runs: 1000, μ: 404622, ~: 404622)
[PASS] test_reverts_setUserUseReserveAsCollateral_false_hf_lower_lqt() (gas: 571193)
[PASS] test_reverts_setUserUseReserveAsCollateral_true_ltv_zero() (gas: 270556)
[PASS] test_reverts_setUserUseReserveAsCollateral_true_reserve_inactive() (gas: 186187)
[PASS] test_reverts_setUserUseReserveAsCollateral_true_reserve_paused() (gas: 264225)
[PASS] test_reverts_setUserUseReserveAsCollateral_true_user_balance_zero() (gas: 50055)
[PASS] test_reverts_setUserUseReserveAsCollateral_true_user_isolation_mode() (gas: 759988)
[PASS] test_setLiquidationGracePeriod(uint40) (runs: 1000, μ: 36657, ~: 36758)
[PASS] test_setLiquidationGracePeriod_assetNotListed(uint40) (runs: 1000, μ: 26612, ~: 26612)
[PASS] test_setUserEModeOnBehalfOf() (gas: 244549)
[PASS] test_setUserEmode() (gas: 218212)
[PASS] test_setUserEmode_twice() (gas: 356490)
[PASS] test_setUserEmode_twice_inconsistent_category() (gas: 955664)
[PASS] test_setUserUseReserveAsCollateralOnBehalfOf_false() (gas: 392928)
[PASS] test_setUserUseReserveAsCollateralOnBehalfOf_true() (gas: 419333)
[PASS] test_setUserUseReserveAsCollateral_false() (gas: 218570)
[PASS] test_setUserUseReserveAsCollateral_true() (gas: 250570)
[PASS] test_updateBridgeProtocolFee() (gas: 231)
Suite result: ok. 54 passed; 0 failed; 0 skipped; finished in 7.62s (7.59s CPU time)

Ran 11 tests for tests/protocol/libraries/math/MathUtils.t.sol:MathUtilsTests
[PASS] testMulDivCeil_NoRemainder() (gas: 3231)
[PASS] testMulDivCeil_RevertOnDivByZero() (gas: 3150)
[PASS] testMulDivCeil_RevertOnOverflow() (gas: 3166)
[PASS] testMulDivCeil_WithRemainder() (gas: 3230)
[PASS] testMulDivCeil_ZeroAOrB() (gas: 3779)
[PASS] test_calculateCompoundInterest_1() (gas: 4825)
[PASS] test_calculateCompoundInterest_2() (gas: 5264)
[PASS] test_calculateCompoundInterest_edge() (gas: 4972)
[PASS] test_calculateCompoundInterest_shouldNotOverflow() (gas: 4038)
[PASS] test_calculateLinearInterest() (gas: 4652)
[PASS] test_constants() (gas: 3159)
Suite result: ok. 11 passed; 0 failed; 0 skipped; finished in 1.68ms (231.59µs CPU time)

Ran 17 tests for tests/extensions/paraswap-adapters/ParaswapAdapters.t.sol:ParaswapAdaptersTest
[PASS] test_rescueTokens() (gas: 196269)
[PASS] test_reverts_offset_out_of_range_swap_liquidity_permit_flashloan() (gas: 726138)
[PASS] test_reverts_swapAndDeposit_offset() (gas: 795709)
[PASS] test_reverts_swapAndRepay_offset_out_of_range() (gas: 890876)
[PASS] test_reverts_withdrawAndSwap_offset_out_of_range() (gas: 775701)
[PASS] test_swapAndDeposit() (gas: 875433)
[PASS] test_swapAndDeposit_permit() (gas: 922946)
[PASS] test_swapAndRepay() (gas: 963086)
[PASS] test_swapAndRepay_flashloan() (gas: 1026891)
[PASS] test_swapAndRepay_flashloan_permit() (gas: 1070015)
[PASS] test_swapAndRepay_no_collateral_leftovers() (gas: 1011992)
[PASS] test_swapAndRepay_permit() (gas: 1010447)
[PASS] test_swap_liquidity_flashloan() (gas: 955950)
[PASS] test_swap_liquidity_permit_flashloan() (gas: 998968)
[PASS] test_withdrawAndSwap() (gas: 793147)
[PASS] test_withdrawAndSwap_permit() (gas: 836738)
[PASS] test_withdrawSwapAdapter_reverts_flashloan() (gas: 518857)
Suite result: ok. 17 passed; 0 failed; 0 skipped; finished in 67.52ms (37.79ms CPU time)

Ran 17 tests for tests/protocol/libraries/math/PercentageMath.t.sol:PercentageMathTests
[PASS] testPercentDivCeil_Exact() (gas: 3267)
[PASS] testPercentDivCeil_RevertOnDivByZero() (gas: 3145)
[PASS] testPercentDivCeil_RevertOnOverflow() (gas: 3178)
[PASS] testPercentDivCeil_WithCeilNeeded() (gas: 3244)
[PASS] testPercentMulCeil_Exact() (gas: 3250)
[PASS] testPercentMulCeil_RevertOnOverflow() (gas: 3212)
[PASS] testPercentMulCeil_WithRoundingUp() (gas: 3292)
[PASS] testPercentMulCeil_ZeroValueOrPercent() (gas: 3770)
[PASS] testPercentMulFloor_Exact() (gas: 3200)
[PASS] testPercentMulFloor_RevertOnOverflow() (gas: 3147)
[PASS] testPercentMulFloor_WithTruncation() (gas: 3243)
[PASS] testPercentMulFloor_ZeroInputs() (gas: 3673)
[PASS] test_constants() (gas: 4281)
[PASS] test_percentDiv() (gas: 4274)
[PASS] test_percentDiv_fuzz(uint256,uint256) (runs: 1000, μ: 3857, ~: 3893)
[PASS] test_percentMul() (gas: 4193)
[PASS] test_percentMul_fuzz(uint256,uint256) (runs: 1000, μ: 3625, ~: 3726)
Suite result: ok. 17 passed; 0 failed; 0 skipped; finished in 43.64ms (41.74ms CPU time)

Ran 18 tests for tests/protocol/pool/Pool.Borrow.t.sol:PoolBorrowTests
[PASS] test_borrow_variable_in_isolation() (gas: 583113)
[PASS] test_reverts_borrow_DebtCeilingExceeded() (gas: 432253)
[PASS] test_reverts_borrow_InconsistentEModeCategory() (gas: 416480)
[PASS] test_reverts_borrow_cap() (gas: 290070)
[PASS] test_reverts_borrow_collateral_balance_zero() (gas: 219600)
[PASS] test_reverts_borrow_collateral_can_not_cover() (gas: 404005)
[PASS] test_reverts_borrow_debt_ceiling() (gas: 681248)
[PASS] test_reverts_borrow_hf_lt_1() (gas: 573283)
[PASS] test_reverts_borrow_invalidAmount() (gas: 61967)
[PASS] test_reverts_borrow_not_borrowable_isolation() (gas: 414818)
[PASS] test_reverts_borrow_reserveFrozen() (gas: 129062)
[PASS] test_reverts_borrow_reserveInactive() (gas: 135962)
[PASS] test_reverts_borrow_reservePaused() (gas: 99991)
[PASS] test_reverts_borrow_sentinel_oracle_down() (gas: 302921)
[PASS] test_reverts_borrow_sioled_borrowing_violation() (gas: 668459)
[PASS] test_reverts_deprecated_stable_borrow() (gas: 387287)
[PASS] test_reverts_variable_borrow_transferred_funds() (gas: 365730)
[PASS] test_variable_borrow() (gas: 359389)
Suite result: ok. 18 passed; 0 failed; 0 skipped; finished in 42.25ms (13.62ms CPU time)

Ran 11 tests for tests/protocol/pool/Pool.Liquidations.CloseFactor.t.sol:PoolLiquidationCloseFactorTests
[PASS] test_fuzz_hf_gt_095_supply_gt_threshold_closeFactorShouldBe50(uint256,uint256) (runs: 1000, μ: 832266, ~: 832329)
Logs:
  Bound result 7332792670153394187698
  Bound result 972023210670793068

[PASS] test_fuzz_hf_gt_095_supply_lt_threshold_closeFactorShouldBe100(uint256,uint256) (runs: 1000, μ: 797566, ~: 797618)
Logs:
  Bound result 10000000000000002
  Bound result 960000001549980679

[PASS] test_fuzz_hf_lte_095_supply_gt_threshold_closeFactorShouldBe100(uint256,uint256) (runs: 1000, μ: 794903, ~: 792495)
Logs:
  Bound result 998888888890774706418
  Bound result 940000000000000625

[PASS] test_hf_gt_095_borrow_gt_threshold_collateral_lt_threshold_closeFactorShouldBe100() (gas: 1041880)
[PASS] test_hf_gt_095_supply_gt_threshold_closeFactorShouldBe50() (gas: 830938)
Logs:
  Bound result 100000000000000000000
  Bound result 970000000000000000

[PASS] test_hf_gt_095_supply_lt_threshold_closeFactorShouldBe100() (gas: 796139)
Logs:
  Bound result 500000000000000000
  Bound result 970000000000000000

[PASS] test_hf_helper(uint256) (runs: 1000, μ: 530904, ~: 530942)
Logs:
  Bound result 990000000000864001

[PASS] test_hf_lte_095_supply_gt_threshold_closeFactorShouldBe100() (gas: 796270)
Logs:
  Bound result 100000000000000000000
  Bound result 940000000000000000

[PASS] test_liquidationdataprovider_edge_range() (gas: 952600)
[PASS] test_liquidationdataprovider_edge_range_reverse() (gas: 1003711)
[PASS] test_shouldRevertIfCloseFactorIs100ButCollateralIsBelowThreshold() (gas: 799733)
Suite result: ok. 11 passed; 0 failed; 0 skipped; finished in 10.70s (10.66s CPU time)

Ran 15 tests for tests/misc/rates/RateStrategy.t.sol:RateStrategyBaseTests
[PASS] test_getInterestRateDataBps((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 39991, ~: 39905)
Logs:
  Bound result 1191
  Bound result 8

[PASS] test_getInterestRateDataRay((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 40982, ~: 40852)
Logs:
  Bound result 9818
  Bound result 13

[PASS] test_getMaxVariableBorrowRate((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 38416, ~: 38324)
Logs:
  Bound result 1059
  Bound result 242

[PASS] test_initialization() (gas: 26143)
[PASS] test_new_DefaultReserveInterestRateStrategy_wrong_provider() (gas: 41972)
[PASS] test_new_SetReserveInterestRateParams((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 52097, ~: 51970)
Logs:
  Bound result 8286
  Bound result 159

[PASS] test_new_SetReserveInterestRateParams_override_method((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 49308, ~: 49178)
Logs:
  Bound result 3807
  Bound result 1987

[PASS] test_new_SetReserveInterestRateParams_when_not_configurator((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 25930, ~: 25839)
Logs:
  Bound result 1063
  Bound result 28

[PASS] test_overflow_liquidity_rates() (gas: 55325)
[PASS] test_overflow_variable_rates() (gas: 641714)
[PASS] test_reverts_SetReserveInterestRateParams_when_gt_maxRate((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 33629, ~: 33629)
[PASS] test_reverts_SetReserveInterestRateParams_when_gt_max_op((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 30448, ~: 30448)
[PASS] test_reverts_SetReserveInterestRateParams_when_lt_min_op((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 30524, ~: 30524)
[PASS] test_reverts_SetReserveInterestRateParams_when_reserve_0((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 27023, ~: 27023)
[PASS] test_reverts_SetReserveInterestRateParams_when_slope1_gt_slope2(uint16,uint32,uint32,uint32) (runs: 1000, μ: 32463, ~: 32463)
Suite result: ok. 15 passed; 0 failed; 0 skipped; finished in 2.47s (2.44s CPU time)

Ran 15 tests for tests/extensions/RevenueSplitter.t.sol:RevenueSplitterTest
[PASS] test_constructor() (gas: 15303)
[PASS] test_constructor_fuzzing(uint16) (runs: 1000, μ: 457649, ~: 457649)
[PASS] test_constructor_revert_invalid_split_percentage() (gas: 174509)
[PASS] test_splitFund_oneToken() (gas: 410660)
[PASS] test_splitFund_reverts_randomAddress() (gas: 51282)
[PASS] test_splitFund_zeroAmount_noOp() (gas: 371538)
[PASS] test_splitFund_zeroFunds_noOp() (gas: 50848)
[PASS] test_splitFund_zeroTokens_noOp() (gas: 370457)
[PASS] test_splitFunds_fixed() (gas: 447612)
[PASS] test_splitFunds_fuzz_max(uint256,uint256) (runs: 1000, μ: 448016, ~: 449782)
[PASS] test_splitFunds_fuzz_realistic(uint256,uint256) (runs: 1000, μ: 446480, ~: 448247)
[PASS] test_splitNativeFund_fixedAmount() (gas: 100484)
[PASS] test_splitNativeFund_walletNotAcceptingFunds() (gas: 537581)
[PASS] test_splitNativeFund_zeroAmount_noOp() (gas: 29728)
[PASS] test_splitNativeFunds_fuzz_max(uint256) (runs: 1000, μ: 100738, ~: 101899)
Suite result: ok. 15 passed; 0 failed; 0 skipped; finished in 2.76s (2.76s CPU time)

Ran 18 tests for tests/rewards/RewardsController.t.sol:RewardsControllerTest
[PASS] test_accrueRewards() (gas: 910478)
[PASS] test_claimAllRewards() (gas: 865825)
[PASS] test_claimAllRewardsOnBehalf() (gas: 899518)
[PASS] test_claimAllRewardsToSelf() (gas: 865452)
[PASS] test_claimRewards() (gas: 862758)
[PASS] test_claimRewardsOnBehalf() (gas: 901238)
[PASS] test_claimRewardsToSelf() (gas: 862437)
[PASS] test_claimRewards_partial() (gas: 863073)
[PASS] test_claimRewards_zero() (gas: 619939)
[PASS] test_claimRewards_zero_with_rewards() (gas: 626431)
[PASS] test_configureAssets() (gas: 601049)
[PASS] test_initialize_no_op() (gas: 3614302)
[PASS] test_new_RewardsController() (gas: 3610338)
[PASS] test_setClaimer() (gas: 58207)
[PASS] test_setDistributionEnd() (gas: 616897)
[PASS] test_setEmissionPerSecond() (gas: 620924)
[PASS] test_setRewardOracle() (gas: 694643)
[PASS] test_setTransferStrategy_PullRewardsTransferStrategy() (gas: 880501)
Suite result: ok. 18 passed; 0 failed; 0 skipped; finished in 50.65ms (21.98ms CPU time)

Ran 5 tests for tests/rewards/StakedTokenTransferStrategy.t.sol:StakedTokenTransferStrategyTest
[PASS] test_dropApproval() (gas: 18975)
[PASS] test_emergencyTransfer() (gas: 211756)
[PASS] test_getters() (gas: 18719)
[PASS] test_performTransfer() (gas: 22017)
[PASS] test_renewApproval() (gas: 23091)
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 27.15ms (1.61ms CPU time)

Ran 3 tests for tests/gas/StataToken.gas.t.sol:StataToken_gas_Tests
[PASS] test_claimRewards() (gas: 2772084)
[PASS] test_deposit() (gas: 704923)
[PASS] test_depositATokens() (gas: 901262)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 39.62ms (6.99ms CPU time)

Ran 2 tests for tests/extensions/stata-token/StataTokenV2Getters.sol:StataTokenV2GettersTest
[PASS] test_getters() (gas: 69928)
[PASS] test_initializeShouldRevert() (gas: 21681)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 26.44ms (224.40µs CPU time)

Ran 10 tests for tests/extensions/stata-token/StataTokenV2Pausable.t.sol:StataTokenV2PausableTest
[PASS] test_canPause() (gas: 26789)
[PASS] test_canPause_shouldReturnFalse(address) (runs: 1000, μ: 27282, ~: 27282)
[PASS] test_claimingRewards_shouldRevert() (gas: 541016)
[PASS] test_deposit_shouldRevert() (gas: 464775)
[PASS] test_mint_shouldRevert() (gas: 468841)
[PASS] test_redeem_shouldRevert() (gas: 560741)
[PASS] test_setPaused_shouldRevertForInvalidCaller(address) (runs: 1000, μ: 30340, ~: 30340)
[PASS] test_setPaused_shouldSucceedForOwner() (gas: 53839)
[PASS] test_transfer_shouldRevert() (gas: 538932)
[PASS] test_withdraw_shouldRevert() (gas: 556592)
Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 141.87ms (114.61ms CPU time)

Ran 3 tests for tests/extensions/stata-token/StataTokenV2Permit.sol:StataTokenV2PermitTest
[PASS] test_permit() (gas: 89789)
[PASS] test_permit_expired() (gas: 37844)
[PASS] test_permit_invalidSigner() (gas: 66419)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 29.45ms (1.15ms CPU time)

Ran 17 tests for tests/extensions/stata-token/ERC20AaveLMUpgradable.t.sol:ERC20AaveLMUpgradableTest
[PASS] test_7201() (gas: 3355)
[PASS] test_claimRewards(uint256,uint32,uint88,uint32) (runs: 1000, μ: 836736, ~: 797985)
Logs:
  Bound result 52387360647651517150697015643
  Bound result 6182
  Bound result 6623
  Bound result 3354

[PASS] test_claimRewardsOnBehalfOf_self(uint256,uint32,uint88,uint32) (runs: 1000, μ: 836732, ~: 798200)
Logs:
  Bound result 304286450254706778918622
  Bound result 65193
  Bound result 9342428
  Bound result 53981455784719867

[PASS] test_claimRewardsOnBehalfOf_shouldRevertForInvalidClaimer(uint256,uint32,uint88,uint32) (runs: 1000, μ: 772365, ~: 774264)
Logs:
  Bound result 79228162513264337593543959225
  Bound result 566827
  Bound result 4882
  Bound result 757880164

[PASS] test_claimRewardsOnBehalfOf_validClaimer(uint256,uint32,uint88,uint32) (runs: 1000, μ: 867646, ~: 830581)
Logs:
  Bound result 56087397729916784276457681301
  Bound result 34315
  Bound result 19913169
  Bound result 9019205275436995629877

[PASS] test_claimRewardsToSelf(uint256,uint32,uint88,uint32) (runs: 1000, μ: 836658, ~: 797899)
Logs:
  Bound result 1000000000000000000
  Bound result 1141367294
  Bound result 871
  Bound result 1357

[PASS] test_claimableRewards(uint256,uint32,uint88,uint32) (runs: 1000, μ: 773516, ~: 775178)
Logs:
  Bound result 71768289574460797652397033378
  Bound result 2008986864
  Bound result 32
  Bound result 765040

[PASS] test_collectAndUpdateRewards(uint256,uint32,uint88,uint32) (runs: 1000, μ: 817208, ~: 794281)
Logs:
  Bound result 54358015596191323620755778235
  Bound result 164
  Bound result 721386020
  Bound result 762490062979793

[PASS] test_correctAccountingForDelayedRegistration() (gas: 823792)
[PASS] test_getReferenceAsset() (gas: 12902)
[PASS] test_isRegisteredRewardToken() (gas: 633916)
[PASS] test_noRewardsInitialized() (gas: 39220)
[PASS] test_noopWhenNotInitialized() (gas: 52782)
[PASS] test_rewardTokens() (gas: 632057)
[PASS] test_transfer(uint256,uint32,uint88,uint32,address,uint256) (runs: 1000, μ: 850473, ~: 864680)
Logs:
  Bound result 79228162513264337593543959744
  Bound result 11345
  Bound result 435018
  Bound result 18365

[PASS] test_transfer_toSelf(uint256,uint32,uint88,uint32) (runs: 1000, μ: 805620, ~: 798820)
Logs:
  Bound result 79228162513324172538560580750
  Bound result 80495615
  Bound result 93
  Bound result 655370148243733713

[PASS] test_zeroIncentivesController() (gas: 37689)
Suite result: ok. 17 passed; 0 failed; 0 skipped; finished in 15.57s (15.54s CPU time)

Ran 4 tests for tests/extensions/stata-token/StataTokenV2Rescuable.sol:StataTokenV2RescuableTest
[PASS] test_rescuable_shouldNotCauseInsolvency(uint256,uint256) (runs: 1000, μ: 755085, ~: 755089)
[PASS] test_rescuable_shouldRevertForInvalidCaller() (gas: 189988)
[PASS] test_rescuable_shouldTransferAssetsToCollector() (gas: 216923)
[PASS] test_rescuable_shouldWorkForAToken() (gas: 433772)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 2.65s (2.63s CPU time)

Ran 25 tests for tests/protocol/pool/Pool.Liquidations.t.sol:PoolLiquidationTests
[PASS] test_deficit_increased_after_liquidate_bad_debt() (gas: 802532)
[PASS] test_full_liquidate_atokens_edgecase_collateral_not_enough_to_cover_fee() (gas: 462257)
[PASS] test_full_liquidate_atokens_multiple_variable_borrows() (gas: 966802)
[PASS] test_full_liquidate_multiple_supplies_and_variable_borrows() (gas: 1142693)
[PASS] test_full_liquidate_multiple_variable_borrows() (gas: 1012515)
[PASS] test_liquidate_borrow_bad_debt() (gas: 811802)
[PASS] test_liquidate_borrow_burn_multiple_assets_bad_debt() (gas: 1147314)
[PASS] test_liquidate_emode_position_without_emode_oracle() (gas: 1044521)
[PASS] test_liquidate_isolated_position() (gas: 902423)
[PASS] test_liquidate_variable_borrow_no_fee() (gas: 848908)
[PASS] test_liquidate_variable_borrow_repro() (gas: 1030578)
[PASS] test_liquidate_variable_borrow_same_collateral_and_borrow() (gas: 670490)
[PASS] test_liquidation_when_grace_period_disabled(uint40) (runs: 1000, μ: 851830, ~: 852152)
Logs:
  Bound result 1692

[PASS] test_liquidation_with_liquidation_grace_period_collateral_active(uint40) (runs: 1000, μ: 1009189, ~: 1012199)
Logs:
  Bound result 9894

[PASS] test_liquidation_with_liquidation_grace_period_debt_active(uint40) (runs: 1000, μ: 1009397, ~: 1012099)
Logs:
  Bound result 9571

[PASS] test_liquidation_with_liquidation_grace_period_debt_collateral_active(uint40) (runs: 1000, μ: 1022027, ~: 1026044)
Logs:
  Bound result 3017

[PASS] test_partial_liquidate_atokens_variable_borrow() (gas: 889476)
[PASS] test_partial_liquidate_variable_borrow() (gas: 847416)
[PASS] test_reverts_liquidation_collateral_not_active() (gas: 622140)
[PASS] test_reverts_liquidation_hf_gt_liquidation_threshold() (gas: 445253)
[PASS] test_reverts_liquidation_invalid_borrow() (gas: 580319)
[PASS] test_reverts_liquidation_oracle_sentinel_on() (gas: 338519)
[PASS] test_reverts_liquidation_reserveInactive() (gas: 174938)
[PASS] test_reverts_liquidation_reservePaused() (gas: 141768)
[PASS] test_self_liquidate_position_shouldRevert() (gas: 666820)
Suite result: ok. 25 passed; 0 failed; 0 skipped; finished in 13.70s (13.67s CPU time)

Ran 22 tests for tests/gas/Pool.Operations.gas.t.sol:PoolOperations_gas_Tests
[PASS] test_borrow() (gas: 924894)
[PASS] test_borrow_onBehalfOf() (gas: 1018860)
[PASS] test_flashLoanSimple() (gas: 611788)
[PASS] test_flashLoan_with_one_asset() (gas: 741128)
[PASS] test_flashLoan_with_one_asset_with_borrowing() (gas: 1168674)
[PASS] test_flashLoan_with_two_assets() (gas: 1042785)
[PASS] test_flashLoan_with_two_assets_with_borrowing() (gas: 1883678)
[PASS] test_liquidationCall_deficit() (gas: 1349974)
[PASS] test_liquidationCall_deficitInAdditionalReserve() (gas: 1712260)
[PASS] test_liquidationCall_full() (gas: 1350041)
[PASS] test_liquidationCall_partial() (gas: 1336061)
[PASS] test_liquidationCall_receive_ATokens_full() (gas: 1347367)
[PASS] test_liquidationCall_receive_ATokens_partial() (gas: 1333151)
[PASS] test_mintToTreasury_one_asset() (gas: 969940)
[PASS] test_mintToTreasury_one_asset_zero_amount() (gas: 46525)
[PASS] test_mintToTreasury_two_assets() (gas: 1953671)
[PASS] test_mintToTreasury_two_assets_zero_amount() (gas: 54093)
[PASS] test_repay() (gas: 1292005)
[PASS] test_repay_with_ATokens() (gas: 1134430)
[PASS] test_supply() (gas: 1773385)
[PASS] test_withdraw() (gas: 784945)
[PASS] test_withdraw_with_active_borrows() (gas: 933621)
Suite result: ok. 22 passed; 0 failed; 0 skipped; finished in 78.89ms (45.80ms CPU time)

Ran 3 tests for tests/gas/Pool.OperationsComposition.gas.t.sol:PoolOperationsComposition_gas_Tests
[PASS] test_batchLiquidation() (gas: 2174886)
[PASS] test_repayAndWithdraw() (gas: 1273308)
[PASS] test_supplyAndBorrow() (gas: 658519)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 43.48ms (8.55ms CPU time)

Ran 17 tests for tests/protocol/tokenization/VariableDebtToken.t.sol:VariableDebtTokenEventsTests
[PASS] test_balanceOf() (gas: 230518)
[PASS] test_cancel_delegationWithSig() (gas: 102832)
[PASS] test_delegationWithSig() (gas: 95792)
[PASS] test_initialize_VariableDebtToken((uint8,string,string,string,string,address,address,address,bool)) (runs: 1000, μ: 3431990, ~: 3431117)
Logs:
  Bound result 6

[PASS] test_mint_variableDebt_caller_alice((uint8,string,string,string,string,address,address,address,bool)) (runs: 1000, μ: 3505808, ~: 3504892)
Logs:
  Bound result 9

[PASS] test_mint_variableDebt_caller_bob_onBehalf_alice((uint8,string,string,string,string,address,address,address,bool)) (runs: 1000, μ: 3521412, ~: 3522061)
Logs:
  Bound result 23

[PASS] test_new_VariableDebtToken_implementation() (gas: 1577216)
[PASS] test_partial_burn_variableDebt((uint8,string,string,string,string,address,address,address,bool)) (runs: 1000, μ: 3521717, ~: 3520494)
Logs:
  Bound result 7

[PASS] test_reverts_OperationNotSupported() (gas: 1593730)
[PASS] test_reverts_bad_expiration_delegationWithSig() (gas: 34153)
[PASS] test_reverts_bad_nonce_delegationWithSig() (gas: 111764)
[PASS] test_reverts_initialize_pool_do_not_match((uint8,string,string,string,string,address,address,address,bool)) (runs: 1000, μ: 2767566, ~: 2767490)
Logs:
  Bound result 9

[PASS] test_reverts_zero_address_delegationWithSig() (gas: 33544)
[PASS] test_scaledBalanceOf() (gas: 286182)
[PASS] test_totalScaledSupply() (gas: 326506)
[PASS] test_totalSupply() (gas: 326479)
[PASS] test_total_burn_variableDebt((uint8,string,string,string,string,address,address,address,bool)) (runs: 1000, μ: 3522705, ~: 3520496)
Logs:
  Bound result 6

Suite result: ok. 17 passed; 0 failed; 0 skipped; finished in 8.33s (8.31s CPU time)

Ran 4 tests for tests/protocol/tokenization/VariableDebtTokenRounding.t.sol:VariableDebtTokenRoundingTest
[PASS] test_balanceShouldRoundUp() (gas: 48195)
[PASS] test_borrowShouldRoundUp() (gas: 236219)
[PASS] test_repayShouldRoundDown() (gas: 346113)
[PASS] test_totalSupplyShouldRoundUp() (gas: 44368)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 31.24ms (1.87ms CPU time)

Ran 3 tests for tests/protocol/tokenization/VariableDebtToken_MintOnBehalf.t.sol:VariableDebtToken_MintOnBehalfTests
[PASS] test_mint(uint128,uint256) (runs: 1000, μ: 87931, ~: 88023)
Logs:
  Bound result 99999000000000000000000000005802
  Bound result 1000000000000009071

[PASS] test_mint_shouldRevertIfSenderInsufficientAllowance() (gas: 48975)
[PASS] test_mint_shouldRevertIfSenderIsNotApproved() (gas: 22298)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 233.69ms (208.01ms CPU time)

Ran 30 tests for tests/protocol/libraries/math/WadRayMath.t.sol:WadRayMathTests
[PASS] testRayDivCeil_Exact() (gas: 3273)
[PASS] testRayDivCeil_RevertOnDivByZero() (gas: 3122)
[PASS] testRayDivCeil_RevertOnOverflow() (gas: 3179)
[PASS] testRayDivCeil_WithCeil() (gas: 3283)
[PASS] testRayDivCeil_ZeroNumerator() (gas: 3236)
[PASS] testRayDivFloor_Exact() (gas: 3289)
[PASS] testRayDivFloor_RevertOnDivByZero() (gas: 3188)
[PASS] testRayDivFloor_RevertOnOverflow() (gas: 3135)
[PASS] testRayDivFloor_Truncation() (gas: 3279)
[PASS] testRayDivFloor_ZeroNumerator() (gas: 3254)
[PASS] testRayMulCeil_Exact() (gas: 3225)
[PASS] testRayMulCeil_RevertOnOverflow() (gas: 3213)
[PASS] testRayMulCeil_WithCeil() (gas: 3220)
[PASS] testRayMulCeil_Zero() (gas: 3781)
[PASS] testRayMulFloor_Exact() (gas: 3290)
[PASS] testRayMulFloor_RevertOnOverflow() (gas: 3147)
[PASS] testRayMulFloor_Truncation() (gas: 3216)
[PASS] testRayMulFloor_Zero() (gas: 3708)
[PASS] test_constants() (gas: 5771)
[PASS] test_rayDiv() (gas: 4844)
[PASS] test_rayMul() (gas: 4283)
[PASS] test_rayToWad() (gas: 4217)
[PASS] test_rayToWad_fuzz(uint256) (runs: 1000, μ: 3937, ~: 3885)
[PASS] test_wadDiv() (gas: 4835)
[PASS] test_wadDiv_fuzzing(uint256,uint256) (runs: 1000, μ: 3782, ~: 3850)
[PASS] test_wadMul() (gas: 4195)
[PASS] test_wadMul_edge() (gas: 4230)
[PASS] test_wadMul_fuzzing(uint256,uint256) (runs: 1000, μ: 3711, ~: 3814)
[PASS] test_wadToRay() (gas: 4160)
[PASS] test_wadToRay_fuzz(uint256) (runs: 1000, μ: 3885, ~: 3947)
Suite result: ok. 30 passed; 0 failed; 0 skipped; finished in 71.29ms (69.72ms CPU time)

Ran 15 tests for tests/helpers/WrappedTokenGateway.t.sol:WrappedTokenGatewayTests
[PASS] test_borrowDelegateApprove_repay() (gas: 458333)
[PASS] test_borrowVariableDebtWeth_repayWithEth() (gas: 783865)
[PASS] test_borrowVariableDebtWeth_repayWithEth_mismatchedValues() (gas: 775926)
[PASS] test_depositNativeEthInPool() (gas: 249434)
[PASS] test_fallback_revert() (gas: 10080)
[PASS] test_getWETHAddress() (gas: 10589)
[PASS] test_ownerCanRescueEth() (gas: 25215)
[PASS] test_ownerCanRescueTokens() (gas: 96942)
[PASS] test_sendEthFallback_revert() (gas: 16724)
[PASS] test_sendEth_revert() (gas: 16601)
[PASS] test_withdrawEth_full() (gas: 376951)
[PASS] test_withdrawEth_partial() (gas: 394939)
[PASS] test_withdrawEth_permit() (gas: 429761)
[PASS] test_withdrawEth_permit_frontrunRegression() (gas: 430688)
[PASS] test_withdrawEth_permit_full() (gas: 407940)
Suite result: ok. 15 passed; 0 failed; 0 skipped; finished in 43.01ms (16.78ms CPU time)

Ran 1 test for tests/gas/WrappedTokenGatewayV3.gas.t.sol:WrappedTokenGatewayV3_gas_Tests
[PASS] test_flow() (gas: 926818)
Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 34.31ms (1.82ms CPU time)

Ran 11 tests for tests/protocol/pool/Pool.EMode.sol:PoolEModeTests
[PASS] test_borrowing_shouldRevert_ifNonBorrowableOutsideEmode(uint256) (runs: 1000, μ: 506751, ~: 506852)
Logs:
  Bound result 20282409603650670423947695286016

[PASS] test_getUserAccountData_shouldReflectEmodeParams() (gas: 446626)
[PASS] test_getUserAccountData_shouldReflectMixedCollateral() (gas: 637824)
[PASS] test_getUserEMode_shouldReflectEMode() (gas: 193936)
[PASS] test_liquidations_shouldApplyEModeLBForEmodeAssets(uint256) (runs: 1000, μ: 1067620, ~: 1067723)
Logs:
  Bound result 20282409603650670423947251287003

[PASS] test_reenterSameEmode_shouldSucceed() (gas: 202775)
[PASS] test_setUserEMode_shouldAllowSwitchingIfNoBorrows(uint8) (runs: 1000, μ: 281432, ~: 285051)
Logs:
  Bound result 2
  Bound result 0

[PASS] test_setUserEMode_shouldRevertForNonExistingEmode() (gas: 32306)
[PASS] test_setUserEmode_shouldAllowSwitchingWhenAssetIsBorrowableInEmode(uint104) (runs: 1000, μ: 986707, ~: 986916)
Logs:
  Bound result 137091726683033039083

[PASS] test_setUserEmode_shouldRevertIfAssetNoLongerBorrowable(uint104) (runs: 1000, μ: 895631, ~: 895848)
Logs:
  Bound result 20282409603650670423951546187777

[PASS] test_setUserEmode_shouldRevertIfHfWouldFallBelow1(uint104) (runs: 1000, μ: 948611, ~: 948823)
Logs:
  Bound result 20282409603650670423947251295577

Suite result: ok. 11 passed; 0 failed; 0 skipped; finished in 8.63s (8.60s CPU time)

Ran 16 tests for tests/protocol/pool/Pool.Repay.t.sol:PoolRepayTests
[PASS] test_full_repay_borrow_variable_in_isolation() (gas: 579243)
[PASS] test_partial_repay_borrow_variable_in_isolation() (gas: 652325)
[PASS] test_repayWithATokens_full_collateral_variable_borrow() (gas: 613837)
[PASS] test_repayWithATokens_full_variable_borrow() (gas: 400711)
[PASS] test_repayWithATokens_fuzz_collateral_variable_borrow(uint256,uint32) (runs: 1000, μ: 606434, ~: 606942)
[PASS] test_repayWithATokens_shouldRevertIfUnhealthyAfterRepayment() (gas: 358749)
[PASS] test_repayWithPermit(uint128,uint128,uint128,uint128,uint128) (runs: 1000, μ: 582905, ~: 583334)
Logs:
  Bound result 3026403
  Bound result 1048673
  Bound result 459462
  Bound result 127486

[PASS] test_repayWithPermit_not_failing_if_permit_was_used(uint128,uint128,uint128,uint128,uint128) (runs: 1000, μ: 588736, ~: 589060)
Logs:
  Bound result 610807512869223925970760151
  Bound result 417106382817157361044914450
  Bound result 247718575890
  Bound result 130260019837

[PASS] test_repayWithPermit_should_revert_if_permit_is_less_then_repay_amount(uint128,uint128,uint128,uint128,uint128) (runs: 1000, μ: 509111, ~: 509158)
Logs:
  Bound result 400628333
  Bound result 38945868
  Bound result 11416955
  Bound result 3902407

[PASS] test_repay_full_variable_borrow() (gas: 388655)
[PASS] test_revert_repay_full_stable_borrow() (gas: 317927)
[PASS] test_reverts_borrow_invalidAmount() (gas: 59808)
[PASS] test_reverts_borrow_reserveInactive() (gas: 133168)
[PASS] test_reverts_borrow_reservePaused() (gas: 97325)
[PASS] test_reverts_no_explicit_repay_on_behalf() (gas: 312483)
[PASS] test_reverts_repay_no_debt() (gas: 60003)
Suite result: ok. 16 passed; 0 failed; 0 skipped; finished in 10.12s (10.09s CPU time)

Ran 4 tests for tests/protocol/pool/Pool.Rounding.t.sol:PoolRoundingTests
[PASS] test_borrowCapShouldRoundUp() (gas: 482952)
[PASS] test_debtBalanceInBaseCurrencyShouldRoundUp() (gas: 422717)
[PASS] test_reverts_withdrawShouldRoundDownUserBalance() (gas: 304284)
[PASS] test_supplyCapShouldRoundDown() (gas: 413646)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 29.77ms (3.54ms CPU time)

Ran 4 tests for tests/gas/Pool.Setters.gas.t.sol:PoolSetters_gas_Tests
[PASS] test_setUserEMode() (gas: 1724596)
[PASS] test_setUserEModeOnBehalfOf() (gas: 1365330)
[PASS] test_setUserUseReserveAsCollateral() (gas: 575946)
[PASS] test_setUserUseReserveAsCollateralonBehalfOf() (gas: 638258)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 41.80ms (7.25ms CPU time)

Ran 23 tests for tests/protocol/pool/Pool.FlashLoans.t.sol:PoolFlashLoansTests
[PASS] test_flashloan() (gas: 185098)
[PASS] test_flashloan_borrow() (gas: 508431)
[PASS] test_flashloan_borrow_inside_flashloan_and_check_rate_after() (gas: 1695781)
[PASS] test_flashloan_multiple() (gas: 290633)
[PASS] test_flashloan_rounding_accruedToTreasury() (gas: 473885)
[PASS] test_flashloan_rounding_premium() (gas: 176418)
[PASS] test_flashloan_simple() (gas: 152110)
[PASS] test_flashloan_simple_2() (gas: 154194)
[PASS] test_flashloan_simple_borrow_inside_flashloan_and_check_rate_after() (gas: 1129882)
[PASS] test_flashloan_simple_rounding_accruedToTreasury() (gas: 451837)
[PASS] test_flashloan_simple_rounding_premium() (gas: 149866)
[PASS] test_revert_flashloan_borrow_stable() (gas: 207194)
[PASS] test_reverts_flashLoan_invalid_return() (gas: 180453)
[PASS] test_reverts_flashLoan_reserve_inactive() (gas: 143415)
[PASS] test_reverts_flashLoan_reserve_not_flash_loan_enabled() (gas: 102622)
[PASS] test_reverts_flashLoan_reserve_paused() (gas: 99477)
[PASS] test_reverts_flashLoan_same_asset_more_then_once(uint8) (runs: 1000, μ: 158367, ~: 125866)
[PASS] test_reverts_flashLoan_simple_invalid_return() (gas: 144317)
[PASS] test_reverts_flashloan_simple_transferred_funds() (gas: 154183)
[PASS] test_reverts_flashloan_transferred_funds() (gas: 184169)
[PASS] test_reverts_flashloans_eoa() (gas: 108030)
[PASS] test_reverts_supply_flashloan_simple_transfer_withdraw() (gas: 819685)
[PASS] test_reverts_supply_flashloan_transfer_withdraw() (gas: 851519)
Suite result: ok. 23 passed; 0 failed; 0 skipped; finished in 840.25ms (804.94ms CPU time)

Ran 12 tests for tests/gas/Pool.Getters.gas.t.sol:PoolGetters_gas_Tests
[PASS] test_getEModeCategoryCollateralConfig() (gas: 16609)
[PASS] test_getEModeCategoryData() (gas: 20413)
[PASS] test_getLiquidationGracePeriod() (gas: 18196)
[PASS] test_getReserveData() (gas: 41882)
[PASS] test_getUserAccountData() (gas: 30853)
[PASS] test_getUserAccountData_oneSupplies() (gas: 512372)
[PASS] test_getUserAccountData_oneSupplies_with_eMode_enabled() (gas: 805445)
[PASS] test_getUserAccountData_twoSupplies() (gas: 976724)
[PASS] test_getUserAccountData_twoSupplies_oneBorrows() (gas: 1730327)
[PASS] test_getUserAccountData_twoSupplies_oneBorrows_with_eMode_enabled() (gas: 2234672)
[PASS] test_getUserAccountData_twoSupplies_with_eMode_enabled() (gas: 1364229)
[PASS] test_getUserAccountData_with_eMode_enabled() (gas: 213790)
Suite result: ok. 12 passed; 0 failed; 0 skipped; finished in 53.99ms (14.03ms CPU time)

Ran 22 tests for tests/protocol/configuration/PoolAddressesProvider.t.sol:PoolAddressesProviderTests
[PASS] test_PoolDataProvider_changeContract() (gas: 1526240)
[PASS] test_getter_getMarketId() (gas: 1488924)
[PASS] test_new_PoolAddressesProvider() (gas: 1498177)
[PASS] test_reverts_setAddressAsProxy_notAuth() (gas: 1502343)
[PASS] test_reverts_setAddress_noAuth() (gas: 1507539)
[PASS] test_reverts_setters_notOwner() (gas: 1505033)
[PASS] test_setACLManager_changeContract() (gas: 3067366)
[PASS] test_setACLManager_setACLAdmin() (gas: 2301622)
[PASS] test_setAddress() (gas: 1516437)
[PASS] test_setAddressAsProxy_new_proxy() (gas: 2096171)
[PASS] test_setAddressAsProxy_upgrade_proxy() (gas: 2228513)
[PASS] test_setAddress_updateAddress() (gas: 1525575)
[PASS] test_setPoolConfiguratorImpl() (gas: 6133438)
[PASS] test_setPoolConfiguratorImpl_upgrade() (gas: 10529531)
[PASS] test_setPoolDataProvider() (gas: 1516824)
[PASS] test_setPoolImpl() (gas: 7056415)
[PASS] test_setPoolImpl_upgrade() (gas: 11451622)
[PASS] test_setPriceOracle() (gas: 1516981)
[PASS] test_setPriceOracleSentinel() (gas: 1516852)
[PASS] test_setPriceOracleSentinel_changeContract() (gas: 1526317)
[PASS] test_setPriceOracle_changeContract() (gas: 1526578)
[PASS] test_setter_setMarketId() (gas: 1500043)
Suite result: ok. 22 passed; 0 failed; 0 skipped; finished in 43.96ms (11.91ms CPU time)

Ran 28 tests for tests/extensions/stata-token/ERC4626StataTokenUpgradeable.t.sol:ERC4626StataTokenUpgradeableTest
[PASS] test_7201() (gas: 3466)
[PASS] test_convertersAndPreviews(uint128) (runs: 1000, μ: 43704, ~: 43704)
[PASS] test_depositATokens(uint128,uint256,address) (runs: 1000, μ: 517684, ~: 518030)
Logs:
  Bound result 52183110283615215135092534570
  Bound result 6988312003962990364451053856

[PASS] test_depositATokens_self() (gas: 518131)
Logs:
  Bound result 1000000000000000000
  Bound result 1000000000000000000

[PASS] test_depositWithPermit_aToken(uint128,uint256,address) (runs: 1000, μ: 549485, ~: 550036)
Logs:
  Bound result 513185349733820952494881
  Bound result 2787714336712487324769257419145188094667523676820713

[PASS] test_depositWithPermit_emptyPermit_aToken_preApproval(uint128,uint256,address) (runs: 1000, μ: 523912, ~: 524268)
Logs:
  Bound result 72687841688347991367792874705
  Bound result 54970099401391415544149

[PASS] test_depositWithPermit_emptyPermit_underlying_preApproval(uint128,uint256,address) (runs: 1000, μ: 460968, ~: 460831)
Logs:
  Bound result 14434
  Bound result 126794

[PASS] test_depositWithPermit_shouldRevert_emptyPermit_noPreApproval(uint128) (runs: 1000, μ: 393288, ~: 393195)
Logs:
  Bound result 4346
  Bound result 4346

[PASS] test_depositWithPermit_underlying(uint128,uint256,address) (runs: 1000, μ: 482228, ~: 482104)
Logs:
  Bound result 30039
  ...*[Comment body truncated]*

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants