From bd60eb88975228113195c0d4a1df3dabc61afb4d Mon Sep 17 00:00:00 2001 From: Jesus Lanchas Date: Wed, 11 Jun 2025 12:35:04 +0200 Subject: [PATCH 01/24] feat: could use different contracts to get the wstETH ratio --- contracts/oracles/WstETHOracleV2.sol | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/contracts/oracles/WstETHOracleV2.sol b/contracts/oracles/WstETHOracleV2.sol index ebba77d7..94a5b42f 100755 --- a/contracts/oracles/WstETHOracleV2.sol +++ b/contracts/oracles/WstETHOracleV2.sol @@ -11,10 +11,14 @@ import { EXP_SCALE } from "@venusprotocol/solidity-utilities/contracts/constants * @notice This oracle fetches the price of wstETH */ contract WstETHOracleV2 is CorrelatedTokenOracle { + /// @notice Address of stETH + IStETH public immutable STETH; + /// @notice Constructor for the implementation contract. constructor( - address wstETH, address stETH, + address wstETH, + address underlyingToken, address resilientOracle, uint256 annualGrowthRate, uint256 _snapshotInterval, @@ -25,7 +29,7 @@ contract WstETHOracleV2 is CorrelatedTokenOracle { ) CorrelatedTokenOracle( wstETH, - stETH, + underlyingToken, resilientOracle, annualGrowthRate, _snapshotInterval, @@ -34,13 +38,16 @@ contract WstETHOracleV2 is CorrelatedTokenOracle { accessControlManager, _snapshotGap ) - {} + { + ensureNonzeroAddress(stETH); + STETH = IStETH(stETH); + } /** * @notice Gets the stETH for 1 wstETH * @return amount Amount of stETH */ function getUnderlyingAmount() public view override returns (uint256) { - return IStETH(UNDERLYING_TOKEN).getPooledEthByShares(EXP_SCALE); + return STETH.getPooledEthByShares(EXP_SCALE); } } From 6809779b51cd4a4db0ba6c8a6620738165129966 Mon Sep 17 00:00:00 2001 From: web3rover Date: Tue, 17 Jun 2025 14:11:53 +0530 Subject: [PATCH 02/24] fix: fixed ut --- contracts/oracles/WstETHOracleV2.sol | 1 + test/WstETHOracleV2.ts | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/contracts/oracles/WstETHOracleV2.sol b/contracts/oracles/WstETHOracleV2.sol index 94a5b42f..9d889edb 100755 --- a/contracts/oracles/WstETHOracleV2.sol +++ b/contracts/oracles/WstETHOracleV2.sol @@ -4,6 +4,7 @@ pragma solidity 0.8.25; import { IStETH } from "../interfaces/IStETH.sol"; import { CorrelatedTokenOracle } from "./common/CorrelatedTokenOracle.sol"; import { EXP_SCALE } from "@venusprotocol/solidity-utilities/contracts/constants.sol"; +import { ensureNonzeroAddress } from "@venusprotocol/solidity-utilities/contracts/validators.sol"; /** * @title WstETHOracleV2 diff --git a/test/WstETHOracleV2.ts b/test/WstETHOracleV2.ts index aaf79e8f..2bfe600d 100755 --- a/test/WstETHOracleV2.ts +++ b/test/WstETHOracleV2.ts @@ -53,6 +53,7 @@ describe("WstETHOracleV2 unit tests", () => { it("revert if wstETH address is 0", async () => { await expect( WsETHOracleFactory.deploy( + stETHMock.address, addr0000, stETHMock.address, resilientOracleMock.address, @@ -69,8 +70,9 @@ describe("WstETHOracleV2 unit tests", () => { it("revert if stETH address is 0", async () => { await expect( WsETHOracleFactory.deploy( - WSTETH, addr0000, + WSTETH, + stETHMock.address, resilientOracleMock.address, ANNUAL_GROWTH_RATE, SNAPSHOT_UPDATE_INTERVAL, @@ -85,6 +87,7 @@ describe("WstETHOracleV2 unit tests", () => { it("revert if ResilientOracle address is 0", async () => { await expect( WsETHOracleFactory.deploy( + stETHMock.address, WSTETH, stETHMock.address, addr0000, @@ -100,6 +103,7 @@ describe("WstETHOracleV2 unit tests", () => { it("should deploy contract", async () => { wstETHOracle = await WsETHOracleFactory.deploy( + stETHMock.address, WSTETH, stETHMock.address, resilientOracleMock.address, From e4f1e166b9edf8451caaac96e2abc12f04a1074c Mon Sep 17 00:00:00 2001 From: web3rover Date: Tue, 17 Jun 2025 16:46:22 +0530 Subject: [PATCH 03/24] fix: fixed deploy script --- deploy/6-deploy-wstETH-oracle.ts | 41 +++++--------------------------- 1 file changed, 6 insertions(+), 35 deletions(-) diff --git a/deploy/6-deploy-wstETH-oracle.ts b/deploy/6-deploy-wstETH-oracle.ts index f75b9024..e05cdb72 100644 --- a/deploy/6-deploy-wstETH-oracle.ts +++ b/deploy/6-deploy-wstETH-oracle.ts @@ -4,27 +4,14 @@ import { HardhatRuntimeEnvironment } from "hardhat/types"; import { ADDRESSES, addr0000, assets } from "../helpers/deploymentConfig"; -const func: DeployFunction = async ({ - getNamedAccounts, - deployments, - network, - artifacts, -}: HardhatRuntimeEnvironment) => { +const func: DeployFunction = async ({ getNamedAccounts, deployments, network }: HardhatRuntimeEnvironment) => { const { deploy } = deployments; const { deployer } = await getNamedAccounts(); - console.log(`Deployer ${deployer}`); - - const proxyOwnerAddress = network.live ? ADDRESSES[network.name].timelock : deployer; - - const { stETHAddress, wstETHAddress } = ADDRESSES[network.name]; + const { stETHAddress, wstETHAddress, acm } = ADDRESSES[network.name]; const WETHAsset = assets[network.name].find(asset => asset.token === "WETH"); const WETHAddress = WETHAsset?.address ?? addr0000; - const defaultProxyAdmin = await artifacts.readArtifact( - "hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/ProxyAdmin.sol:ProxyAdmin", - ); - const oracle = await ethers.getContract("ResilientOracle"); // Equivalence and NonEquivalence is related to if the oracle will @@ -32,35 +19,19 @@ const func: DeployFunction = async ({ // will get stETH/USD price from secondary market await deploy("WstETHOracle_Equivalence", { - contract: "WstETHOracle", + contract: "WstETHOracleV2", from: deployer, log: true, deterministicDeployment: false, - args: [wstETHAddress, WETHAddress, stETHAddress, oracle.address, true], - proxy: { - owner: proxyOwnerAddress, - proxyContract: "OptimizedTransparentUpgradeableProxy", - viaAdminContract: { - name: "DefaultProxyAdmin", - artifact: defaultProxyAdmin, - }, - }, + args: [stETHAddress, wstETHAddress, WETHAddress, oracle.address, 0, 0, 0, 0, acm, 0], }); await deploy("WstETHOracle_NonEquivalence", { - contract: "WstETHOracle", + contract: "WstETHOracleV2", from: deployer, log: true, deterministicDeployment: false, - args: [wstETHAddress, WETHAddress, stETHAddress, oracle.address, false], - proxy: { - owner: proxyOwnerAddress, - proxyContract: "OptimizedTransparentUpgradeableProxy", - viaAdminContract: { - name: "DefaultProxyAdmin", - artifact: defaultProxyAdmin, - }, - }, + args: [stETHAddress, wstETHAddress, stETHAddress, oracle.address, 0, 0, 0, 0, acm, 0], }); }; From 43179a0ddaaacb52ca3130efcbae9cd36246bb45 Mon Sep 17 00:00:00 2001 From: web3rover Date: Tue, 17 Jun 2025 16:56:15 +0530 Subject: [PATCH 04/24] fix: added caps --- deploy/6-deploy-wstETH-oracle.ts | 43 +++++++++++++++++++++++++++++--- 1 file changed, 40 insertions(+), 3 deletions(-) diff --git a/deploy/6-deploy-wstETH-oracle.ts b/deploy/6-deploy-wstETH-oracle.ts index e05cdb72..aa8821ca 100644 --- a/deploy/6-deploy-wstETH-oracle.ts +++ b/deploy/6-deploy-wstETH-oracle.ts @@ -1,8 +1,17 @@ +import { BigNumber } from "ethers"; +import { parseUnits } from "ethers/lib/utils"; import { ethers } from "hardhat"; import { DeployFunction } from "hardhat-deploy/dist/types"; import { HardhatRuntimeEnvironment } from "hardhat/types"; -import { ADDRESSES, addr0000, assets } from "../helpers/deploymentConfig"; +import { + ADDRESSES, + DAYS_30, + addr0000, + assets, + getSnapshotGap, + increaseExchangeRateByPercentage, +} from "../helpers/deploymentConfig"; const func: DeployFunction = async ({ getNamedAccounts, deployments, network }: HardhatRuntimeEnvironment) => { const { deploy } = deployments; @@ -18,12 +27,29 @@ const func: DeployFunction = async ({ getNamedAccounts, deployments, network }: // assume 1/1 price ration between stETH/ETH or // will get stETH/USD price from secondary market + const wstETH_ANNUAL_GROWTH_RATE = ethers.utils.parseUnits("0.067", 18); // 6.7% + const block = await ethers.provider.getBlock("latest"); + const stETHContract = await ethers.getContractAt("IStETH", stETHAddress); + const exchangeRate = await stETHContract.getPooledEthByShares(parseUnits("1", 18)); + const snapshotGap = BigNumber.from("55"); // 0.55% + await deploy("WstETHOracle_Equivalence", { contract: "WstETHOracleV2", from: deployer, log: true, deterministicDeployment: false, - args: [stETHAddress, wstETHAddress, WETHAddress, oracle.address, 0, 0, 0, 0, acm, 0], + args: [ + stETHAddress, + wstETHAddress, + WETHAddress, + oracle.address, + wstETH_ANNUAL_GROWTH_RATE, + DAYS_30, + increaseExchangeRateByPercentage(exchangeRate, snapshotGap), + block.timestamp, + acm, + getSnapshotGap(exchangeRate, snapshotGap.toNumber()), + ], }); await deploy("WstETHOracle_NonEquivalence", { @@ -31,7 +57,18 @@ const func: DeployFunction = async ({ getNamedAccounts, deployments, network }: from: deployer, log: true, deterministicDeployment: false, - args: [stETHAddress, wstETHAddress, stETHAddress, oracle.address, 0, 0, 0, 0, acm, 0], + args: [ + stETHAddress, + wstETHAddress, + stETHAddress, + oracle.address, + wstETH_ANNUAL_GROWTH_RATE, + DAYS_30, + increaseExchangeRateByPercentage(exchangeRate, snapshotGap), + block.timestamp, + acm, + getSnapshotGap(exchangeRate, snapshotGap.toNumber()), + ], }); }; From 1d2cd33a7385a35c7ae46cfc08a639eb6f2c26ee Mon Sep 17 00:00:00 2001 From: Jesus Lanchas Date: Mon, 23 Jun 2025 10:27:59 +0200 Subject: [PATCH 05/24] docs: vwu-02 --- contracts/oracles/WstETHOracleV2.sol | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contracts/oracles/WstETHOracleV2.sol b/contracts/oracles/WstETHOracleV2.sol index 9d889edb..09428bb1 100755 --- a/contracts/oracles/WstETHOracleV2.sol +++ b/contracts/oracles/WstETHOracleV2.sol @@ -45,8 +45,8 @@ contract WstETHOracleV2 is CorrelatedTokenOracle { } /** - * @notice Gets the stETH for 1 wstETH - * @return amount Amount of stETH + * @notice Gets the amount of underlyingToken for 1 wstETH, assuming that 1 underlyingToken is equivalent to 1 stETH + * @return amount Amount of underlyingToken */ function getUnderlyingAmount() public view override returns (uint256) { return STETH.getPooledEthByShares(EXP_SCALE); From dbf8fc5854632b08e187cf76af876926eb20541f Mon Sep 17 00:00:00 2001 From: Jesus Lanchas Date: Mon, 23 Jun 2025 10:34:17 +0200 Subject: [PATCH 06/24] docs: vwu-01 --- contracts/oracles/WstETHOracleV2.sol | 2 ++ 1 file changed, 2 insertions(+) diff --git a/contracts/oracles/WstETHOracleV2.sol b/contracts/oracles/WstETHOracleV2.sol index 09428bb1..264dea99 100755 --- a/contracts/oracles/WstETHOracleV2.sol +++ b/contracts/oracles/WstETHOracleV2.sol @@ -16,6 +16,8 @@ contract WstETHOracleV2 is CorrelatedTokenOracle { IStETH public immutable STETH; /// @notice Constructor for the implementation contract. + /// @dev The underlyingToken must be correlated so that 1 underlyingToken is equal to 1 stETH, because + /// getUnderlyingAmount() implicitly assumes that constructor( address stETH, address wstETH, From afcbf4b41da9cd2c909a746313e05c1887038087 Mon Sep 17 00:00:00 2001 From: Jesus Lanchas Date: Thu, 26 Jun 2025 11:27:45 +0200 Subject: [PATCH 07/24] docs: add audit for WstETHOracleV2 --- audits/137_wstETHOracleV2_certik_20250623.pdf | Bin 0 -> 3382759 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 audits/137_wstETHOracleV2_certik_20250623.pdf diff --git a/audits/137_wstETHOracleV2_certik_20250623.pdf b/audits/137_wstETHOracleV2_certik_20250623.pdf new file mode 100644 index 0000000000000000000000000000000000000000..73759cb6c7000417ff722b2936ac03a5c9307177 GIT binary patch literal 3382759 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

V(Ha-4cHoeNq>=@SPfgGA=DT3^2oIO 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%0D8fyzvR12{i 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

Pr%%+PUGpnf;6P*A`q&Q6i6 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˰vdA6;+Z7FFMN{nK62Af-rm3=Psq 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

DG~Q#{pAZL8bIXa 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 xIB)t!$K38US68ay;Of{E}7F*>(C9 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

  • n+f;<$T$ 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 z zs~wF-BUy25>6_;~r&6mm+wJ~nSZ_6}^;);z8;(bV$*9q8wYu$2zt`?{QKQ)fZeFR^ z+x>2T48*C?>6FpFopuKj_u44BFt~%~sW-bFbOLCvdb?F=)GO4q1wch9zX^6``m$8;wpIEvx8Nqw9lSX%hoIbh&z+W)Fn0 zs9o>2tLZ6)fK;{4aL^u(%guH?lMls{p+qu_ zdEHh#wh;-hhXI$x(`hhr&t%c1i^SuhNEDlZWpjmmE}ug$B%MV+?Od^h-U{fwkuQ{r z=#7y?d!Z&A$=6Duv?38-C*rA2H#^jDU)#fcmd^39nwt zq6GgFnBw&_0E*E>v5Kh$hD31$RJ>e2ZizjbO_5G!(>z}pMPVpn_ss=Ozhh9ZU>ug) z@H6ay9dR%e9b$r;=(nqsfl(YPMR?R}0icONRZORpr@|8Ou$7pBS2UHvs|c8p$G&JP`mz=o3Lt2C2XxT{KA-fj&tVEr6Z`P8mi| z(nXI{;FAlNl)@FIFsKl&D@9vsQA90{Yo%$uJZn_sO{$VrQ*#=cUUS!P8!kDv*F5{1 z{*%bkS#sqvy?U7r-sCr~ijlXq#BC*UQ;a>-)9;(JAKFfM=IZhRQl@2a`ma_YXBzpVp$x^8CAE18|> z=5A{1uoOS4WX8#8Hyj*9*L$&zc66g2U9TrL^1(pT?@cZH^P9`*WlucdOs#qoL0=@` zi7a_yE8Y#SZQX5I^Vou3d%$j9aajW{i_c;9xxj-RlG@Bhvq5Ll>+RqRt}|-YMzvC} zlq!S@mC-3^*3E$F6z02mD#Orqp^of?G-r&FQt zKCKo#_CZ-g;zMONfD;#_0fKl*gHt2bMxDl>Q9G;#n+Zsf#i(=JEgpxJ;2@J;Z8O7^ zT9w>l(%G#Bt68VlsoZw!+HzpY>$2m*g#nM#?{R|3yg}r&>7;oelR(B z*W1kK#57ni#+n^*a`axoO1}?A%OsaGuHAftCN7(z?WY)F73aA8G(hfNGD@s9tDcg- zsF$bUm9B%sG3e<6>TqKi`smh1u z)M`|qzSFA6u`pJGV-Yq5*-u!Z!y1NjV#ep3@uX5v2#fJQmr;IGyb^UYE=;_q%!X?^8FK9h{sE0wLy4fLMlq-F6F+-PSTuC4cs zwK$(&$vI=V=14O(Rh9XfcEm3oU36UF7!O#+ohNJVrV{|&L z#bUCdk5-cr?4-;F1J+QXPZ^U1l$W@2A6iA5^k@?bVmXC+Fu&63aYKi(70D0;^n{n# zyNpc~#Z*e8rdQSMQq56AF=wt)Gkc-)ge*B8nBr$0s_833tF!pRClyPU_yR31cVY`o zG8XPCx)L8>%0(eKHA~yrbEB-8=rbgQ4X!x+(@;zH=YlioNG2c)oj~ja&`D=B;KF~9 zTW7?T>`WGHG;Ot5pn96c>VP~uiwy%Pm($^Nxx8-QQULP5AZ2W2B^V5@tuHOFEUy5J z+SuBP#z4Q6%0TK|I-5;`J$Q};)UAuh<0+zULXkwv2u4g8KtY8&?D&+3W3!;Ga2RA$ zn4yq>qH=|Nt^l^)PzW!bE>$a_Yic&jwOX-SLH*@wwbkwPhJ#kGTWbPMsx<0EDAi~- zJH763G8%7BMw4;7+X0nSyFHwY4~`Cd{eG*{noK8$$A^1|2kkBpCo~l#@%6gRZoAoT zRcbZp>317wQ?FAfm#fWst<|WY-``plMYT~!OLVMarIITa2#?C+#K0838n_}}CXr63 z^SNX;8%-v|@pvqWu1Oj!k}z|NCSozLNCK7u7bKZL*Cd(C#M7y84BW9$4|Y|`##1TS zlul&}Idowo@n|F#jm2Xdkl+}OCE|&6GMP?>!jV)ag(92J6pCQnUaFL8^=hqAt2Z0% zZW~>h{$Ma1jRvFPU^txaY)^Nm+tUeZ?C$OC?(d>iyxf^=Z*Nbh;|UtDGu_)A?@YJ% zAVxdW;r0Yw_U>RX-kA(0?52@&@#>=F-b3a9dgupvB%rV`1`aAbXBb1NJ| zuR4)Rpk*WyLGLEe(B(4Od^VX%rqE?XUpC2jJe^2npqgCp-(fF z@?M|$zuD9qzC#q5ZH7(#5AnZZQ!J07sSYIl2^QzITD941G#E5O^pGnSp)X4GjU$&q zMILmwV>0Tj79;xDvzQGMiAW+9!414otJNr_SZ!sunynTSx<5oC(f1O%wIfdHW|K}1 zHIGClgVyJEqK`>5|H8tYSR^Dfp!EDtCgbqXP}dq zyQIZYVh)Cy9WQ)smDNPOBvG8z*8mg?nuIew0$!dSUm`W5hI$Q52}n@TNhDyP6UCQ^ z%hRkolYqrglG#dgP*jfg_vX5MQvxT>l7J>IVq&2aMWPl|;su&YF}R7SmB=csRua>K zCGZSqs1zO`r8}jI*i?KGr`O@Z;zgQMEoyO(MvOy(2Z$F?XvGUU(SlyIU=S@B#S2E! zyh$`?7R_0N^EUCkL$ctKEO0U zeUE7zud8}|1~N8*r|M&c@`=rFytliV67Hb=3|et5OBxzdTOH@AYN6<==IlUea5e6B>moeKIB!N8{5 z5wux1+|DhZXW3y}bz9eb_7%5%$z@ydy4F{`0grvj=UfT6mjf=J%jUG3y&lKXl6Pg< zzZMMmeQvwWY`2p4$`1! zdAUrjkZB;$s$8v*s$>!st}CaIib+NlN$686<;3|MeIF5DM7>U>)hIx21YYGbv{j{$ z>9A=$AyFFm=E7`B2W$$R8#=VZW_H>@3FWYv>=q+|S2l~@WjBKtx(l+T;3rpNS?O?2HlHOajKjzJM5boT=dXLi~bF(e?5u z#T1Q+Xul)YFp9KsMLe8FN9mVjj6RC)p&XOs3~u6DPRW^(+zNLrQd3d}gPZz zm|w1-9Kz{xc(n5mPK86ai>tvvv6Sl%I+Mv@cX!h3v{UIszL4&A8@tnSA(yF@OY3Vv z4MxDUQiXy%FF_L*Pm$y@u7rtAzf#iHKy2ANC5Kj#tSC9drWj=r4}4Lz2zkJYaomDV zj(&zR4&s0*jaFl}nbXh#y zjfSB;8tNZAUa!|#tR}0?Y(bwvM!n5uFat>hj78RIvl-1f|V_>tNTkwy}Yl zD=RP}9F0cf@hBFngrhNR4PH;BGO>69MJkiYvd@QI#6htphnr zp_nfbU-4q0RLWq4mC5FEg#sFo&gM`L*_6)ZZ<+*z9(Cg8}AFJ>X85 z6b;6s!Fb#q3{bn#Y1doL8W!;60UUv<2knJ=s*QT1)fh}hqbV4b@9gd#ogEJ+;~wzg z;r7lBnt3!C9UL7Vo*Ym2c3WKlP^DTGYk}&8ayeT7k8!Y{s@L+k_+2s!{z%zkAq{DR zc~C(o z?U>8vvl$e*EKWQ@}Xyx+!;_T$~7{$TS!STt_0WJl)f3&-^zq7NyyLY%hnNC`r zR=d|hS9Ls{?C$R#93LE?9!>YA?QR?Wh{Mr%IFSs+;^@Uj0iC7L)ktMC=(3=<7IrT$ zBr~~WHkZuhun9aG90M=~>btGAtu1J8h1NH>&@vp0hGUWS&5iX95Z`TWqW^=DRXDU6 zjfN75NIDfuCnJeiC>{-^5|LacUdSa2nRq#u{9jl?y~3vcfAaPCs}ynKCe6J_&HJ6Z z)N2k@Z2BHo-84_I(i;jlaWm%Tnan#*KL$Q*$v@6WX4-jrl{o|%@UlQ2K~JR29DN`l zMK2Ql{=mZscY5L?YB`RAv+W zeME(Ari6?0=o`~wHlRCpbU#nbqx4{5VOFc<=*6OkeRSuIZqCuoJpPNb61=Ph3utS= z?^dZ~WPbbyXt`KSs1*97R-w~FQ(16Ug9w-vM|Xtb3E#VkF^^*S6+VCBlC;32%f0Y= znx~~o3w%tzx z#Y&tkJWg&MaSP{ohVzo?1pFminU14z!X%2LeNu{rFSrw(RmUdB32_MMtU95RpZJEU zk&xIfQ4Nkri4&MFiD`RqF^HEaQY6N*C9*1E*bxb#mV}rXHwlUA3EE&APNYpl<^-XG zSU{l{Ll{s1Ynr!;7i^+Ar+D5eUT{n1z0!q%bYV#{zbc#GP|Szbf`m?#HOYz=Ma8CU zI5cgKzUMQISFJmn_WiKyFyuXtEnO#9Zd1X#-1#-DiszjgbiI0us=VtP2JB8v~ zC;eAH`+b=IYgG7aSokq4{zNe@{+yJ5jf%ep`Cmg6*i&AjAu ztp)u7pVRHMxSdv~9R)Nt)|XsPtIK5z1l+5uew*3oa$1&`Jbs_cYBr%^ZjS>OAJ(Jq z8n4G`1tE~uVnUBdCOi0b>u~95gT-vb#fptkk{Uf+DCKH}j4&v$F-M^U`UK)AQp62A zDWM)EmC^-)9i`-CD{(%T%f;YEr37({TnhPp8kIr|xgLP9U}mKZeY>Fm<04TM3qj9o`yh$g&slyd}#qyxoj4!bkf=^ zdau*Awi57p96k@afK~ugX1&vHwxf$+Lys?@Ofi`>g6r@0y6h%wKjn2= zgDZZ&2mL6}wbVFmrr@&A?XaQ4X;pHE&4gw~I|4?t8G=h*kISahfo_N6U&Loqa#jJw zAxIn(C%KfvsicgJIk#XRH3L6sPENZ^F}~s~ACu8~DmmX#3J;e54mZ726ETKPaKpoS zfxM6^v4RdicWa5gGnC)LcnZA%w3H>dN{ild)N{R3p?on9hft9QN0`JROG-{bItCWK za#lRtL~6S$s50&}p`w%W*uhE}KU0rBgo5DHmjBJ)&_dRsW=Wl9F)Z4PJBHTX8?WB8AoxIO37=# zuD@cu@+}Fq*N=H)TJ?B~*-JiqYXfTZ{dd$f}Cu403`X5lTX%qcK)B03*7 z<&DlJV`vE_=26p7MZ@NTp|d9cAZw4CyGOa8gFXs#6ukz+C{RpcYbgz>Pp88s=X$*c z2idA2%!+KK^6zN7D%=Ufw0e9*EGfcAhjZ5G80N#59ubJg2(Gm1+0eWQEyK7}%shPe zCnYP#QmYw(7DcykMM5rj!nul+go#!(Y3RU2POpPxI;cgc*U>?W)|stVunk86|Ljiu z&u$0SL1v{oZ?4HSB&#NjiN2)dI!^v=fOO_7D!^zHMcYnHnxHlf7S3la_-#Iwi-#gqt zIz2qQI6c2OJ3TwOxVpH#yFI%&J2*Pn-QPVuhn|bei>vFayLWde(AK;AyLS)o9^Suu zdVKis{Qko;T0VUK{QUjfr_UdsK7D-p_~HGB5APoz-@SXdzr4IWJ~=))Il8<$zq~v@ zKR-P=J32Vr-`NEj)nG8_bUU~r;b?njGM
    Fr@-rd_C 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

    I&=j4h{cOisYogn!%{55d3<6jc}grq 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

    sAmtD`9pU8u!~QdkuU>lZpkzK` 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

    6_58IF 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

    x{agqr;p(K_KTtn28L( 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–%HGp@FH{$@!x*vkOyQg^pM};&j;s6zs!-NvKe) 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 z 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

    Yuw%FF0Y%y?0 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%0AVg;g5)7p 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

    1E1;SD`-!XH_b$36h^3L|s{F6o3pJT3%TS%K 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

    &JmOuHCT1;gKCHMHWxIA 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≫3ROsAO{8|I1CP2?arN$&m1}W<8KKi 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

    8NmTO5K2@; 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%0AiX?2{VOWEb;4kP)_X8z*s>Q;RyKBY zyaPb_AYM>=d&f@{0s_QOu7ACFB+$W-9yNlb&HzIp1wbSq+nwL+e-Y`#Kt{&%O!elS z?PH6rv!fb%#-(({P$%^F2)eQfsL0yCt~+w1gdIY)+x)=K$U4I}KDdU~Y1ti^d*=&X>dz7`6$aGjd~EmLt<0n?IvNQXIXPL`3X5_rb@i0Y%)~KVX{j&* zG+w}WSXEi+J^vEIx63}g2F#|vSn6Q01w|DhAy9z`j#cCz!7vm|!(Wi%+^>ZmZ}!8J z8P&GjKHi>J%h*lL8m>x53j9k?4uMBHxK<7P{pxH$GzN+bv-4VEr5t&(C9H zkt51tEAZ@5CbZF7hN=8)kYg-Rf`@yEiIe^PL+_yU4iYEvn@j^JiI{$hyFo&%{MXP}d-KiL$OxxDH8s`!KFmw-;ym5wwTUp4r(;^sOlC1>d>}Az0;8Q3KwherbA~GcX+Q!W9t#&cd+0Zs z#PjAptu?~!B(Zy-mIDrxIumVsd%~Z!q~(v*0jja|)NWT>U!w%FTRctR2fK64T#W<7 zOhO{_L;O*Z6@cRZyQ!(~mxe~DX8hQ3kDxxO!R9nMiKVB>vLu9Z{-t8W z5YX=7nQS8=3juKy6x7*YLF=M0{fNXbzPkUahuL`9Sp&^o!|WtS$MeNQ{{CwAB^-@v zwf^&4s6<-*I1J`)HgEolbZ@&41+SQa+FeVfk1gR@x*L$^ z%ZxMuPf>Wt`yu*`;**IKUkpwsGofSo7;Q2x9k|G_s=l;O&(_uDUX60QYuJ%*arw!} z$xe>T(evr0=w$?cAEY=gOypP;M6IifpK_{$hi8QVpGPj#ibp0^+?)(br6QQf$tQw_ z6UPW>_7@+aabtdUZ@c4Ku$B2Y;7& z3GBSemSO~E)9f^D#i>U=_M}JOPW&%9UmsKJ8Zv*bH%8d-Fg?+RitB5OEYb0Ng}`ym z-;m#bfBRK@Azi~W5fN4mkI#ZYqltu5N#(~*t;Jfq`MRJt^3n+9PU!jKZ0Me_mBqXn zkHXJ`nqbWLsLBGdB+<#DzRz4t9`fb!%<^9>erI0Frl%-@<)e>mycLqS)#1fmD;tSQFXAq)C(HCp7ADR9?Z(5vg(@D7MfoC|Dxz}I&k5S$5;=K>kVuly zX!oD^sW=39UNe+&!&w{*VP&s)Tsuy-T}5*oL-_c=7tc8mD-i)+WiGF2wOJ7Dhz)51 zIA9=khSviZc680?pU-N8!5Ro}#m?C*?4z-ag&VoZ z{3Y(J%Ivh;f?#CJpOlNrKxHWt;(4!5$P&fH?OVERkr40MxpJE#pcN)HxkIL>HDJfC zDX7b9lngN%h`#x00LJbc&dhBAiJi`z{TKRKa7X7w+B_uFZ(CzmU;7f?9UG8E48@Eb zKkqstv-7#%JsR<(k;>YQ-(NnjiZQ;{$wW*;SNPk^Kb@uqF)k9@nMok)+^3d}iFWK| zvr^YPH059QTHJS;s0&*~>0mOGl@1*?;wZj1>2P9IRaK0I`i_&%`WR@*7m6-S-1tf` zNtqD-akd3%+G7KiDZi&QQP%W8198((+%6+DZ5>y&$3J`>W*Z7+*=&bhvMY5e zfqWlKvk!Ixp7`ts@&nH|*q1Qf>i@);t}J@o1z<46NrDtZsV{cD_$)Ru;aL;Cxl zVq$(qTxo-~!J&H3kkF{fyM27CCMlB>;EBFDQebH2=H_N$VId;wo|}u0hM&sh2?m-a z8#eA32fo9YoJS2C(?;<-Bv=x}xEiRL>&Q(CzkB>J(h zW}rWF4qRrjGr21E2}1mo2DJOGC_Dl^5>q4kjfeg3>!#5P1o>`$!r>A=Q6XP@yRo>8 z{kL|N@x-1hbx5rMR|HdROU63he_ah}XBPx~mR45ySXh9c&f3y)d}4xp_?AeGorMJi z()smEw9J9e)fSlOmXDVE_lz@W<40nY#l*ybm4%?<*Bxt&g$yo7j}!- z4}I|9)peCnP>3<#qMYVML?xBX8Gmx!V~vHMhfz^hLv8X^|d{y)Ngl28UF!;H7PB; zlQwC)aOU`xkFBAuE#So*-%kC*feMk9v}rCqO(#WXmZ5`) zA?Y)5gFKnLyh-cKl(u_>!C_a0Ew> z#hb&?Y3ncy<5wi7YnhjB)3vwX)<14Q-fIG zEpU+2@*MaK1UHG2JH~HzcyOeD<>_>0otJY+I_7d6t{@+Y)gk2KhVmd6EzaRKbaPZ= z(vryY1TJ&okYLkXko7ohN9==XAtw=VVK8!ig9<|;2YL`Y<1ihivI{P>UP88v0j7cr zuJA>k>9v))5t=gSDWbT*+5dDqge18P3jd|h@6V6#Z7C2+Y3ooM1?3Dcd~v)n6b&A> zcQbNuh<{Twa?)WBql!=D9iE`3c2!WLJ{<(DfcXkfvJ~$p4cl1@G*WRqs6)Qr7)D4e zS-P|pwv?znD0~n#aZ|QYv4SX>`9S}1Gqda*B<95Y4Nvx()VX`$JKPUUuEHedLy9JK zt(#j5$2Oe99rq8eBNZnzo;vIe{JZrx#$tOZk7PGKe$JuRAskMM#w0OvA$nDd$DLal zXJPrDsi|{Z2vw=OfwQ}5+SbN!_s(tLN?@wwcLf!QjzlEsv{Q@kF

    W3GaEaC(2<+-jx<5Yc< z+$b*lLZbivz^EVe&Dq`PUjJLl8dvPnY*ipxu=ZdM%U*`s-=g5?A>=C3N&-)jzCpUz zl_yd8hfa!Znafjr%ZG6voLzj}o`9(h-Pt`H^=!x^?6ouOcu+3%0FPpv_1^(Rzhj$_ z!T0QQ%eV2i%{aM|e?~UGmtMJ;@Pi(gf^OOAHEo{`rT{q7wA=b}+cl3Xo7!P*@qLxo zJpGRTV2Db3&~u8{MA~*L&LEv@?sb`oRn6wv^Z}i3%s0s`^XN0tcr)NY5=5xQR>>M_ z!yCRxg+y}XpY-6_aA<$EzpQ>j+${8{BnhGaFJ{%9*|a-%F{#iT;^Cfcl5fCz>|&E%fPJu$c(KlWTR2i)Z=VrP{%% zn&&3c|J9pv3PR2dtnIa~&6vqe;QTNz>yv#nhB-$nRC}>L92rR?6IL=QSJ9PxUreO- zT%A)@>R4RrSt(vK|ESJ0U-Ij*JmT>3`_wDLCVu8<~T zG2#y}6>l3Zt`M#3&cA(~dU27)bb5pbTb_M)-%`Jw9-r^S{c4m>_{Y~TcFQhJ-eesK z+G8?o6eCrIEcK!=Q5HlBl|}B3u7w3Kxfh~loA9uC2BnYgN#S@!`V|Fj=>qQ&8I|a( zjP$BxXFP~)iv_Dj6Q1M11x~VI#im6B{W=%y!6S2%7v^-g@MhPj@RLVaTv+gF%(;=w zTQxx(ccJQ^;Og1DTBdyMbS^~Eu>bt?G5l3(cM&RC->w=HC&Fxu*|6kqQA~e=xuCfQ z2urXr(_~)G_)Z(@3BI;=&o3DkV~H|p`Xsn~8=d20f+ z|N5%UFkUhh2O)**5Fus)O1M!bH#fI7a2^1#YqR9^?Fq(c0_Sg}gepMiT^4o^ohHm) zgx=LS*P*!nrUL;d3B?Pd4m^HtE{5&Gjump;(h|tL^!EDdmzOtGG*nfpHpO**a^iZkU%y^) z0cP12YxVlK12s3N1yBh^GoyYN@M~KMn|C1KlTmRxiUH0N4~X`!)IRiZpEiyE4EorF zDRle+1tQ&7`0FAVaO>#-HtVi%TmoVOT-?OCn7CnMM1V}NFbjl3%?XJ_f`)-`z`;Sb zP$;hBa(;3$J`pXO^40U*K9H1Mx12vdj*NA1wzBZ+Uz4{`(2d>MUTUMYPN!$N=6pn0 zSkau>I9@UAcVKJcyZi+au?blvx2>YMxudR)^@QHzl2J2DhHG(rXha;yhnAGwc1Nub zAS@^-EMSJ=Ri^LR+1Z(4nPI^%92pwfKHzh?{F|DEo(xg<=_4KiC2Tv<(9u(W-wYg~ z9U<5Y_Z9L5=IbK)dWd+g0>h7SVC|j#+i~=#3%my17!!xD{;@*~E`vjyYgs;}DzLF$U!&CMHH_0y~uA;^Am??Ag$l zlG<7rXA2Jx87@hgtcp*|loW9|iE&taxcfpJE;?E3ZgoFuH_vO>v>y3pdpo76OXGO+ zhNt%O_x9rF=HgFB16fHLeNejRW*6#cSBmY}QaU<1CMINO@200e&h&oI{5n?1(wqJG z%eFP5$cpy8N|cvU0g(ZtD7eXlYXRA#SZCNR2VP>%bk00~J&R&^3A1h=_=a z81ibXo4tht0*X!-Nnx5ukK;1B_bCsvb9Zc=onL~0pQZ#AEfo*n-;4346Gh1`^PQi# zYf-rs6_wx}yRJ^VKJN<*+(1G^?9FxR9(+Gt3I(=-V;0M!Fc$`>5LcpK=iM8dVyjD`;ZY!12(y?2 z^dzqFL4!E+OX90gg}>Nr|FU|eWyT!>S} z&CSNk5>Y}-HmamzU0GAyVP=8Uzfh#yzBZyNZX}_QUY6HfAh`6M_|$b(K{wx`>@ znI{I7*D6Eh&TKGHhh7>0?o^J;R7jht4$O^y9h#i}0~Lhs3=jO2QR)BVY75?a+i%rS zp^*@|ntHHaA8PuVfJbOEb6^pa2>x66vb1BhZuRM5(&`WS_UZ1BB`RS$AydWHb@-oV zur=elkTYy6#yogh@;FtN+rxPPg$Un`8&Du}T=HJ2v4`c~>Vr+j@93JkuLYK$L$!TS zZKgrXi80zj&J#_Q)K2L6M6$VSXBJORsaNgqoMli_=@)nK{6llxoyT)xZO6k_$C*?9 zfo5CFr`zDBi#JRcI(L7lyQ4PQ{KFMW6EyARZ6xe2SvXcvz#gv2W4oX%awI|%9_nao zn;qg&t8Zc=p09{p9B5cGQVaI5VX+_O+i80{Rx4<(PeVp;Oip@lU+`#~IS)*Fm9Wh; znglbuE%<#1iC|0*5BEjhaTKly6PCNV?NKL&fv`v1J3*>#Yp5ihy1LK5QMt)R6rynI za-KWw&0aBH>@+gC48lHvSDWm9?cev#J{Gv)6Xibynn|+VVSibRtn(!z+%Atm6`U`e zJ7Gy-tJ6R3s85c@mLWzVna~2q7Ie55mADk;RK+IgKmgOPgv0I|fu4q*z!6EJ0sW&E z?;gI>>RU`|Df9!_8cZce6-4$K@)>AU7_$zfr7z4a(uq#fkwpG3V)oTGVjAPueoQg( zz4?j0ihma3X|M%9AscdcpQL^+AxNGT>B}$$?Pu*+znKF?|65wDRfI2#oPHgd>RwNd z<}(XBJtHDgr!}^Y41lhU&n+#XgY`Cj3pQS6Y5MvUSZ~1Xa=?FgKrJI)&*jKn*9XbI zsSloE)@i2HyAG>s;~VcE3Ea2>v=K&z#9Li=zRQZGRaMbSAlM2dz5=_7uB+Ph^}}V| zCYukQ)!MasTnGEy?r|-HBOwihhZ=v~(k3JXZ>wa9J64oCu&C4c56JP%BALXO3<8wy zlQ8lg%M86G5qK-?G;!!lMaHg^qakWM4XIw zvnwiMfITt_WwjB$v|?iJ*l&G2gFy5j?$fzB ztky3(cO$R%ij@lKVYMa2v+|Xp&uM!zj@6-9_ZJ%%`}_Ml_V@Q^sVZzLc+DG4w%Dz> zuMB_@5f&CUdzhb8K+Wg>U5&#qG1)YXNiYiMmpHkR=UdMY59lNItodFT=u252u$kXK z>_?^isW{j__9QgA6>jig+`sGmJLab?a$fQH@{-F5FO2deNB~4aZ*7qPYvP$G}**RClX$vt=nq_PB&_|5qO)}JsydECTcxN7~h)o zHUY$=4RmutU|oM(e;X4sJNX3&eO{24_3%KRU0hh;U|}hrqc1NzR8>phm{)6LUug7P zb$Ky9LH#wgJJo2dD?}xagkNK6F*YVGKnL_TsdcUFe0=LOGc3F;)T_>i3gspM(yhQtTapBI}Zi(^D;VQj_8t zQw77AX4ADADx5LE`s1W zlh`sXg&1C2aL2-DHdR%%n1ZF%PJ&fpvUA{;5~>*4Fc8M1A&8p6rx$FGc*ms{(b`4QC&6IVn4 zNaNTVEYDXh#n;Rj2%bdH7hH7M{C!HN~~!KkfOejI)JI40;?3+~pZV^o#{stMW9b%MVrO)l?VM5)$iocBo}GCjUf2 ziohoDkdxChs|y!kbW!$tw^CJ-fqf0xhy2#fEom#xsZ&t(u@v)&FQ~MysRRq~77-Co zN0h1+3@#)Z&*K&>Al!ymhN05kIgB~7%5f~9s>C}d;IMCumxxPJN3_~s?1$G?(K02{ zuU=lE{MA^Dp@FC8cdmd~X9B%0> zbF~(cXSJfeW3VE-!={bsSIf5=Vs&nno*v1;u`s3FPAT?F78waC>%luUlg4Cl72hbV zqM|YOb#d_$iuLf8Z~XVYYW!T*9cpNNUfJ-$W4};c*d0#K*c5K5c5uonGIk9F=1zsV zcd|l38B8YxRu{fJksBR0>_;Q{WdwTI_!1#KZXPQ6DFujY@}CVg)@s?g>i7zm)bVsP z2@Z&ZwW&Id9qmjkW6&}yF0RsYJX?zOYl;PxRF>6TI=RS-`RKAqw`8x<2_CHd@*j1Z zj$B^{Y#&Mo*D9NuwQZdEPIeE2kvKV6vh(uP@CA z3nTBq-VY_dV%`jDxLIST*)efB)blb6ax`enDOR_Qh)2qFUvR>f1CF<=^A}%RZtoAw z^J1PKedRxmh>xdDe#|lAal?UOl|#8@>}mPx1e^XL>}7QoCCeZpqK#YBq~h}{!=qtd zK36UAkV%`<4VTe1{8Dg8bMX& z6VGLNSZiIYNNm(js<1j@m0#SVKTfs!=-}NuJySsjGfGUwW+esxmY0=DlO_G<^`+06 zy9pePc)rBfvyuLi{3`msbrr6WIeUiApPA18>H=%&`|_ifZ^v%eAYt!QM4cgHPJJi3Ezr==By!G_s%LZ~lvS5_8Az+t@_+^nRd6JhHiA_Cj^OOZzvnAR6K<{obESlKv8 zmgh?KsA;Z=F@0@Wm>ROOq-;M0ZNr=Q_X9;15c5OF$HO8qqZgN#fq1$8^XnR`le>92 zug4=);CnoEftHpQSRbSlrN^=ssoI;<`wK?L#l;NZSoE_~P{1OrHw!sM5vB{oPJ-wo zFOhJ%U*b6MSN;8&OzCLG|OjtU$5Aj5GHiu2g)R zRX}37mp4PwjpX7_kzTL(njJxKg+XzT%rza1V#2N|i}ivEN=m+Nf5T4Hm$t5#o*Sfp zIX7SS`!AhINLg=y4I}&WG+K~$6K?j5n$JKeq}|scc2+0itCek79B>t|9_+MOgpB_@HGduz3obbI+7cx5k+NV?WJf;!XFq=eLfEBe=PpsMG!N zS!Y)B6tm}&k<^=uL~uTK0r_fpbGi-LsncXWtzpB#+0NO~nd>VSrkuVr>F^9UN8=8f zvoqn(eDGh=Gheh5Znp$aO@vmvo&9mYxVY`>>*xLbiEhyN?PHpil`Qb%ti7jFxHg4b z=)H8=b98iL<7gGL6OK;QDP|=pC#65RQ@DvaoT-nAITl!jg!-TG5p3~k5bz~zAEskM zE{tb!*NH7EGEZIGvhcMs=Fyhi*gN@Hn%RprrjY1Rk?9@zGOVl=)#4xGalW4$spOMm z4XjQyeHB%|D0`r2%ZzNz>}gG@%D~j)4NlL%pJ#Cvb&u4%lBmuwDI9!j!`~w@c9%18 zJtNm&H+(nZ^+vTB@SyVOlzsi6*2!>2o8ml*oUT*LSLMIQzW(_EDFX_d_23VGi*&`8 z`1=9BLlR7A6^7W!`18BtiaMO9S;LE3@X$8-t0h4k*x`0z#jev5{3(^n+_PL)6N$Ac zJ?uH`*C4o~rNYzd^!-gXtv9rl=%O}bB4WYhdR@MCfPjs)_0V%u;fbP5&Ss^Wua^`= ztm)@SEcleSv058;=Va_mTq79Bs`Vcv%;c=T+No{{#+@qz)a{SR}%Q{u5=Q5Ic&h=c=!b$!X)YaE`<}-@-CC79qnnH?QTKHyi?k z4PrXTQs^|1#w-a5PbWVb(WtZwGsO5pYj` z|55^*8zG7ftDk!YkL?&RtEc(M4h97N4q*+TliQ9(X+6%~r{^Ga8 ztw0Dn-w0jm*Fc29|7Sl9BV-pR;_R$-_%TVB<6iDqG#Ls-1$$SSuH7nuc z;dAvWr|hh(hHK*?a$#~(Qaehv7aN_KfUpn~Q^;Nxb32PEj){_<5(s1nlkw?r&ScE` z%`5z0NrAEFzhc?K^o$H3uCROY|E1+g&g&U}ZD!ACO|DNvCpYr9lG03=1yVOMpJ!Rr z@CY*tOSXH*vxu45^_x4XY}2QKeKjE6$MX&1;=;*J?UR|QI~h;wtgnw2E6};Zy28qZ z&ee>86Cf=rB1UGgiV+F-C?KHL6LhzSy$e+7Y2meBZ&y&lhc|?OneRYlj$wqp|J(2a zqzRU0C7lk#y1#@TFfb6{FL%mN1pw*j-%=rhAwxYT{DyddM)VB;4~%f}jGkb}InyUS^y?;)9w z(P$2Qup%lVrlw4(YO+pIfQk1sIARc|k@(j2!AezDmK|kpZ!emLOt~*fM?m0%OvgCY zi?m5Gu$C_=kj(9l&EFTbP3KK-iUyjZ{F?BcngkrK%-fN&BNI4!(0@g7G?qrDrolh1 zGGrMlf5iH4!DUPBdRbW&l!mHS`S+?+iHrcZjNabf^z?N2?wQ$d)-J18c!dwQ4~!}t z_Vj_4pIOF)Q1 z^0z90=^S9pAFa1f*TuOpF%_eu+v*A5_uwsY+h6w`VGhco&)7fYLE(eo+{gzbh_Ibp zyKG?|cgp0@KKf>W+o5o9pSJ7&7Jh8}X=TczBrmC}d+^wlf&`*E8uo!47*ie;3{uUO zbWcPKj=M12(fyDHY`@u4NF|@S=e`>$sT{q9g_XtmxoMcfawR{oD4tXH8TGF=6W}VP zMbE2f7f_F!{Gd}-Qwdv8qeHzrgyS|XJ^p>{URLp)=sUyd$f$y$kurJTTBirgp4no$ z6s{mN^ZtS7{A_>!2-5Y|^#QjH`mi;3-n9k#42g(vbHy}2pR7|jF}6m0xcy}+@rzEM zHo5Ry6z_b@^5XK>cQa!$zsquwUN?zaD}(hB%~Rzdl9fA-JP(5QjUrkjOA3ekhCxVc zpH-fJ2ldI#Ma=Cx*ZIob2TJ!$0_u%G?%d#Z(!rPQP-s$8RvR=={Q@wh&IGC_A-ybt z;Yg_{94T=i+ZC?v_Gna_l1@jKn;F3`!e+MM;2q1)2=6#$au-j2T($9Lbc=T$ufw`E zMd$DM4+xmH7nlRj7WY|h!Ib~e5wJljIX1GkR+f(e6!ouegP;;}mA1iTuiul0MZqix zPlvgY(xit%c{WheTb3a);^?G5ydcswwkK&~!s`dFR_Co~(BAp2-ocmi3h%?cNMsJ?8cC)Uu>wd0F|l#v>h3k*`a?!D4{tOru*ghO%4JUD&*I|p3GM_b8rEr$$DyLC zRm^M1M)@Kdv@Dx+m2sy7SRY;pO+)BX3jluJ#U%+fG(qmDpTwaDV9f~gL#M88k7BdC zz3Inlw#pug|NHd|XX*TQ7&GyeA&txa>(u>Z);g%1Dn*?8S$#u?Tp#-F`$TV3Si$M} zS|}W@HY^}fSWhB_IsDU9g9;-ko5s0+;0#(3!t>|4;NJB?C!ude#c!xL3hG);sg^W* zd6c(cAh6s1URJ+M(f_qfV1*(GexnR&cGP5nutVdFSw2p?Rayj+&@6_y6y|qGXv=d% zgM)c6zDMt2IB@8v{T3`3D+yb@9o`g=9ce6X*7)J-=uI@v6xX>x4IC)!qc?6PrTpQ9 z{1ivFTHn~sN1vh-;r9`3kNl^%xw~DNX$~~0!I@dL1oYMwigs$$B_rw}g>C(CDNHP$ z7^SegKb)g@>1WJ*b)%d$5_N0F$xB8w1$;GpFfoG3X-1?u`pAfl4k38@{iY4gn3-RA zA2A@oZ595RsTz^90quw69=~}e?i&OXRgy*}Y}J*w5c*RmRZj<}?~*gEKy8@t*__-8 zzZ?8MJbBROh`{`bL;FQGut;X%?|&5)W6C>7`_R3o4*4@x2na?4 z+;IryqC!pnbUFEt9(^X`Y3w7}aybj#cL&JJ4JeSA@%B~7On*NGE989O^Ls} zwE0cXLPg*$wiQ8y438u&EqmW=vvsOrT_-6%vH)e^WSwQ`x_EtJ@$~ehp`od-uSZ8; zcza{WLimD=Dq`03GYtr^+3F4Cy0Rx3J3zAK+U?28{8CRrANHXIv}ub%#J79AA3`VE zJ~&C4&gsoZQq$jfTmRJ6mC9i~Ffdb?cCp%wiH#kfmLeJ8I>yGv0oXzBN+FZs7GxMR zirShoUuX^gpIkTqeD(Di*3|ReT-%XYR0pgAw}FO+hK`Pm?(FP{3E9(<0F@i)zA0#L zdit{JcsMo~umwyhI06JfG4SVrX+Q??Jw8Og8Y92CLSL+UQk!>r9Ei9-l%&W4dWWT<; zcYr>>SAohi1vC329>x1 z1Z(p*lw5V_Z0>PJ2K_3C6Bj+p%W80_aAsQTx8m^E=^ZC$!}+G>?oNrv=W!f4%=&(r zyY(nnn2!p2rLWUN-|3mcypHu&jbBj)!`I48tfDxE3~RRapC`yQ-*e2W0Wkp3@^oWA< z1#E`4A(sH_l00HIi?)q;)BD~=JEdWD2Ej3+MCC><^RN!8npkg6+cM5(RnE~_puPNC zdtGa)!W?(L{sxWI?F&ok4CW}NS@~}Op#P*?EYG3*9q~d9T$ospzdJBUxzXZD%lQcT zt6P<6-Sx!M0hZlKcYOY2KNyko;1Q;i9~gYfbm02>2+W7yYzWVYxFtb;mqLdJJ7*zQ z@9|k#D;$;Euoy%{@d+`?ict$o2y%jMz5!)~0549yTv7wmy)4f8mzA(8kZxv*Lg>q@U=bqPi z@e|{B|G{C?1Jm-w&V<4vZ1_JLsE)BQe|Z&|d8n&BWrInXH~VV_#To2Ts-UJ@cDx~S zemVLGrklL6Rb=vDAHE~GwD93Tm2DK(UN8|}uQZNPSi3mDK!if9>>;G@ZNs%L(y*+A`x7tgno z$R(VAk@=)(wQ{#*a;tBsdw3@=pHML%F(#vv@%$SfeD=}LD0HUu^z`uFqXeZjHpB*6 z(=I&7HAr{KqK~RCBRN}RnR%z)qbaBYLfd3lv8yxqRyWa|n=x~fIZ4vI5--%=|9-}~ z5OcV;<*=!s4%bQm=_V)tfR0tdI2zk2xGMvyow1cgN;GICzqc6m&hQ*1 zg9jmrm@3n*b*Pm!?}0)Yg2FvVb^FmY2@nQrr|fymS)yzBND7#8Sx}$M`vy{Os}?{) z)~rr=KrYvy*vaDN<9auEa`TS^xy?_M^k4R0fl>%1?#~)? z-2iA&#Xt}SBf*1R%%AaPx$8|q&QRT+4E0R5!VhV88eecAit~-5CeDdV70pSR*CaJC zeJ>RHf89u_483FE^(ndjt8N%OcfwDbqrchyV&S(I2#4}V3KeA#MgL(S<3^a5cZJSS zR4(VX6ZI==0fUcsTXHi)9=G5KWlG}pPpMYXG@BPCX>)t3D&zGtSL>|!q34Fq^9fdK zFw;@I2EH?N%s>+2ESkF+%8sf9(Jo9cYe#g72`#^4HRr+)fI*FY_Klw^sO5E}~y zd-tI3w)=qz)os6!M>o!^4-2|emu&=Y7RY7LOE@%jiuZg`EU|g^pqaX@%jt;l2w6F~ zc2C|{YNrSg3Nms8;2RGQM}~**%DQQ*w8jzw6N3swJ{W0KC zc#`?`GI>)M%n~^_X6Ve9{FHJuPY3|&11pPzrzgnU-6L>rZqC(C4zMM@AgaaBai8wmnOc8i$ix;1foDmn}S0X1XixYuSlVfC4 z-K*Bw&rU^ESXPDMi!ETcX5Ajnng1sCsqVVf9BQOKBmc>5uBFHYHSYiD# zHgRinGjlW0bMjY%-~LweSQfT{-wXiLD2TQml4Q@4UsK*m+!*!sNlakY%<-3f(BA_I zsrf45etgut(kxMV2E&qtc}nZ(+`r^wTU&khk{rnPugQBH7`%<~@zjFAZLXnipG{M~ zS-dlkfiPY^KvQtQFUJ2Pf?fj+-n|%;%KxRha-xM)vo|xCQgVffi5cZNzZ2_EMwiF2 z*IMqEj$c^~E&m-I&rr1>++FuoSvj~MRDR4Cq^mruOrViO{CaKooki(pI~TK8DAyOJ z^5qHkCF5bo2Gts10OS*K57Vqy=VEMiYNKsnHVl4p_SxR)i*@PVCOY-n68yu@KU)qs zsnpw!ukC7$j6~Sju;uwJ>&v8y`O)_Qo6wAm3{E<{seqB{Xq+Wo@0)hh+gy_`7M-MP zd0S0c31er=H#r^ESyEb4p|s@@cHkcTO-@5~Rz+hzvN~Ikuf)W)M0w1arYe2F%5u-f zNJ3M9p27IJJZLuPcMGb*?OyI4pcR$9GB=|M1N@AUBgB$D`!e zh&r)p0R7Wb;lSk?LzLV&4|kBr7kPk?CKQeA4eacb9a&<2RN>|ZgK>P!xaVU+p3OTZvd0{WL?~x{&x;ekHeHvb ze3=PWktuPX=PEtxc~>d5=gf7kQdT2xX1hKd=*}f=j95j@3(H{K4$G@l|BSG!Fdnyo{nvHsrDF zb_Mm5gBQsXW!=Tz3TKpzr3QRk7bULAwP z$?}IG-%T9y4OG^bmzZaS^CEc||9<=Pc^yOJ#7J|N%t&&24YkW-0Dj_6Em+?d9JbuS zSltwx)y9xlo_FgY@e@apy;on?vG5%fnvsads}G&l*AvjHav&EL}>abe#j>jTyXZ zwMU6A&P3$zbXcea8@!0Al#9x5K~Xh)nh0xboLA|UU=N@1?DnUmAk+jurnpVUAwcCs zM?(`58ELdLmV5c9FEcs)=-|NldF%)%Ok<}O$oARb}OG z*SKFpSfX8=tYj^I1R5(`MycS|7W7_b65OD{mQ*M^(J*0T06{^|w?{k!1G|(NQO!%# zaIdWU#64rXj~qIyUWGP!uyjw z;g43|ou)$LHfHcI!F&-43Zr;tl-s7(32kBF9~v`2x_qIim{_hlJjtY3L4d0=kOA-s z?h_n;GLj8k7HCrErWVE*hU*@Q(*GL|j}Jzeh-{1!&CU|n(q%0nOMH!mBHzqRHnG1C z68hZn)|A3s>=Bie)D58ABdGiOV~XluH}6o46GF)JQNp}UQd4FGU-3g+7INIsheXxZ zJmv4$mWWo?0dWMo$dhd*ECY!(6nukz=4=_2zN6o;13lC3j1<#Od$t9Yjehq2YiW#f|O0ZHF;1N&p+MFRe=aEklLS*!D{DUa1mQ?)?!a5VBp%eu04 zEdEiuaj1UTRX^tthMgle#6V(P=skA~85I*Dc685Okk+cXrUnBG-)vVJ)fsUH&Rf1h z{SdYFBclvezy7FZ@@&%`^HEitmtRA`Yg1%z7%-{Uj5C+@hdyO#%j_8$EB$_CWv;8ZP(2fWj5;lFy zl8i?*PdCoMz^ggMr#Z)`IWu}ZT{{Q9F^2|SMDML1Ue^B0DAXRAN(k6m9?2MC7Eusz zlr=^N(YGO3i}VG+Z6JQ@IBjwF9D?Sdgj5Ea;_I} zFR@0|-#jX&rgoT_r@S~;EDCU=q@4YZ9pW=6gYfGZv0sn9cBCO8z)V9zK~~mLBe*7C zU~Wz{tFoa*L{(8UN)1@B$;(eFD$lB_&MRs1u9B)X4vA^*LLqTdZzB{ci4D5I7@uTP zq>@`zlatVvHgY?=dZ;tS0XEW92p|j8Z^7Bh~!Yt(wGe;pJxzrSF&FDv{%boenSD zNw6T`JL`}Of6AaasYQCeHMDN!pGqcV2772>pT=}zUExnxe>(AuhRt%R;bLbE^1k*k zOTN?KcYlv2lJskRKHL&=sYT5_OTq)1UZ%+T-C;jzRj2(iQy%QhHq<-Y0SLJ3bl{+di&)K&7nC-<@`#pUF`-_G6C!fKwWAa!-5lwF1 zbc33Oq#gXTWjxsPdbV(jxD@=o+P-I}SG|7z`aGylV%xfcbu~E6C|vSL z<{?V7vD!?Hf{KD<`a?XwX}fo!I$0kkUhWZo`7!B@C&!y~eB^T4Wla8fZf_Xt^pMWA z1BAnpuq&Bupx2~w3eU&8Sw6X-c`vfn^$@Zzo(y)*&%6Joe_yjCUP4>OGs*J|gAR^! z`tu!v&1)^c7y%o7q(f=R^&j{P9(qQM+ABsVd*qkne^1AP(>_^hSmFGVMheEO<|9jc z1c3#ARF9Uds2(ojIV+LRd`ISyd9Tf)k;7!Z>_>5B6m!?Lz!b>T#LN}Gp%3i;J)hY+ z%5%8^``|I@@2O$D4t++Fs}BEgc!g*bnZ#)7KgRa3ETuv06;$T0>*}2RwroCuK^IyF zV~W1Ygu*a>JOP+5I#@1NepHYryb`7B-RkLyUkj8$ zbw-}UM5;oo`ksNDx0sZav`jBz7*RkS#`+(y86BAzmX(ySv$fs283rboY3At)-A>Qz z+u^@me~Y-C0ReSxPHu&mR;SC=_S4OQudna_%ax)ca4x6UxfMwR6jn%G=pa12zj~(P z;*0?+c*0;Xn2bnQcVje>p%)WyMsjg-Qc@PQ<>b`2W4m@`lUZaDpxK}=@&A$YlGD~+ zdwYGMYHzavv~OAh3If^&$T1_dL!)C8ZH~00-?|t8R2~IIFx;Jp$W`zaFhq6?g;ZAR z@^{?@1(lVR$)`+)$hhe1w`r{xohtG{$kj>%9Y{@pi@j{fSpS##b9&ayT$0~Ve% z%UFQOK7X&Si68RwLq1TDZa+l?;Y&(pP8nce;s$;pSuqU2B__bfNB>GlxOpI^9>Y|6 zsQw(LV`pbKzt&3aDDL9&$L6xUsK_smoc)HCmW?+Z`ZYl4nNUqXHX$LvP-#YqOTM3^ zW7`81=&$nF{4MK6+^?Np*M|C@o(VVY;p2D2o|D@Zo1t3# zo)4`HshX*yK)u^9VEm9Q`w!V8<>KW67Z_i~MmD_Od1D0Od$ObY`=7?g?*L@LYvsEL zi``wBb^7@In>Sr;=o#vm>6Mp6D=QmYwj%Q8K4B`J5|f+MZ?fD9;GZdt&QV|^TBtbt zr&WL$oU5y=veSLC;K!cg;vIXKz<3_}0 zjtkDfK!=fi(cDew&51O3(Ma({!KGFh;2I22u^eeQUN+;w3i1U`|E6cCzdvq~Oy z{w>z@#&Vg~y1G|iV9`zQ$MX&CDl{QoW>93uL@e~!pfCF8%RKklQfyD#g(oe4ce#c zrB?SZDqX#{#OK4-gQ8!L8Z2J#HRo#cpDsExRqmWhRo-%YOQ?qC8p)Om<>nLX2}YOa zE)Kj{-icVYQh)c}w+8P~<+e<1U8uC*@Qxt(w{23gy^b z#n-Kjy=C*pq>_aYve<$^gFKv*H)wuSow;c*Thua}ymok+pCGO-j~P@QxS+3J@onk& z*q_(eepuBm%)$CMZptPn$@3uL@LFi5UPR>B7A%kr8?GmW!{*D@GOh+$mKo9 z5I_@Alk-{@w;L4HihxklmNsy`9gst6B;v2AI!_i`Y*so58tzp3o_TlsqxhL56sG-V zq~QqXDK=o)x^%=%^15V3=_bc2-#@Sq?h)24{Z`~dBq5*O<>r>}Y3mpIPY;aDOBt7E z@#^PiYvu^&8ab{w&dA1Y_W=RZaYt|1?iWJU>%goz0*1SFO1|Q))hYG6OMdth?sjB+ z?N77kMtt&Ok-CQZ&F!Lb^<~!L!MAV7^7DVc*uqU0-^NH&FoEu8UKos}KkzJF^DumG zCC=a?@h2zN%a_jv@46H?rwl!jp^MPeUjtGFHg<$`c1hmR$T%G>4Rd~M$? z=X~whGqB#Bf4;C~Ld8TeLrSbYJ-9{k4eJd=o#xr_c$siF$`@*ZsA~v&m#v!!Isp)}jAA^~_ouszp{K?v9eN6@FOc&xpD-CfsnlXdON+ z)7sfbTs&s{`+#nyG_ohGY+~s>t8vlvqQhhWxnL1q?I1Siw_j;S{bR+xZTUL-lsXLM zrwnWeeHu+0?&{v=+!opn3LGmql+4Z$0H7CG=fU<-ON$ao8-{p__}(4uc#*CyE`EM~ z!lI&pSIWS_b$2m3R);G0To}N-hzSc5@`(F#Y=m}fE%Y+|xx3DxF$i)6h^bMRQK26` z%|w8>5uxob4}ja)RNn2nuRh2e8ykDAyUfvhqxef|FZmEI4NjFhaVwpMC% z6oy_`R1v_DkZnXbJUAIdffCUIqeiV}mY;(NVEd^k19V$)Jn497C`A5=|9g7~eSfZeAF&95E9gjl ze!JNC_wS+eUGFIn4BZEVgD=8m!bo6%=?8e$#JMOV=G)*=sr*FoJFwA-i2S#|9Z+i< zDwFGG!{Aqx6w~~m3l9qFqc7h|iN?YFzX{xL20b>FFNdxmo@^1LB|7Z1e_&7udqEz_ z5F-%*6?{eJqTMATCZ^15O7mD6Da&3Bk-PVsiI_zKiG1SLeINPJk)=%TmSj<$MSzyJ6wszzA~`yDR@r z?dJL#pv@`I%zU-8!qaVVlwwT~E`=lK4;0LX37kF|Xxj49UgrQf!=XF@4!XTKuHP$S zOj9GiVwD#vYN)8G1;PSg!o>N+^7Hbd?tQFvTc6f2Pw!x#+FGI4Y(46{hKLi1py49L z((eI)=Wb)eW)BZdzw=$=UaM{M?SN|(xJ7JQ;(VAmya8_oktin@7wVHsr^j3CX7>kE zi^=)x>+8-=oBE5uAD(jT5@FcGEZCH+tbPIL?!Wt+3?HKhon@6D*xOQgV1O`?m}p|! z$r*&OZF+iqx!ocva)N&va!|c*^N(Tbxl;=-pyc}U1`DKUaYWr&h3dDmUCQXN=90_< zX)n~HbO&52!=gcZCA;CU) z=pF6({&Cjsrl>Bt@$h!2$B~#;oS;H0c>*8M&0LhrBJPjB8-)N*M?)6!wI+n&bL_qe zZG&OF{Jp&MwxNn}%y-xj8i?3z@!gb1?&>x+4h~!Sb+ref2O-e>&6`t}Lq)BgFO`Fk z?fRWF@1UTU`c_APh?kEKuC=~yZed|zZtiyd;`HdKi;;hs z`ZC5F>D_ZFv?U+*vsU}#KPZd!`FVgCsGh{dfo5mIZ5QCBP(^?=JvHZh6fzqB9sc{+ z-rO ziT<_;IFjRaKqa?s%ZH8d{To@MeOP{?gb)tsH{OWEOn)Og4q2_7QI3CHHEnf@{eAvKW+>Hgj@PbFJ)rBqJf?ezw21*H_k* zGFDYpx0PMDGo9T9zJYbn*(2W$-a#Kx4*u44S+& zZNfz!jr*$Yc&}I_c9zAL%a?0I&k2o}?S*i~9;M82BV@*}FdKtQ zYE&?pe(ew766VprZnh@g5Nq)^KDF#e802Bi?*ou;kGTR_UeEhMNUNN$ZlhU?RxdYM zPZc_*9~7BR^yk%y6=ch`0KiWCb?Oap8}>!;cp>a82+qTu5V45 z>l5}#xo zA2zFgklP>o$*XN`YiMZQF@E8rXbdu2p)n}|KauuM&!Hv(^a|NPtXOarJD=m$rx)F< zrr+2>ohYG5HXCDw5SB+O_Hy*n#ZCoO-WDTfrh^w`@ZRp?veonpn8FVw2fwfjn&9^Z z?51A*6@d@NF%GYmH2ao<692qZd7*U?E8PqY+@V-3DkHj*kV>RQjtxYT@1O8l{_;s5 zk|Ph8i$+!4*v{05Y=7!iDYB<<8+vd0_rFEd;k+%*KB^$}dJL(J18wM{h#I*av!tzG z!aLUy=+DL8*f^D}ZVVEiam-u_o|i^O4 zvb__5pLJRfd$1j{ESxqTD>7pkNHFiSda~4lbgOy1TnIQ^-YJOru(fHYH6b z(Ma&~eGn4o(T8`fYV}fBjODm#18~9>QM?3R>CT{&Sfn2;f@^HH6wvPEP2U zm~720jxNrLalf`*y*+>iFQS}&8f?x@2~ABpK>=NUh3@bU|F+BqmiVup-2!M;b?((3 z|03;ANjHDH9c?VfG-w)rrec!_Atm*K3~fXpia07>9T5@JaPivP_>WMRq=1oIBf{Iq!cNjqr^?SWHa6BB?j^!={%J#c5`IF?n^sU$laZ_rVdU5{3mRKvV{UiYxIn%Xt%h8lPoPdi z$Y>>eQFcO!SP6A?Xfs_%3uWb+lf6{kv_nX;CAD=HbyU{`&?svPhmsvZsyj{1q{+H5Rb{&nKjis%Y zR#tn*514^Oks|ETzmCRzK6Z|Q?*`^7FTp5X7>D1HKNyrBDG{y0N+lvEI~jumu! zh7|Gfydw|vxkV*HG$7{x>drr&umD>e8M$WSZbt)*2^e{C_JUY*3uCp(`RD@{xgulf zoynMgm7$dw2GqttDzF|-p`3^OL?!&(C2xhDTo%#R!#`2Kg)-bbJvU=~mK~+1s@<1X ziSwDzz!>FwCKaB-E*4{ZhWr`c|E{`AgJ-LR6cjpe2|QS*K8iYBT1t(|ivKp& z)E&#H|5DbKFg7QA?`m&HG)XZJK!(#7xKE64HHus+KoNLq{pkA_oO(iiIB z6XT~7JF^Rz7Za7zlF-ndjf|KBWQbY&w^ze9{?EF)Z74*)dl8;StzkOW8iG+t&d1i} zU|i95UR1fY#1!{1=AP;Z>_2X)<99)_Hq&bH0&LIcCx2D&)%vTQ>ieGezSNm!FJ53W zqddr^qm|v7N!H9Rl(9R4q_4(6+#GBcZ1L6xJ7%U86`746-C-T@cZEoGP*zCMjr>qT zUgH8!HftvI*NowpZ|`4_y5nzJP!iNN%s_WX50|on_T@qlnQ+nU?vBqTj;v|a&6|r3 zr_kO%sBxNewqES%icGw;OZ&XSP#)e8cs6Rzb`D%v9}5bPsk;Tc)3~W|5;QHfTr(M4 zI-!?U&Qj-1yi75#HfE8k5}vrqIY3Y!*8Z+@{rJbP2(t}Z_N(?agW#2lhWB{b=l5I5 z{QJzj6*FtbD=u#JQud26EwCSlN2qprL!1ad)X45I9c>mJ8rEifycqQDUg#Fx+dJae6xiZVLS!#FSJ77$gu8+QV zHi+Hve4NVaEAOze8EmxO95CN*5QDkr;UgKy2snkf{z2Mky=*93KK25QXSuL2N4^^bqi z1zAMRNfZQpLdNiso^d}94x9SNNf2(f)fv)so+w(@h8x zliH&hCur93-^D$}Ag0wMap>C2CiR9+?fp8sNO;P2lweKUM6IUlH541v1J^y~E664^ zQrb;q2?fqwkvb>KI!|w0SUDHMZ@ene8K}@{UfIYw08s^(pIa;oQra!Xfw8l8ay@&> zEjBAM?#jtq?Rt|KbwtI)sy*+4WO9I=xp4!~N&rOr)$RSgv%qm!KErl)j%ZnB*dMjmJ(2zT`H@%hj6%mxuG-nhc9WJ!%o`}U-JpL4UNxG=E_ zBU9n*ev>na;?V~5lHpMW`m?np)Fq@eaZ`jli?IELH^DN=&(B|OUjBuL=N1^qQD5(7 zbz^3rq~ylK(jFET23!gX3JQ{vu#sm`!@HC0AG4pYXc-wxib~9X{VFLg$5d^Qf#agg zr|4%c5}gWdA~V1ap_F1L{1+Gyh=y;X?P+lKxcjw4^s}LfUUOV#xUSQ1 zdq81bU2%SKV`FQ1InuuPEMTTqP*7m?<>cYy1YXyN`8(Qdg2x?DG4Jp1qaq@+3EF_l zDfIsDfy>srhg`Rra|I;y*7s>0c2EmI?Ys6lCvLR!0iEs3^Ei+sqfbt8KKXWBc=^lY zlCZnI5Oi=z^7n^;C%XWbkgSYnUH3iOsTD@v=ZBEGM^m%H)E824&Tb@gLGX;Ti%Y#z z12CZI0)E+bdl3-cN7y&5gobElVrE9o+&e$Xnj$Ty5R~q`66Z(R4chn<9$ra?#%^gq zYR4>oNPU7%X~g>{e?MO$7cEDOFUJn9ZE*p3b+ts@?LV6ow$W(U)s>!Ui$^O# z8onYTMaXR-iJ)-bH`ttB*K=(w_~9lKv`c#$(#6TVdnUR)FJW#*E~aSArzI6`_{1QU zDMV#^3YxT}Br;kqQ7Tj^U;&;ty|BQ`&+2QKjlHf%G>}B~Dm1k!z{ASwn(NRs%Du44 z5&3D><%gWm<3G~c+4wph7uPK%+XsK--K%=b_5AOQ8Z{Qmao2`q@qYe2?d|^jYwc03 zO+>tV_CEo&t4F|{^CkA}1I1LZ%Q11#`w%OaPhXFs>)O}nzi%%r`_6n9JKGl*ho`_w z<$YeGDmHZZU;h60N3o;Mc{WbgtDp9Jr0$!0uwUi}zRj$amY36xkB-nVj?mM!#U;lk zC1LhH>YFPY|CVtzmoYb&Fg{958JY=58A-@XDy!SbY5Q}XQ$2DGQ_nFw?o?%@*8e3x z@a?;sUZ93{jWXR%E&_Qko8K37&vx?lHP2{5-e!-7Sfw>e#w&wwcmqlj_2r4Gld@CYGfz&sHo=)ugs)QxEDA@0Mxx+$8an zFlG6n!B#zAC)C()P=9$Fn)*>JPBFi=j8I$QFBJN}1aM3Qht&_DtJrXy>YRA+k!S-5 z1{;a=i?z_{tV{#5>;qs43V&TieX_)H+yNK z?S@a;(jQ@i>re*rF8mXApqaIyzWKqq&`3Dd2>C_V@0xMoIYFY9OAGGVapY;EvaH7p z7;pX-()(yM@S@upBuhi7op8RxCv)}LBaGGyOa_OpYau{1>3lY6pei$?Y^Mt>j1%&> zvm3OyZ@}D4bxe#iOe*gzL(Hh1R>O`R%%}GlA;Q!!^yjx^kuOPRR15yB3FNq}$fycZ z_@JFm%dW0y4{5JZ&@;hJDky9VCj8EDSe#H!w8 z^@V(HisciW(?!C^HLp@6z+&4o`RN#v87Qzx7GD>vG@U?^ZO4YH2JDG1w_iEG^!F9_4E^ z8481&450U_*mGTx>|A^G6So>RB<@Ii`z&drjkavxi!EYI(Ge_Zxzr=WJl4IS}yNW+omsc0+J+a>k9&pi32)-)&}eb#%W8 zf!O5m0MPGT3e{~srQ8I@#54s!u7UYnCI$xwM@M^wri1`zE+5~^SSlOgEYQIM^JKtq zoWbuj1CT1`?|>ax-~3MLboKOqv22eSz{x8oUs#I^ETjMPYa1Ey@$x=yr)X(G#wzBG zj9dehvV(&GFqi;nzpO1RPR^{-y&ty@vwWVP4i|4695jcFAl5d0P6v>l2Q*}5Rg8A) zfhu=BVvh;XP|o+HHBxp5^%T#@c6pZHV$yA}6;^I=8ur{P5u+*G_*l`h{2+60}rNV)c z(NQ*5R(prq(UFk~mUs=#l=Q64rL`rYB_V!ZT?r4{8}zT$YyX*|fcwyUcQ+u!jjE_f zTUi-9JL~DmVRi0e43Oq73au+y0gjpV77k|@#HfLTgO-7Tm7t)Jw6u~EI-}s~qB@NHd3nR8TPsD2)^4Q*q?mvqIl3Sz=@C{D!kW^WxMc1Z)aH>1 z1qJzjMk{wyD)`WA@?7A$0E|gXEY)b{>su^~ko%%f#wNxEecm14hjX{Ly9qKgne_R6 zp01%hiP2I3xj~lK-N|5O;anpk$?W_*tgVrdkWlrYa?8HwT{%;7aBu+78$Pa= z5iEN#{4)l`=RSQpp?6LW9)Wnlroqnep~_T5@1*2pG7j!XEjIIKu#Uj(ofNx@^_Ldj z>+c}nFGyacAL=@0t9yIv8}Is% z;*w9t!@@+x`Xu@@uTf)b*a$p`Ok$+t`1Eakov*R?!dPSCqG|ua%h)A8|C0C&o00!$ z#Z9OWB$7y8qP);-3M^#hGQB~Z^ioH)+NeMAr*~^q zcCh64Kn?htnk5vRP?qh#)1){#VxNt~zV!t|QUyU41VibEBDUibDa9vDWq{quxm>Es zTx=;y+oa_N_*Ol z9-OD2hhCyB=rqO_yv1or8l$NEFr{p2RCte{#s70q9c#&<6D^gyY+=(MYkij$kW~li z^WKWh<2@~G#i&miEPS8f0KGicr_K2bjrtcmhRVAjeLBwY!B6OE`$le|Jr!2F8Jcnz z!3255e5aUqLJyv>&pR2vwf-nku#>dx0RBprom!6Yz`W~1W^B49vzE85FGP_YjRG1P z`!^o@U|oo5TCX{hQ=N|OP_45{O4xw@_ zOsNrtqsM$>kVom{^9Eb4NTb}s1K70o+;9p6^@*cD$?T0Y`;tpmfWu`f$i|oQ{;K24 z>8#rQ?t;3gagXfeNL^Q~9cR=Wq)h`Meb8Z_T-D5~@+}L5up6_As|qf3K7%R*cL+wD zw)OZiiA9}FB(W66}Kn;osU$_kru0W%;Lzl5X@`|QWtKDu8Fd-#$5RBMf*w_Gj zTdXxlig6-;IWAW~V>EsfsVjrSW$rs_4`Sq!o)|&~;Z2jJ1yXRX+SWC04r!4UuwMUjBM7womTBZ$118 z+Y~&4U_?5SF^l`{d_0}>Ad(ps>C|C?@F)EAIMT+4N`z+^8BRiAU`}p{Rt7Zm$u)0m zWa^(kX+mTU376;Pa7V+Qb7i26=2X8_Q+F9iGt@UE^%~>3BhbY2-o2O`_DEdFSEaG< z@Wlb~*Sd~j)MnA{0~wtmcXF4W7)Q10f;;-xF$?PU9fhV|aod$>(~Mi(jOYn#=!mKk zT74Bsj4<9VoWWzuDgmM)Ap1iXg^$G9+4-J-H}n(G6f1yvp-9SH zCLc54;1EJ1BKRE!Fc#+TQaV3)%9^T~g`7_2s*NTfAiSHKmovF|V~0}N%zn!&DD?IC z*xRF*K8A#ZEImE~rzJpv23#*dcLh{;VBhKU@v`aj{&Wa{*5%~o?;ajziHE5{fYWr_ z6y#%LZ5Jej|kc=YS zo)^zoR#8#%?cVOjVFC*QRmafK(9zM+*%|-o;P5c_iUJ~q4LsB{KaYjZ!$9STet_8x z=r>_wCmjTTqw4d!T}PP50LkJE!>FPX%u-Bbbaa9&f+#xU>&f>Ma4YcvFt{^73-PwRmszu5 zH8}<0k&%f>e+;U4@Oz982ZxU~FK}Fw3kgFRaW;|E~O}{T*mO>vvu!1}y!p$1w!B4kTf+KvCTt zzL~gQEG(~tdewyvWq%tAxjR`nScG^PrZ=g_ZuWRI4po95_%2ty%r`IIUSQW)dQ~5B z_g86a1iQnUCLtf3(`h!}-(K!7S6$3M1lyRe8Y04AWfdYOC**)uxrmmjycPPdzC1|2 zqJ-}B_^(iG3vV0pNJ&W;8Wo2iCyyX6MrGLJ(NahiY+K~y6Xdh&vj-UdmjC$Donft) z{7&?zomId;nU$Yf@9Qhq#RDbF3oXqJrb|x^>biy6rxKNkce>*hvQeG*Xh|nN-}>&B zir-pMtT!7x(t8zx$C2*|m<2XzXwHfe2}BmkF@n)+2>(_8NHdp;BdBN?lwb#P%P!`h zlcIe~p$7RPYgcq;A1l((L)c*G%he`45m_4(J!|s7D$)+Tv*qp$RO$V+rV}Nhx2<>$ zlS5yBcrh5FBGThHN<~DiHrV!BMYyFaoGKa$ysfu}(_IhqY>;K!R$pGG8o7t_&-^i1 zY0CLV7Eq<|NSWZy$;<31zV>imX8Y@gZ&vbN?j+>o5~8H;&QUX~Y4q`7q*mxwbMs~8 z@~*wIaL-KQA82@OL&a0=Qea%E!Cv!$^VW(bS9MIMK&y?p~M6GtQ;p~O{VjC7-Z&stbEq`TI)Fqe(p z&N<(;a5Ug1;znp3BUPkNk%ZCIQHhthZ*sa__)3lP95>>k*&BkPHK%G;g$`C3}$OPj{Zw>U~ zN3#Th$*2h@>Z556~tQ53AmFM z43ixB(e6|*!t0#cJqPdod<**WdLM&f0cJ)EE~Q z0woR#1W69*Sb7NPsp^OzSC=#wS5_igP-Fc_)s@x85H-S#AZ>9CP-}8N&(H!Jj_>g0 z*5#37zcX2GyAKW|kn6)nLlplyuU*q&l#R+AHWqP|WQ}#{kyVeYR+NnVCDE{zivaay z!TQ;yX2)-miK&KZ8$046?}d|*iv;|#u?a$X|2;*jGyw%SXdI+aHac!Y-@3A?$uYgmzwWbpZ2oZ*+Kppmj00^eSI-f>pmv9O zxR_6UC>clz0}kiib=yuTExg$_dU+r*^^86~2!;3XNKM+f$ZV}o09Eui>g;%AoShGr z9?VH=kW8xlIrPjS?@@GeYy|KtataaS;|klhEsqw0yek|h{TjQuxjmxa@(QU;&2mU6 z2L>g+2k61V@#7ph41CNLvkhi|cJ59+x%cLZmmCCB4RA(wa&7m_P?GeBTGd(BU6Gu@ zL;AZ`mPBhtSpALHwK}u$^f~0LVy{M%8Swnhk9!xHkPkpd(71WzOX~Y3JXy{x%uLT_ zDVKyILSVc%f}K7;EtX~$ZtRc~<$vfsxo&m=Xk0^gSAS%Gs&y`OI?^0_z2 zX8V7H-Hna+nwaSD@~;{NhC%?oBHFBp!Y51%58G-bmtP}=fgWK*tt+U1Z)n>4DJ?SM?{bI+0p+a+mu0_n zNXVUW*f*IYGv?!!;kU)5ij5}lTt5rpmE_nDM_gn0fSFT`q3Ir(QiMF!nb|w8(akaQ z1vs$1=il$nfZ9fnqKIIO-xDeSg8>d(Qbb4^IQj^NT<@;CG0#SmDBt8DTEZr3`u+P8&rsa4|8t$C?l z{!P}it)FI+M$ZNE_p1#&Rt=j{NP{bZ&_6_`BRi1)oGt&h0+{#Y1oSwi*M?&05$}uw z$Z3V1vVF=CGdZ1p(%;BmKBgtiz~qmet@}u(7wVheVso7<^7+I(TrLVzAnB+B)JI4> zv7&EH<5+#5tm7v|O`hm-((Mzzh~2nO@t`N0wE$toqb5|4s}u_NB|DoUA0)y6?WPD?Xr$vo#P8Yxjc*uVU?7NK4C zyl*~U{A$m%UHD3l_|#yrmZSjcmRih>fQXQ=>3strQ3F{Ft=2EjgZ@#}3K_qFe$3Ia z57XuJzI-r>r?9ZlVQY79&k<;XZpR!eWD*h*_AV}n(b4@lJ{}(*w*bDAwzi$tzon%m z71QUJm-Mu>|E7O@e7(36rNpdU1wd`^zBvdc@$Rx{2a0P=&5U_l)I4tm0DFq~`n@ne z-+13R-^>(Rze#xLY_7PgOL+6(yeC_Lv2eK zWxhL66*ZcNEk|X3WR}omA2|`X#trj8BGF? z>2noS)E5yO+jMFGU@|w?g(@{l%fswt9Gvdo>n|qO2vk}veXV83_Fs;kj?OkV_7*1= zcK`NAlXH!XRDi+m$jB0SO`>BJCvI|dbeF)pv_kDKv-xaB24RQ*IemC;iClx%%V$2* z6oU?gM$Lk;VJE_`>kt;2vn*rm;PZyI6;VPmwyBac4C6Cx-JHafDj*F`sTGj z;qBAlm}4E_cCyzMC3JUUwG(7bwKB7jP={uccH*f2{I2;m%xn@H8$1D$mq%Lf5a5zb zi>!5+ZM3<|-d6O+^zFW`A>iW867+e#-j@v!N%U~HK}JDoXl!Kj)R}k7#b}Jd>Jz=K zERReOEu}LD(IevazzUuCOgJE5NP}8;xCiXJRTWDgp@XOk7-iz?3&R z#GDg8CPj(?lT`%b)Up)l1CgqcqqTpJcQ2r0Y%o)k>Ar?Xyco!nyWjQ*Jp!^j*d(~ zfQOHbgNv=5Tj<3Z^fERFc_P3WHnHX}G&{HVcsth@Q5P`Rw=|UP`>Apk?azCa!Mh;o z;RK{RxMj!|k@XeR z?~X-^8!8G`jy^~1gSTUN2$8+)?FsTJK3-FWGP?2aGN~^p%2IY@zYIO;H7fS9ZTDsH zrhqeg?}^jHNdwSDz?%-Y8}`FDe_Z-Zda2W>{iEojg!-yE2=CA8Rb?31)wG8VVpuv! zp?eKRX(A)^>)r~>OVQ85dT!}ehZ*z3?cR*~h0ZVZ*b6gCYIQ_(2>0v6`AM{sU}{djp2twHshw$zJl}- zZ3J8uKgJXAt*xy%Z5uXQJsw(|oclhNlS&ZS{gRv6>m{_QX0J0LlW>FymS1hO)dLYu zL0b--*F8FXbvHAr{S_~;;C~-*X+`wA){cDOSw5Zfe5qqT3Zf&Dfb-|Kz6{O?!WFxy z!J8e;=;%Dx0Q(&osG6k6Y(G^bDydS;5N77oe_B>^9_d{looEeyEXa1&?zZE%sU2Xq!?06Zpk-AtBJ)k#|z%bgHiV&)eDFp6qr1#QpYY8smcc zn_i3K!UKbKb2}lP>vm7Rl&kLb-JQUJyH(}x#`$VvYim}QAtAzJSq4L8tv(JQMj9hA zD`@B--Ug(wRWn(cnW-rm3^a5!w6w>^$EiPqNT|b_BzErr{R+4PoRN`HS6A1TLCD`? z!#>d8uZP%P1HA)Ax_8gN_wU)FJDDOM&>)n97{mywnk9onL9sj2;O zT!oTyw4})&sQK+j#~8;m`jQ(AurvfDRa=W~exFrQ$?!?2O;{5MIq-o85lLo~5DTze ze(k>*M2OyYy|>z)Kh+R=z3N@tZRX2$`KsIi_kbtfUUlVaY6@Nb-#C_y4bVw%EW@#g zennjbt_4T3T(-`@Mw7L8;pRjPh^jh_RQQ%(P~bk7xyukz1PpH5YukMjQKMGH8flmA zPWKb{vDC1n-~ly}X!Z5Y4gB>Kb@-AS<$e!K-%&G<)E~dZWaIrkVc(eZ{S;haDDK*n z@4yZ)Dv!4!{MrEHt>)uRpWSx|&01vnH4+k{PJd_de8nHCuk)qJKu7!>OadMslLPjf z<6{$Y^6QdHN}r4~)6++hW5!RZ6 zwyCMf*Nz`Hl<4I%Pu?`z$XE?|dHhed6d!;GC5nxOl@QNPx9uDF1q-ibor^``rFdHG zz|?FyHbP#$*Wdq2+*UIA zEDdVdYGhtsk~NRt56FJ5V}`?>VvcNSlBSpXGqdp(aZYQkIJ3L{FhrS4ve1<} zZ5j%h{Kq~M)ED*??{mPVmyRxM+F^C|pNqbpew;=^vQv9UT8WyDmR>0DejfGU59D@N z9(I}&(XITO4jfP`Omho#=I?gL6@iPh<%F9<2T`V^K|LE8>Ep4Hro=3d)*|0WeZBd& zlk3otxan&@a7IMKZQn`2C{%3n%$GOvbr57T@tr-dtKsE^zfR*te^b@)Mz_AN$2|dO z)n?E_^^f4kE<>{#XTN=NG=lIUc>lS$-X-(_2@Zzqzsu?@oTD(7<0%!X#8Y&=eb0`E zSoj^(S*1lBV$O}q4xEEBxc!ml+*26qpKo{Z zy$EmNOewXnku;PY3@OthUpzwKs&Oqx(wMWvOpvCfh*iA7I;=-Q3)fV1ZtM6=!6 zuo+&k2(!ykEBSq)R79#bjia%cOhwWOIsb05i~Hx3Wx=J&MH zMe&XI*@qCA=I1c=8Q9LZ>ucBRhP~f-`64WE%c|G-j*gn_cHP^c;T8;#nufiJ7{6MJ z&q;{k!`Ni-bYbiYk_e;4sETk}?~wB;4IUv@wz{3f-7z@W@>h~% zu)cv*adESV3V3ecU>g8HT^>V?pxfw3`bKtKBD>&-+Hqd29Q@C?HrlXmQ7ShCo;Nm{ zoFn~x5M#nQJ=e;#ZenpDJikTI`*)lC4r9{G-jR_sdf%M|s~sw|V|5t|DmBb%{u1e^ z*ULH4o1qLHETx5yc{z}^Ts*r!d>L)^s-Xkhx^g?hg-+OADmMZ7c7U&O8K`u(Fx7M9 zw0`K|hf`Ge3-IYlw8Ceo;uDy9uqgv^5NQ16$2wIJnAap2FP{mSQxJBj(b36&S!^hQ ziV|GIC@12iVt0)9znev*56t=e= z#pr5#n^90ub{Tp_-U%{b?-CwELP0gRwvssZym(v!yPSHFZ65 zosKABvTv*x)lBI2#H#+Nc?pno2Ppfx5BBzcy90TEgP^VeYGny{nm&L$@#XX9Z{H=z zW@|e->gw-{YLk;S_V$NrJNj;8`txOz+a|zHLSAXJo!Q|yXhdjmr`;I>;S@*ruWsJ5 z3!|q;)45i6?a3niX4JT5)CD~*30h`D5Zy5hbb-M`_#A z&1~!st~QRh6HdARc*$*n#6B^XAkMNvcyj-D@xLe(pnXb9H`4Q0ZOXOB}6u{soX8t)c zJv7};NlW$9>#8+F$lcBB;N}nm18~4hF59@Y9d09kFM-Bj8z5II8@>o(kw&bXzBo6I zSqY(uhr^^$b*rJJEzbD6V;wm3$dnrWk0)xxE{7C~Us{up(zrPmT*MY2Dwc+`4ME&d z!fPA;`4~D71Iya4;^@S!9O79p1yOl5JR<4~d9n((cCC4IpIF8W>t8eN#=^x{%qu}I znQ)}ATlC(?y(ji&@j7w7>P7f#qf@B5>gw_72FTiuJyP^OL3`9`T@IxqAH+<8B0^lZ z5s&s0TFE4M6lN`A;zh52A5T9*nMYN&=2+Yr9nRHe?vXge=^cOh

    2~<_;kG5TUWJ z3^9Z$1(Do1yK|TUAeYF(*$?-TRt$VHeRw- zX{nw1-?w*bgzapQq-~y0Uno9_Agy1BQ43doS05;#+Py2d&hZZqqWbYmFUKE_uXyaI%i@e2YhnPcQ^kKxoBqNJaNC~IflCFWi*@lJTj5f_8gIr zlQNW$?JMg#iMq*m6oylfOI}a~17$3!8U0VdMtrI?vQ#m1>H*l|w5YZ9TlE152iHFBj!)&p4U~Q~Ga; zZnj)(G0wwr0znASLC@);;UjIq52}0#s&3RQk9=r$Td|{;(xR#p>^`dL=gzpX~88^S?Ep2 zkj$r@G6$OZa7LQ!6%G2v<*61~Up7=N&pDTUYP?<+i1-?I%KMqKGj})EB{MV6SOzK^ zdwXmK@5^owx3Q`FlU2ui)y%mav8QYNMfHuV8)SdpJ`= z3()P%pxa6gwtG~+_E;bmZ=)RuX<8WoT4vIO4ohm}H%{G6P(>mImuF0zP}~s=Nm+te zN{*2xOQ1DN!!PpYHm~xsF(-jHY*nP15=jfpUsDF5&uCbT9Wuo0Kf}IZ%B6<{l0^(` ziZXp#uc(_MLhXDN@0?8eJpcl9jSncl~_|(r&>cLm|L5`Mxvls2F051e%K~f zoUlKQ3DQys)WNA|i7~nPH^^!FxUthWxkvtoOPb2`E4U*%KR@Vhm~i2sJM+0Ll2UNo ztUNX5v__ENhR{}eq0lS=7I{XUhdtV=e>ECMO?K*z%c!Y@*d^>6U-wc)Jo|$jf&DMW zfn)>M;uSWrk~ypGW}?fTazHw_ydTxChYDo5?MQi0?9SxN_V)+s=@DgSo@>S#C9V%U z+E)-%;xOx_)kV~evLvIO0nB~POkN(Ie|c5z>*Lr}Qt;uo0OAjWT6cYY9gUTm31;Cg zp!CvBx$#E8=iSh}s4+Skr~PIU1`?_Zi~`FI!1{Oe5!+o?PTAEv;;{dlwxS`X2I<2K zYPyGNoK5v7L>^oKEnT-v7 zX}=Mg%CfUoFAob-3s29smIiFY<}o>VF=5@{P;-zIN3e%37pR8=YV5Zhrr5|&@uhEr zeS0ijGaJhjSot;^XM5V7NaILS5Q0FFOcB~{<#V}+h>8ME@IQuYSuG%Ju7_XY^o6k@ zA!nK?FCm)B`aRMJX^72Y6Q4bXrE(3Ki3zZXBK`V+%!9&$nig31AFmPXh$~*SirEJT zrm6udBQgV|IM~FU-ft)Sqa?&k{1UN%R1z%UbN{6^Gc{GqwSk$7EBrr2?IvD+4$6A7 zSWL)OL2PM2ESZ+Pnv*q$xE?SnSJCj-?!|zTFt|=3CR$^$W68+0r%+Q=4e;9ziy^Gs z)?QSUw8(#;#s&+#1EeFs88hXKY9y%v!*Ad=G6aj|yGM#d6_7GC8fz8L@yB$7rtFVY zBL*4SsErZsy*R^w5XM(ArCzHi}&k#78nR?v`~Ecy0wU-GZz zbw&_xqNrx7p0pkEVrCNP9s={Ox+^NnD{5;Q$Hu>p6}|zei!sHss3yld|Ei{}rXs?< zgp>qqCmtr+8VZJD5Yw=R9=m6k@9$cl?T5)>pX{$b*|A={=3rO(X8j&zeV@jnJYGuL z@9Z=~%ip&KX6J#8#=`}u)i`vQ(SH}9p2+NZX5I8k^u9ct{Wab3D(Y%c7xj*LYr$GB zlwd&u`TWhM`qSN=j}w@XAQ@TPS@i3iwpP?d%94qk92VHxkBRss>=+gHF+oFbLF4S4 z6YcC0c`kjwyE~RCT~CDY=Gh$o+NFW#)K>b(+tsz5e3#6)IJ%6lwrp>j*+T|#B6X{}@&(1j~ z_?Ufvoc-N#A?I!KwYx3V0aE0TT*AWg>a4o(f9~;p(viuMKVK}dlmdQ!>`VI`OdwoW znD~$#HU7~jKj2Aw$~NmUCN}M{xv55SH(#x8#z?~D;aT81@#*OC`D`)cI;Zp5P_~QW zh<%-KV5>fK)X3%8X(2>!wGd}5F$=j*znxV(6quYB8@M3`YfAbmER_^TPFNT2kjD4=>yw1v4!37uHXs*?S99Bisu zSNDtg`9o8wh(c)h{{73RPFi&~(kC8D?Q^W)Zy;iE^yMDYexAxJm0Uj8uNz*Z`+X?7 z!`1r>N%v;T<B;-Zalx$Z63jyZQ%>P<=zX@66E33h; z4}H7CmPI#sMvXd4`xo&@()w&g^gQ>m(`+4&1{<4}QU?!XD5YmEeYhLT(_n0{8WJx8 z0SEV7AAKzItIGX%RapQ^0BKFM=Nn zHPqu>aKD_E1BCiWx5%-X?_!-1QtAAr3UVJL|KO27hJacMxb=Nb&$wr_Tl6$Mt93g7 z-7e5!bg#S&s)bfJQM(NzYef^g@eyO-Bm!U_BBFC3sPy6@NByTgup8`7>UKH=wv@oe z3uO)X28={$NI6(8D?nnA!`7cKrR4IA!@66pPHs*nNjB3t0v+{GuDq?*(~R^6?{Dvn zdYvP#AH?@pfAAm924^C-(YEdE?7B53S>Jh0d_dp6F>|Am0@%WSa@Mo>_Yl=e$bt9aw(I_W0By=RZB z?_cSExawOUMBFszbvCzn+jx2}e`RBCboO|7TU{eO_dP#40>;oE|FQEL0oeN#;8?i0 zaEF8#6&vgJ=$bgCswVDhXegwJhVWzaA~Gg~|9EA7L1j1b)e5zBaYeOP4+@M8LWaok>oU^T_} zX@nGkM8z3{(d5ttS6Ex*W#=dF$HAK<1B>&dB+PO7%zbn1JR8}|@3nE~FvUa-I)jW1 z3{;GabiDWi6?Ju}_ojd+kZZ^^mKVY_n&gr z&fd<-rmv<4Wi>Q7rWxTShy@nxSkT`s#>JuDY5RTt0hS2?fg*sxXvNNSjGdL06%YZF zlKML}0;gM;Dyv!T8D7*rASD2hPjPK}-`?zxgU!r_sHxgJI<6&#+j#N!|ABja-e0gH zfZ83&ih_9O5G=sm-p&g!HBfQMcKG(MElfS#l^c`@setFC^t(nS}P19f=L%U8JWmgsG`lxL};#?%QG8ug2f(y zt9Nq5yz{%I7RN3uDX_Jo0^zq`dXj*$aw1x4%$%g$lq9(d0Cb8B9UTq7R_W7l4PegZ zi@Mo6I3$yoQ(c^xz-;)D4Bj{s^`Gs~(#il*j3Ogvi-Mh@B+Sedg@nW`9c)dXkFxWp zT#bS7K|^0VDJda6c^Df|x@{#3ouk1dnN+&DL@#T)3--kga1Y3< z(dWSIb$6rY5~khZeQ1SWMb&U(lrB6{3K<#kp7;FRabVHmGG3qq`D}H6FJA2pGVs`iUPEQHY32|{mI-HdgcN9()8yL z!FI1m+fQ$7^ltdhQ|GSK>VJ+>v!C}S&vxFUFJYiiU}H}jh0wO=?Y^sM^m@kbhmro?(aUgwAk}r3!*F9>8|Yn=Xv+%m-Fpn1m8bN7Zg~a z@K}c4nWUD4F+#e*RQFc0VKL^_o~0^{fct!j9o>cXbq=;b#iMS6k_!d7_2Ig({FBy9 zg3Y1vK?|zP&92W6a2w?eHNOAr`%=(TtCynVJ#pWk3{tJgz;4q9U}<|~0^;qIuLCCI zzUp_;9K6MD%KDrd-dya*bQxE)xyPm9OKD`8e!4GhBURDO#p}bI);zC&#(x&M!pKP` zbBqu+EN5&nZ7}Adm#qW{9Wc|pH~Xi8U3fy4@Hapa9v#v(;xvcCI}9!DLH0Z;$9Hqo z_YY@%+SyDKEP4O_`58@?k&v(sZcjw0qxKWBG~HW2*Nybo7W-bY3Oj(y3WM<`Lac`;XHE=jt4+$y3m zgqsdiL*|%KPpf%xoPFS*BfU4qA@}r}i%)rgFJ>r2eJtbUYWNMU7Dpr?z?(wBLof-7 zthxCNmWhb8R;$>4TwY=$vSZ%ywdXCLN~0PQv!nnEc{0?!Y-EMBn_NgtoREht?uzOd|ZX2)=Ywe;ktXg_=b~&gvja zs53(eHGN}85vm^sq8vU+ZHawpr;93WNh2fQDN?zk_*+h^($+Y_wwm|@=tBePWyEm! zCDFhpsB+8F7{c3?tX3KJLqq(k_20tdS&HEbfg{5!lIc11+KQi1SGq5J(DHM;Bh z-~HX)e&j0I;N6jU^5IyL;ehtyVrXk~URDl4K~4}SGdD92Pr7_-Sj^4!?e*=g$Ot5C z769`_{rE4x3sNJmZwCbAp^yT{*C3iKp8M4oRShnoO9QNZUB|MRF=rry~II{PDCKTTgt zQA;B&H!BMl%^#7x0QgGxk5klg7rJqFwUtvfbTHHv(FH!-K=m|pyv=W%Op76KtaE#1e}G z2?osVOZ#apBHcC!T%>pD$_+ z77uIJ!_pEkX-dPT&aTWZE~@J3O`*7p;Z#(VSy|c%HTXS`Hv<2@!v7wJhCg4HQ>Sx$ zU~_xketqWpJg&O|o*j2~0ADpbYsiitDjwqb>egXI|0ZV%6BX5kg&Bu-42)eLNT05*E(%lU6^ee&NV-0XE@_-y2L3YwBxjCa2Eyu(;})UHF-u>7)|+3*=z zho~JIydRNdTL_%1rLHbg#oF?6Bpq8iW~zG1785v5Vt{5g-4jzGOe9oFu)~2>H$HpB0{Ct~z>19X$#xUf1>}z|^ zvBfb1gAHI2iH(uId;I!ff6KqK=lW-M&>?m{M*!B9rCVYoMv<>%ikeM7OwIO4m!_dR z@NS96eqi*NTaVSw4wOUu;p=;(V^IL8iPqL8`rgjgCKjAA`FPM`o{q}G;{KGyZ4Dfi zJ(XPntzi3)_C8rm*(bq=pC-;(@; z%#e)ozbEl?a~pkcAp=i+VOJ`CJv1n>2C3vZun(jw_KF>Gc z&ySZ){hpz^5e9MF&b9S*0X1~EcLT+xVWfJ{=!hLO%pfUoPx6{$rIHF;e{+h$Z3@^W z{x7(x>XOS0APl|8)=yMCbTP~Tz~YIDsE4Gu;+RbzJ~7auLst`H@Assx7aQ&+R7dm;IjGG7;*OsDo7}Hg#OvDLuaG z6k;Seu}#RrC249KTMP!E-4aIKTc{vj%*W}QHRBCVYKNP z;*p_^dA(Tijd#%3a-lg#G^4|o5z#jjEBC`CgNk|+cM6N(^wh!?im#MD*{@8VUD6Yl z3wrbyA~z^IKXTJF(C6n(lP2?|ZuRYoq;PWcrCzeK>Z?rIlnlEoD7@Ax>TTSIr!q9Y8W6Y$W72XR7 zZx;vm!$LzlfLY2QuLr1AU)kLK?ABkP2?19JAT12|aj#c*W37>R34l89OkW=u76upKJCTPA*im-= z25KKizw>Nd!HMy@_xe}qNTAY_(UH;dB1rM@5OH6)61D&%BcPWJySUhnk!YQqoW4i7 zlSl(_!evJm7vV)@WN~0;GgqpVXHsDB>Gh{Uw)|phPDMq%gC>kV9~R40O#^s4ss4(K z((tjc#Mh_80c<6e+h6l&6?Ek<9_>!~L~agFZh`*-J%s6trh=*p3veZ*W6WpZ2Y-wK z$z>yqJRHeyyT`aQCIrNJHK^ZAlJzx4;tUKyOSflLs#E2-Q_`jpvIAmU z;t`?`D=`b$JH#BovK^T4L_|aYaWnxg{x1|!6;;*y`(=H>*KxLx7_57Umy|1^NT(B_Z7i}VSe!-ay9JSiQ zf00HsSOH@cgEg{}&8@G}*u z3+sz3N+OOENFQ}f^d_2MXQ|0&@)oxH+qN;eQf8Ug>U+K(V2SA>BTZ!_(FI872XMH! zU{Q49TTvP1_&s0XZG+fRue;2reV@MI-1t*`jr(VXaGSWhpi zIn^(HNePs~+Ja4>%3>n;}n|?eQevLJYwkkO`%{TDgIvo#r5!0dbvz+Po#f$emPSmBXky?-! zRfis~lk7YNC{_!5W?pMhK~JlY(9qTdnE?89-q&2D{7(}-G!8|F( zDI3?d7eS-+@rRh&vPDkK0*d)ZIZ}2_>*)0_^7p30R#@HP3`w_HTpM&m(e~9dNE+$UfCyoLJE7nX+PVtVK@rq=XHasg37!w~&)W zYSr~uv-jO_1Zqo>sQKgdVJ`S@j~@v!*;{F@?~e1I+55Dw=04h>PsH0w25rz`)n#EU zNEn-w#AiSgRvjYAb!Kc75|+$c_OP%qLR`8tAiiIfF0HVSkG@&8!M99MR;G6&c=`QA z!2FuoYN@63pKALTXGm*vrk(&rG-{r=_=AYfz;x#DGn|v=owY@I&f}z#FePD-#Iv4$fB$kIOODAzu4Z{S&QN>?hKT~7fcm}#d6*Nd2;(+L&CH4m9*^}hU$dvMF_{bTXIZ%^LyK=OE6ysQ>Gt9F*4Q(UwCD!s=zJGa-Ca}^_gt#j z$(Xc0AOK>=v90YnIQV(c*voml^sNwxFl|ECs%xnQI*8huniyI+7r*!Wk+YV@O>d`M%iwrn z{0Sfi0FW5r;a8koUi#gglk;~yZfz{fHiPZ!dOAA39y@QI*jZawmzT4;;#ynOn#=jT zHv{CLhzbOLu`zw%*Hvq`0Cmq{Jo!{BO58+%nceyF;~i|)-R5<9F|thV0|}|CtIPF) z;sz#8Tx@=L|6IM3x-FuPW(xTxT~&Uk-jS}Ydd$TwX zR8tsJ)GuPRaF}9Zv;|A~AT2-81Fphr#sRxrVqzk-N8;wA*7C;d#w+nJSa^GUk{m(b>1AWWK4pLzFDh~RBLIdgb`0qOiW-&Mjt7enYr3AYG+^D3(!$7z_F>RiDVu(OT49C0rOm7WK>KP?+nyZ^H$ub&S?w!9gd1|XFi*;fqj}>~f+Vk+R ze#?cKv@%Y{llR)`j7^s!FSIWyRV4{Kms@XjLFM1l->CP3 z&cgPpsI!TM!i7xQ@=z2rVyOu!skzePEE;~#_Rg|L_kDZod3W`HTsWSWI^15jvZv~D z)Ql=A&RC}kCMDQJQR8bkp3F1`n@iQcdbzgF`j=v1;C0W`*yZtguB;!xEBFe(x(u9hJ52nXiOJ)Y#%o6S6`w}m(e%1UuSu# zS+@gIQFHrYzk@WS^AyZ{LP$h5y};%8ch~>IH|6|(-KYDMYZ>`~GYx&l2=vh*gTxI6 z9`{f|ls|H%vu55Zxb??h&L*V9*hUo-XiVwX@l1ZNMgmmT_suOiju=agOaUga`H?P+TdAqC%pO@dlM=jXr{q6Jl;<^RpV(sN+BfA_H`_U3OOZRtbdMbx;MH_C@ zfBp1&<1dd*8ePud`pe&Wk;+KPCm`CtG&pE_t|fu+e9C7{B-m$76bRu!IM{8(NNMql zC=k>ciFPwPmOKH8MGru=NT>S=3`3i^5ui{M323t#kBg#Omo?S*5xE3KGJcPdF2(NAw>Sj za+y?VS%vz>grSgZp`=V|ZLk$e^uwYUN6K9iU0MI(C|8VPM$e#T=a^D}QuBi2$pq^u zzl&(G;h70I353D3|MOZL&Ak$2vQ)|);%*dbY$boKsrjo#Igf-$n$)#{0$hsz!NGos z@}y}bAoDjG4@g?i8Ge!vaBp}Jg}jG^J<^of7JQreGA+w5lh4e{<0GntOYAL^DqI#a zg^P|3A%H{Y=i3dU=Z`v*S*k&TTk$xMeFX@*F8gE2+q2t=F4XhE<+73^#5!c4pEyZC z4F)d1BqSY9hcU4xut?6IAMZa;*x2U#`}%&{tnTcKIk^C(7(es)yB?kq#{{tCV?QG4z@p<^hDfWQOEl5;cq6B!`6%_}ChDwNuQHB>=x_J6HSh9?z zxO1bChUu#+2lwwKnG6gVI$1mE8WZj89XZ~4>RM~x9wjTP6g4$rs&c2LNyahrh-tBt z(poA=j(of;#>dY}NsTte*{i7m(kb~;KB^AF?3#v#gz6#-hVY#o06l1uRJiQW9rTcp zP#2BK$O-zmiYJ#O30~emb@3#s@2;w{G2~7L;C=}yL(QniGcRp`GSw>^0X+^ALe(>Elr8t zX<=j2$!(9;E!P@}V_DkV+}8E(tgbHM=7xix-`0lL55o{*C-yzNOu%7#{OdAUugCEo zfwj7_l7Nu#?c_#X@_D>hXaElv7ng*jhsVQ-@NM_ zyB@wput*9K5e+>4Nsv82;Sgf>D?--&NxD?I4?ZFikf#6I<*G43Ep}KU} zn}~JvNhZz2pcP*$G7x+~4Aucf1H2QYuMg)yVEvHpk98b^NFxIR20|F(+V%ih49j-L zde-_HJ8X0wHSek>h($VEf%OO@S$R46_4IZ}Q)lnDlTAI)=jP`tEaon7(KQVSg&_Z5 z&(YD*!9r!Z;jF$awJj>f%cyq-{H+JY-z~P2tEzybFnj$OY|Y8h5voZoO7jn1Ai0Nw z+8R|uRaMNi>=&n6ltW~Eh=24=WN%nQ=q_6CeIK{jwxV2+y#a)ee!N*;AsG#%bXd2w zT?vyE*;mY}!oVRVzS*vakdlxlL@g)HJn+jI@r|@peg~Z2NF)(GhveFFy1Ca z8h`*iEG!yax@doA#L_XDh@baLT8N^#@d;TeS#epYnS>|<_g|6&f;2Q zEL}AeOzHscH!+3Y44XtMEGDX-I|@-I3|WD{PLKhh7_suRu+uPFs3&dyeiHaHO4`v_ z_<%({$aP@i?E&QFSg)I?pJreD274-O^2~cSHeWdQUo(wIw%_qkD<`6pRxM*ynkp5d%F+P>%M$=MJx=|mOiQ|6BnhX z3cpQkg9HWb74LN--YFIQV8NxE%AF3Vl_^&d^r{oT0tY;D8N5PPUA21hoHdd!=Q zNpr;a=EFL$Z9gZb0AkTej(qsfLjJ-(n@0y)%nxi(j@Kr^BfnPY8$rB+=2L`bK2fh* zCKsXh{W0IX`1Lhtn91bSmcn-8y<~*Foua5tGTM7I_(=XB_31ba2N3fNOw4ay`(?t!9V8^?nQ} z*MPo8@58D!|2H-h@|p|lsj|JDvbd~woBRjvn)>5gJ((C}tQE57!t)!+hhV5h0Uu+kePm7L3n>4D*I(~ z2Fqjc?inU$t?5rG=0c6xoeeQd|L*+$lFjFh_ehGSGiZZED$J_sKfXUFeW}v~{X60! z>T5hE@;L<}cP`}OA{v;=O0+1-1p1jJj_~?5$z)5S^SbMCL(w8{;N>i7xt(ZnR^E~X z-g7)2&uAibdpoMua#zHur@LG{cr-7<_Jk4Z5e0d1r~UJdAgss>;Y?tb*)Wmd`&4 znqyTGpbQ3qRP2snBivuqJz#3GGlbIRJj|}`%)}qP65gw)>|A?TtWPV0KBhY9fh5^l z|6C0j^W};Blk3e^%kTNH3VRANiXX3NSwNll>f(2e=kFFPO>}(0qkS>^Au( z)lYvMs&}zB8N7sDcX^IZPdkhcrvMMDMe`L84-cs!>G%AiY7KweAAjV_wz>oa4<^f4v*jcW z=E&^viO7Eb7maxKgMD&jjINqy@#|R}P$jYwWWOS@b7AA)klSgvaitCYBUhkMMUvK|r01ZuUx!N($rRd_v)1Sbr<6&J2G5#r5?HN-QD{ zY5f(VLJ;ki;ZPcllCN*Kd~Ib}h1Ka%E4RIayEE=TV4dtQ1Ia}V2Km0>ns&Hd#{6=J zdhGUjJ735y=X*Trum#{40FyynLf?N+fH&eR6Ow-4_Mbn40H<#!+GsSKuz-~JAkhK| zv%9Sg&A70lLVAWFzze7rK%&}Dx28WpIi0Ok9|FfH$jdpp0yv423oHh5Le~>~f_tOY z`7ff~j>VN71jhBv)zxjySXjqLC&EyAsrju7H({2O`Cb?QO-TtHJI>YHMj=ACf{JZ-ZNXC>z5^sTJ2LIqSoYjA4Q5I6YU;j%P^| zr7=TJ&Bm5!7nGF5{=#U04MTmwoz;(fjE&ra$STHmBLQ~_w-k!}{%+OkcNGInSTp2g(Pc!~97SJ`nPGmW z7E$PgdCpsP&@R-pB6vMNdoCbN`rnY}@;aaxg;u-H_F1&cq{6`YpEzS-Sp>~_$4jpe z^Rv21gai*tgoJLFH_UT!QhcN2mCeP}PL5wosU_gnbZM---x$0A!@dk@XND@M-D4ke z9hxLj4VVXqQb3)-{cG?zgo$Oyt=Zh#xj7ytsm0k4yGDEg>3v1fSaa9hHKob$2x_K4u9*-|2^dC=d~zLpO548wIRHNl^Sy zZkG@14PN610#}(`{ajuWb`SC^$C((!N{J~8>KT6JB}ScXb`^y#6@}+QU|3hX-<&Z3 z^a<-UlTC>(!N{raf#U26>2{;esVnkv*jmu#?PxdoJE6Mw723c-@!j`lglmz6z0?Mr z9v1lH@P|z{hcOf-tAWy+1I^qwJQEC&?#&x)&d1m6mtwG@N?l{4{aokKO(|dXjD>s^ z2UfVbfzJ>`TSOz?1Co|Mp18Ruw=tBA`Xu6i&1|mC817Z%o|oZ_^Z*}=kuCmK7B8}fsb7IkEXa978odk`21kz)7Qu=%>LHoD7@nO zMEVzQP@{hLtHr$@-U%(V8uUysn-X_p(bSMxi3Q9Sr#gm_%{1pSw+`f339MbpR7G#L z|M9BE9@vSYPe3MWmV(a(L0oEeWEC&jDkoo(ZpFd^8_74T25HhIyFGC!GlGP;n&dh@y)sN%S(|p8+qAzW5M(CP>Og`Yi;ZjspQpRm~6d~(rVhjH- zRea!ID&i66o-BbHq&&BxJFY)jw&9o)-g7blo|4I`-PL(<-$SfSfSLhC*_Ip&o(H9$ zaop&JR}fP2V=Kq9aI^rlR)U`Rjvx}#B7TJ&*GKe9_8m+vQeQUJ6j;=oN{`$nj5X6m z+T@;cPAw+_C71K)|Zuyjwx2o)CQkdDqZHcMRUsN^*F!F^ZvZ9HX z*H@@%`TO~|f8uK1LnhPAy@xG6=F|MEY{sE^e?zsKEaIh4*UMF;Nj?U0q`%focdOenz*}j?KL1uYy9b!8{((shylzaQ z0sfLn$l-N)Z7o=GBq#d|U-*rO_sPx<0?W=e3 zC1To)_7Nf!5b8{}LXFN=+Q`EZeke1f`H4 z-L)GJ4nLf&0s&fa6O5E?2PSfWf>bOrS}Yn+M3-UI6jT%xR_>lWscIn_z0o}o5D-X6 zgpvsQ@bYlDTy6vc$6??my#Z?YQdv>Kt0pU1+*D9dQG&3nrZS7YY6?FU*n?;ohyxT= z5|Y?XU>y!TG7N0un4Ljtih&{J^j+why*}g2+}a-Q8MlTD3Uq7Cx4kJM6Q9H0Krhs6 zKll5aMFl~AuZO6VGWWNq`oCg3&ENsvIm;r9s2(Z=lZJ%Sh&1Kf4`9 zbA`i;DKIs9fT2<)%vMlh;a_uc0rUnXW9$Hw0COhPVkVGyemS~Kdv*jkdD9#|JuQ~= zB_6#4D`{KX1)T|9MfonhT(UYU$8sP(?%cxq^u!?U-}=932gxudO3jjg@L^JF)({qr z!4zY^phlQgaYtrt<5M7*wmDcZDL)8_@X)aQ8Bnkg@fI+b3pxlgEur;PB1+ud;32zX zIFn$TMM!BK9T6Uxc0na2BN&jx9{D1-qf-E`H^zJPj)nA#KyK}_abynVTxLo_e0)eI z1bItGWu=BjeF`>7C7(w_M`dASBZe(2zjt{{2f?l;Vu!crkMH^Wiu~*v!OWSMX}22q z^}QDSbOq%7{ldb1K)VOw8UlS5wb95&$xlxWY9}KvF5Fr9VLX|3g({kb{t$0=!cl6(89K!~m0BC)u-nZW~RY4aNqJL?$<#np7Gg4d15ZE0{IY3S9 zA5&SR&jLcXSJ*!eMeYk^ME%KS^R(c0d$7*u77}_E9*byBLVz7$>u6)5WMi^2l^x#! ziQXroRM4MDCQ|TthIqS<-muE&8VXi(*KiQF$z(LoE7_@F-pD+;NIS92wXyDA)#1`n zUi3QCVAI2cujg@>yjVl4ANAs@5E=4{VT>X1d7G6U^#wzJ#!#TgW0d*~{=+MR_}VbgbQ3~0l=idRFOV(yk^N+j zpJ6%^Y;2rzjJM!#N$H`yX16OBr!_qoW1|kQaE#UjNDg}5!?9lSTGhk@}Bk_L{JFYh3^E2U#Nn& zER#wc(kc>riBijb!cfl7p1zUb>hw(fd zcf_((R+c^6jnP|IedT%(Cr(m=(p-V4-tOhSWsQ$*PPj)7+HhTc3F?ElT34YcCod+> zl&V2$bfe>4a*ce~u23 zNN?0!Q@oQph9H5ho-{(m!>lN$%A~M$CX%8t&4rwzqmYfwO45`#w5?5&TYB`F$&lD9 zp+CxEoi%WQjEe-4$Y9nz1|y1NV)$j2iM1^TQJeC(MG$`loNaHztV+FcKmBgJ#XqZc z&(iqLI>hEHa3vktk1h`l1LEJb>XttiOB+x z9EA6iZQ1l8XjM4)gfQd(@{b1ibZ1OCKsI1R8+*J}>a7ymRU;|pvdX|sJ~SwTt$6?b zm9^qb*fKou6{X2lEsf>;396QQJ@fF(F&yI3|K5_b@T*|`Y_{*HP^>Rs;+s7qHgZ78 z$_JJ|#Sesw(l4=&ovQ{&)_hP-WZ*0K|rTnUGZp0Cr^HyhuqV=ByuBn;yd z)8PL#zlS5nI&1k)BPofJcB2^*LbwQBU=ImGN_;X}E^6%36$;|S$jFF*^!H+7es^Ym zR#sjRCl#Z7+DZH|=7Ta+d>Oa`Pytid1o!FdMlaEvpPdlm9@SP?4{ie>L?Fw2eq(hN z&|@xd`WivN-+5SVd~*PZ3jF;#>bU9RyKcq1I3$-99(N%1#}x^P02}rLhO0k37cRl{ue-_ zm3zv^#V@Ta9sGWnoR1b&OPZCDmStgUU0qf|LqkVbNq>5Dg38uA+RX@%3K6NCiqik` zb`eMGD{BYtaBy*vD-VoLOo@wAno`0Ir%ZHj&CSJx4Qe(xH99QLcJk*)jhPvgK}1AD zkb{QUBBH&mttx;MIv^g?l5fuYulc^2oSdA7*b{z|OqNg|06eq+EB23@afP0@n^^T) zU!Z;YS5q@JBra?Qtj}nq+}*kDD5IPZardyuyAOt|P_*DZ>A1PMSukKB1pOBCc z(7zEJ8=|T$s<^nh4l5G%`7Ss6N~3Rh|)EZ5mJ)9?r1W) z%8H=6)HWAHZ_WPwwX(9lAHJDg?!=C=_{*+^%tsB26q%x+pdhi8-yez+-U~1Bhn17_ zVoPZ4TNyL~&Cpls1AOXm&1OqU1}-if=pWmI5u6^X92^5LCt>&b0+zTl&MvHIVuJf5 z4EaZOv&B;)JO%7v`8QFKV@rMz zAR{5l0+Bd!Rs#$=`r7m1LK|yQb+h2FdH7_KQ1~ETNV6aX^*UUUc&^JZ z!cep~hMiERd44~N$g1-{=;{gx@c(uPU)`@_*7dtRP7!%QxL#~*6EyIBBjcvwrJx|= zW~O4N;k8jfB)WjVS;cG}WgGK*-Jbb#HVDBX-9|=v`Zz^L5=l5va7tMa=HkW&;nk4U$w{-?6@fp0h2PdR)&b zr)2@N(x1noMzWclEOd!&FRS=JS=l*gr);0fwG>@x-m`lOVm_Qyq(d3;WafWIgd3`8 z@V?7cA(s`qDKGx0)|?2stSUWpOzB;}Q^$+QXZWY1c6VlRf{g^-6nxKbT{zm=Hv(qN zJg*P2U<&e>N|j6)+lZ~09{LZ)G#WqJf4(R5zI=Owq|c{B+|!IZhqs%jd~W7c%+Hz}Rc+DQGg4%ib)tTb+F(O|vLo0s(yU01po zVY?qPX5O*j3=rd!sMA7t%KjU4){{9=8Ij*;VKFn6&ZAYzq$a}OWj){4Aqa=1`#Hsb z)R^Ls1s~9;#+)5pl9g0~a73GmTU?&h+v-l$hD$QV#v_wz@mD$88gcv9)<$JbB!JEJ z_HY$`#T5JlE(7j_C_ZK{Nj=k^%m+z59Yqr&gCZO+5?jbMz?<@CEQQPu!tFC`40xU2 zMypB*NN4BYDyuYpBhDTX_Hgav)cmk&cqi@^NN}~sY7mFJ(Q0}k@-3y|7y9TOk?*ui zMMs+^mR>b3C28I|EYsvtQuK8IqC(CWmAsfH5W1CmP1ItL%F5u^P3mQH5Dy zcTic7$1-BuoRK&of`n0#pGOXw`uz-LOE7e?9HMKsrT*ghh~)Q+VlTWsu1S@z*^< zk{I`?isZ1Z9cjX$)z$QE__yu4DAhxecRS7;OX4Cp~Y-$Qnf@mt~`CLv^jy6?K8w(|0FKp_BxyDa`WgN}eK zFApzot@G99hV{~*goH%Vv8Y?@P?a9q}AwKYr80@hRIIE>5JC(As(lRww)`A&T z-I{lC+};J4`STki!1YzTdocmO*Y*2Ly@Bt`P<8hw7&rEtP38AcRn$aOIVN$Rc}MDL;we`^Y>+LvY+L` zwo5ICEDfWJx0nyVVsSA!N*PczWGE@;7Yx&?3lX4IHrv>S_oJ6I44!p#VXE*OwPasF^w%YU$0bEorFg$l^!Win;$+Ih&A^lfy7b=7rkXC!2_eekpZ|tpB+e zrg?#*E*h<53O_u2EM=*_ExNxOCPG*^AYXTK7gs{T$0JqYtlU3_cQ+C2D;CpXW{Z4a zkVLEbT zWwZY2Dfb*F8^X&z-`rSRv8JlUGOOlY*=bsLHsAPIgq&1US3!Pd zp>-NxaeR&C*ZnI;eyx)q#K+I!+2ZNbrq7qGi+0s(65APB?8B0XowejRQ>;&GCNw(tDj# z64a>~wEHIw(=nAcvhdP@h_0}l)X*bx%Ar=mj2;vyWS^ytp3Mtvu+^S zFNq{3S{u!0&lxG-`uVjNUr5kLEj?5)s8h{iLH!HUXyx)UEJezlqx z{?Wu80&4^i8*iitP?!_WcnNwBg3ky-d8gR3kgF(%fL6nYIJCMQBm-M0@1kYYX(5o z{f`za)~;ib*l@IBYFdoKE}grBwXSQaanok|3=rl9jm^hst)FQZBQVR%u~DEhQP=U9 zraep?%fbCh=qi$s5zPyBeufZ>{SN5p)EeO`9ElRX|7=1Fo1VuSclh_dZtFF{MN#)s~0_CrFm=Q=O(J}nTdZmPfiQ(5CkBPqtv6iq_NE6k#`mh1U9 zs7FzXM=3#t;B#@;b3jNMsa3q!V=CL=i3?2y(ijQXm;Xk`tm}C_=NCxD$GY|3J4-_4 z(8vm^y>8hb=!mvu>h-9z5@aAW1EXoV+P{x3C~H5The4HdpgT`&wIT}oxfkWN5*Agu zQX02<4qqc1MJU~?TPBs!K`Y8n{3F6QO@EeUZ1)rEj1|nN=;+6>+^(8i0Sgk)62_4gdYhZbea(lAJQ=o_t)Pbmp`@8I@E{W z>rMgZ()4C(BF@ATs5TdD7$DuDm!f&QN8UNKzG*uOQWH0asqCSULKLdDz?r zOMl$WPaf|S{Yj?L$H}cAq}PeK)C9Wld(nGz>|q$HeMHRTtHVPaEG%gJ%pcdeSg}zt zz%7u-R;U{uD(2F{T<}L%mvfe0RtenyJgqfYzRfuOTu4z`O@S>O>2z6!w7b83hmsi$OK)mu0FYUL ze~$zK_tOxLxv?ZSNQYp}MVp-y6;h}mFG#pYmg+yAFd?Wk3Z?z z+CQZo5D^AI09kv(+g&+9GM2F8eTTdfLO4>m<9TNR@b?(}IvThujwRq1!Up`nN>1AH zdEJQM|B(yB)I&0hUIK+l@vYz-?JYmEDz%r2a8x!+&H`>8m&aRixm>t82=oz9b&tN0V9Q_EsX9Bhn>M?vPoy z1CKr6E|X|&*DsOgf*3KtjT#SuwB)`?=*(36O^f;EtZe4EqOw|K6x!5falh-E~>idQyT zPcEUZ!pAw56wI%~8kqhz!;Up|JOQ9;va_qQvlW6OZ`6Z|(|%>>(bLO|=#Z^Oou($C z<$1<)K_UKsDCbmP&s?(O$Z1yaPla2l6$|V%;Cx1PdJT7T$~>_~O9XW8QzPTBZK&*;^ zpm(qKgu>T7jw+`-{h?BskHB!vRZ;;G*)`o6{4@$ueaZU3Tk!#y$R8SF#! zCJ6x+J_NCUtOqgpX>A`r?0a3cV$jxOiBPww|EHu#pi@DwYz&^wsDk~}*kv_C>!KR# z$|jp>cwqcR7PAjQ;;* z6M|}^45jy(QvBwPvQ4q4r5-an@hl~9Q8>VE6?bqfSEUBCEB^_iZmH(36E5h}`wOs} zvC-tAkmR6S#XtLRhK!RH#y(IZDfWOMUZuVjaw8+DE&mhM{3&(kc{IETatfU0KT}pbu?&FbVb(`RUgS*1{Yd?uJGfj6oMV!vfs7aWP$w@{K;!!Ih zF1~H)bB)w3L7Y>#hy6ns6LwN}FMRG$IOk+uuRxt!?f03h^Bb!dc|2#-zpRkqv_Oxq zrS&Loo&P}l%(uWOIcO>G8Qamv#^!ysapcB2aj8nUE?;!m1*!JN;yIG}Otp+Io_|GN z@-gXS32o7QWkpjbt+6YSIVrg@M5~lLJNY$E^ce;BC5c)z@u_lnkJ`wToIm|=a`%Q^ zW3*R$GBQUrfiuF=)bw*6esgq|y1?e-eL+VYf z@q9rMF2ZtNU0tn%?^z(mvaq(M|H>vem<;RF_i|p*j5HcwY8toq+^~LA_~>PSyUpT& zt2dcCS2xqj>FH7~JLG+gG?`;R)Y~;Tb%UxY?o~~|`wLHOmx-Mv-Jqox^U1PWTVIcE zT7xc#wrWMU(vRR;+ryxIDr4HlECE&)L|hvsmW1AWKk1L=&t6Eetp^j`D?iOw9jy%+$7@qu@vRI&OUY(*1Ky@5m-Ua_u zhz~inXJt{3X3!t^-3c3le9CEvJEjO?gM;BPX%2lx$8{HCsLymtsMv4c9bqI30&i-J z(VA=qSVGkiHZwXtK0fkvQ}Ert2P|Q2iRB1vL@0wVxXcyFQ^B)&m2AdAL`1^HSKyx1CPB-?7_?y>6lWkKP9K;Q zQ*OkGyvmc4uOsVSpO-_4ekKk#kNN8H{S_i3U_0;W<%bWwhX?&qIQ~Ua$8f_2!B>upR?0(7`~CZ2x4WAHAN{l?NZ8Rx}sbI82vP zLC*rI^S7s~q2+%>#H9QYiCH;023mR>L}glx<3}wEiIpiOEcU zRekjs6WKA@nHoKQJ?M(cYH=(0cC2#~xK!%#FOND~8y}w_hvjf)tYCbS%~Y=-dBu3r zK`e=lr4gd%eXG|1Xedn;ahI@_A-bo<6tX80q`nQzKlxorVp}9T;pFjR(-| zMMRh(%s>NyXpRW|D$j0$f;O>-2YE3ih;G9q4c*fE9ATVZES6}#V1q~sy+u;+h zryOnx_(;LbIPr{m^9lK<=~nQ?aF~;^!hf=VyMUq{4hp^lXZIaX+XU&D;NiB{Ku{1l zjgqCUM~C;PD!8= z<(?73`Icmnw?Ey1?JYSt-;_K7fxexczFk!p0YQ&I#xB^0YGB}2{GLOuS^ckz+}6lB z1z@lJYaYpob5?z0dbdf?CTeJ$(|+Dm!~$R2LV`B6u~|f47vI*JY$;W3V&$tCdenWt2587(zrHWw{@4)j!JRmT?^QgKgc2JPfAU{8?yw0?=`(a zczW45Y3-eK4BAf6Xh^bb>Ri<5%FXCe#Pefc((5$!|GQ_)jeSobAFPmfgA@mExhaTpH#g;v>*x zZi}NOh*^w46b_2s7DfZ+WT)k5{PmMEz^j`5pp|w$o@Jf(Q0fxhisAAD-6xZGX>@ed zf*)aF6*r-|u1RF?7nd;8j$$w!szH4ZQZ2?739EK%pA4G1mbb=cm#L7V*~EKNqH~n! zxcrRiQ&Fq^dad7_N$4ZJ5A&5gQ}kamFpX%}Y!%$5s>huKt@ zA;N!FD@#$te#4#2sF$pD%538*TCicsDylORO~PjtTFB>Y{H){n23mbyO$}RMn|ic7 zo{oZsyHb);5)i=6`dO{tWCBC*FuiDN16);aS@h>_$@EWo1%aTX=iXcXEVKs-1P!D=C@K!ayqLcr;^K zQ|*>%m$2#Hyp^3G46(Q4pZCL7#S12AM`yG`>lB2{q)Y0{#V_AqzhC?a00XAj!-=9( zLdIIuCE*b^5xr621}4!T2@w-cQyP2 z;m2l+Blts^b%|&sIvToem(R=PNBfe!Zgpj~yn^)1i3`v{0_LsD?QNo}g%ej``wX~( z04=QKepFNx5M*LCpW1dh&ne+m2F$nm`q`s(g2GG!Ro+&W9sq5>dwP=0DJm?4xY&r)79$7~`xX%q0a%29l-y)Czw^iI zgJdj0m)FCs!PonN!SmYz;a2za=SU*Zhzs^U0uumL_hN=vJ&Aq5IJB>?Bor)GJI68` z2kqxX55)6>Q&{9h5s$(K1Q3AzG~OO6YNU(|03vm))K`>U$>wqdOBNqcY|ar_b8Z6A zU`0($ZABp$=npTi9RVG^yS+f7ysi!fegHtK7D&dDd<1?+Bv}CxehpJEa7QD)6@_9I zm)df0(#NhPytsezc&F_;%ov(Xx)$bxqNcYw?Q{v-1ti=OmKf`8H|L6D|9@6+x)56( z)VT}H{crs~r@E)10Z3W(^_Q48()inr2D9M{;n(xYK;#v2fNJ;qd*TjiFk?3V+vmyC zmZ10JIdvP9>7d6X%9gR5g7n~@o;eiv(AZc;aQ=C6<(5A!Ez{H2B_&wv+Q)UktY9V- z6*xp2P?-$-$2x}SR(v*;| zWy$%I4hI!;*T&S9oCKh=<|;Bn+i!J73kN%{d9}Iz$|cm;p~Hz6ybIgK4~srv#4Gyy z*AS0`ogEi7%#8?}{gKR+iY6{}O^`I~?K;6XeCC<|Wj+l6Fk=Zlp(eDALiqY@HW94#|Od(3qx zFSLGq(D6jo;p4IddvrKRp)Ds$?EuhJ=7M83qs12#g}l`#i8zBWFc1tR#;`c@tthYQ zMC!0SAR)yM?q>!@`IxsYXC19*E=i-@(9lnYh6V|ET$t$T4=n5$%ETE21Q;j|h4w$6 zmxr&Xw?E!QL;?cdK_E^~k7o}rn}=JItG$!fg}J$@G1lQB+V!a?B?qOE_`WQ0&jR{~ zX0J&;oKruRdA}#!qsEli&$8S4fnfHNlh^*|KSJIA5i%MmA}TJqURIs)t?RDq?kv^1 zn=%R!60~{T@4m|dNTPf&&_WgARa z*?NP&KVJNRhPj3-8W|8+>nvRcDws8Xez&}LeSPmvK2d&tV;`UU_&0^KI*HRVyDZDj zwK?A_-J=cGV*4CBd}>Di#6A$p5`^e?-nc=}2!<;< zGD`hbIQH%qX~8M#>YFsV=T9|rYX-6Ca~t)Y2+TVi8!b%$67z#NBC0IqS2AHbx-;17 zDztsMun(R^%mcQy$zp^=(O>h!KiSG*4UKi_5@%@0YQ9xIdC4u)qj5zD;Zz&O1H-2X03;PyO z_5>ek&Ht&@cX6uwOZZ&Ln}#xN=-8*3UHd-II-3Ro(+JB+b47iu#v(sBAJ@M^?@4ImBOQ8#x=U9Q0vU}ZycijsZZY6IS z$QHF&RM)V-s`d9jwWkot>)JDnZP|yg3a}-cG7DDn%Ve$jFAhRfo#jO;)a0CAt&0tR z@2~XF{P$Xj>F?ymvq;%(Ay<=qxHgOu~CErmZhseq(P zRNeyf;Qnx`PB$nt(@#B&7#2dmk3&_;=I=h!i!P#U8XjCO!Dt;X_^HX&(+)07_MbG` z}S^-4|I6BH4TyuGX5l0MbL;+ zWK^62+S%9VXPb>S^w$%Hmfw2cgd2*e+_szT)=u~8XU4|n07z2SS=)j_d3+2|$4A-d zcG+$4NS*Rg?CdYjLH8Be;lyi#M%mIID?aSyt-O?V6_n`ztyxbz&WB38)v44>M{#B* zkVy5}5O2iwjwuxR$Ych?uB*CTlQ|-NNd1<@YU$aVp4j+--#Rg6uc3t0=8~%EYzSQ7 z`yT)Mj_?fNNRN&}yC@1FLw%o!;pCn>y#b!(5J4RNz2oVJp07^x>+|cY9coglnW=ZY zBtumd!?Alwywu>7{aV)tF&0w?mIZ9X;jW0q@pQUk4n@jO3q}|Ep$IOmr^udiN37V25RiY0&tci-V$q=CB|}Nqt_`DQKJn@Y$heD`>23M z0vQn>`;Xn|-I+AE4k#+tzVie9MAyfg<<9S@1~iXacojy(&E--4Il+8T?H;4~wgiUB%ggdJ`xf zQdA4@kLr{u@dRTQEo^PY_Y97^g@le4Ay$1HY6wBh%#M3I1)=U&TfyG9`!lftC!HQQ z{O_^A1>)xd!8o-}?>ZdpV)O`z>ovCooTVSwLh2+U48( z6;!f-EI@`Dt=AoOXtWt@l`mld7e&CPLC4(|=rG(J3zS;8I0P}M9YG8mTEfC>?`}IG zXk#(CjrSc0bY)spWp1Cnp7SEh+j?D&dr(jSp{@^bwbY7}ZaY|*NJYiZ0e)2@Z=knNouVBI*^!7|B$8p7Jjf~Hy7^pAS_1cN1-iP za7|2j?tK>1CWR7}Wm@aaPe2K3ZsN!*3L?qCnO+J@T zhX*XQ#P!V53U(d&nCNB?@^slj_u8`oWl#~YkK@oc$M;C*kv^jav|OpG&N(hoMkc!r zj4qE*^?ZK3JzoBZC=6Zd8vbY*64?$600Vqxk$oUyZ_xm-{ywL@pI*6Mo;y3Imxm{Z zhr!?L+S_A`-#8SXKHA?Co`TURC>t?O8RymY1UJ0SY~C*J%v+YLXg89u09^^uzHifaw4h1EbFuKwiOmv2a3#O}6+`&fLnAYV9`O zI}u~g1Flp0`djQ7d7;JLK@t{WEan}c3$X9oYU5}A26GAg6}b;F7yz3{?aomccSMH$ zdxO-)LniAbbEC-pA#X zr}$nGM`&d5xBC@MZ{7nvGf_g?Utxx0C(C0eSaDf4Rf7;Jr7afNyj?Qiyqa)M2N-2s zt?GmG>+jO%ZPe-Muu2>$>v9J~(tkFv%2~3ZfT`QakV=+5XD|z@E$EFMG~`ZAqJ798 zHNd3nml%RvnwN3QN^@m>a0z9*CSDC9-j zYS|n`j<0Ss92T(0Y6jy!o%u*d%?E*`2^6`Ap_duJ%?RhCYP730Y9QiS^7o~7kl4!W zULGYk+3K?O_0`vhUTYC_5^PWd8FqEmFp-n?*<*US*-vkFeiObHZU+OK-aA(1bay9! zvU@%{nIwRv0b^ns{v)qx{~Cs5NFj1crtorc+gI{$BrdK~$xB*mGJiokPgpd05iV7< z-0Bnwj6dt=h@33xUjYGvKpCv}86sUul>R@3mi1BhL1g1*-q$7>RH_2O4*)!;;ufu_ zS$pCp^T07CpuJr>JCio_+CxGoo_n{c66?A|YPbstE%}?8ij#_j0tStE1*rj|fu^pe zzPkR>yhGaun}5LUY|&y7tAqKJi;HU}uvYlP)#eMbad5bPzS)Z^T>c#`|3Fn!)=^q| z0=Sof=QTK3s^+w%W?&ZrTewD?9M2%wMFw)&l7B;HJ~Ew$aOU;EH@Mz>>eS`=Vlo3V`gK40etz~cPto^-OyM;Z%Bc+2k#ZHMct+V2B(=5nhWI3|nrTgbqAr!#v`Cma-F}nIY9E+(1DlY>>!!UgbiAz+3DMA9) z`0p0}zl<_=u?N)RY>e*i;z?HmWUTRuiP$fP%Jzn^FI4;oB1WS8{*SJqE+)*un&L=w zX^uF^h{pkHgz07vSaw67{37+M9G-<@~?WA7G53RHgx&|zYP$=&mx zm5sWIJiSjOQ95Wp-oe~va0XPj2$SaxpA2{<-^&RtafHg4(<27bI|_U`vL41;Qg+aK*7 zZbt-WfVforu#CE)#r+xcj}5i!&(z;Y`lqhhTfp;+r%SY?&pc;Y3xp}7&B zS9W_B{907eu=@E?X9aUZZ#;TL6xgM1Q#8@7 zL7l5;2!g+dIGg*&&;G;;1>zH5!du_VnQu_Z0j}5ko*KHfwQJ7mIa4?rRH7wrXJBb$ ze4KNq=JTgm&g$7AK}|R_^BoP`(a<~q%k02mVg`P;ox9GwjkP}YSGHEadGD*q7=tp} z&;NoG57c$i(6AkHEO+E1DZwR-lz!3(N*V$&b6OVMJe8Ys$0*J8{fDEPuIBlQt4crC zGgVgpgK4b)th92J>sZ1v3bJGQh9Zs_;evQV_cT}PU~P<9C1a*$Y=W{1v)I<9*OE1J zD)1aJNNzYSy{avIf>7CO>R3oTbjez&$)SdM55xXK-AtrBbQ*>{Xw{u%JUl%WnS<)d z{Qc5Z7nju)=hd}s5gvN+E{X0jX<3d%J7QH-628B^_nLRrkN1ts>FLP-$aW%MmbTS9^Z$ita8y&CI-1Rr`SDyVul{$U^Yz zC?OTE+qve%Nc!SjvEuxKFt((kJ?c-N%N!5|Jc}MP!Jl^jd1ye@sQk(nLI@9``oUKd#_9vhL%udUWPmTxl#mdT1_^-}NoU2a)cJ*Q2%DN?W3ZdWO^qDBh;i)|jr_ibi$Dl^(NKil1G?7-3E|GnM1 zh=qmv{(We0s3^`*UBO7jXtOo|m^U-tc1<6h&4d83Z=hK+H8oWqDyJ!JJU&#El*MIbG}0AN83uo1 zS5NL=>mp#`dr@5}VPo(~NtB@z|=H}+dddh)RVn?T5Y zZGy4I=KQ@H!FyEQ+1Z&Ry}XpYt;ih-6F_{>7#JEVF!(dMgF+VUbrBmC6&~KB#U`bx zxx5*NWahYx2v;l$pFO22I0a-i$H(dD=*a5-?Wu9>2Y_w6?e+ZL9I`k+y_67lNOioD zge@>?6YUFllDtgC;buYk5h*-yjJ1@nhUJQd-dEzQiaJ|enx~$iEZ+n;M4(rmUZxz3Jia z<(2Ss8?<~Fu5oI9sh@pmlq2`NzEpYV=Md)26w# zsa!zljUh^!ogQv>UiJ;9H>aPl8d6xW`Y@_uOCAU>{*oZQY{0+qLLqu+-~0 zZ|}hT?jic5^x&oz+dB}!=3(XF@^Ei|AMmbPpv z?59?LP7A-=)$4kJZ(CM#9O+bK*IGloZjw)FUg@nWcPqYx>XP@@)W>za$1HX=7H4F> z@n&MbNRnP)?UOgYla44`oa&=D-}V zBH!A|4Y&rzaIl_b_@7hzDE7Tpuop+szxJ~+G=0}3vSj3d#YYiTVI(UEgKWBWM@M%? z#cf50Po7;Rp;=*>R`nNPz4NTJF)4>3W>n4Z#=KAK0mxma?0p}bY}{;*gLsPQw<*1^ z@NA0K(B{z0-#}oCc^CWK^+qxDE<8AWa1IeVQ!?W>{n3R%VG>D3u<8LtO@@TLd>uCZ zQ8a(m(^kU?YIhaH@PfKuip)Og6RCpv%gXPHiUL^9=X9+t)e%^?4pf-MEuIrqH(U%g*?Lw?PA@Sg3cOklSvQdofw$9D*mWpC#e#1DEJ~ zIpCr=Rs`iy_$)TqN}O7FUDz9e>X}s4rs5h?vYSuSaRRw~XBm+8!LPKaTHjwoj6ZaC z#dj^OC>ZCS!rX?K$~DYDa^)Cdl;HZW!)G5)sY1`c522Z%No9V;O-W_m-3BBa@9#sf z&*?vWv~BG$Hvlhv?YI_MNLwY=9o)6A*6pVe!F#zz^(q*@%bgiChk`=6AgOnTs|cPp z!}KWFH$aObTrw6G*vsl_=sR$rOC$}K6#Raj#79!Y)h~jUuQgZK0rz|xj8a#xPBOeb znGFe_!UpXKjV--zNIJp>hoK3#8=;pJL66cnY!~vgZqem9sxD|gL&j6gp23$85GZs` zp*n3PYa4hCI*iGkMVk=I_9j$U%}okyjXPk;;F=s1Ylxq7yR_ zE?lZIZo3(wgc8o_bii81TF?QIsEyW3mmB?7x#8lHL(n*=(Q&|%-|l*oX#8=p$}PaA zD=H*t$K5u#S9-&i%`#Xxhol04ip-ZY=g#D1Nw;X5>Ho4Hq-P2@Hb+@0`OmMYe*Bf~ zaw9mQsz-aUo#m1>sJFI%xc#rqOgD> z_YFQfbRraD{im?t{l-q@FaT1U4xpu>0hFG;&(p-U28$aT4+|Q70BPL753~nB_TOKQ zas~$(jzICD7CfB{{QUT%Z-6PVvy(G-nb7x{IGSJasnJMjhk48g5uw;YN}r27Q?RR9 z_m_MqqM+ErU&Xu9tiaqAo8HhK#$kfB(p~JXO;9KADTI1T?x7c6mBAMb0*C!(6prD$ zr1ARDKtFjubMUh+9Y$PEj-qS}0k7Nh-IVd}Ztl5XeCm?V>3nM7K2KX418|hKaHi2s z!nwY&HsQ>n*qD`%cq6ZCe`Y~jP8BGq<##){#Ca)5)?OD=71NhPI7vIq>v?P9Dle}k z4v9NYtbJE{xOuk$7@;R7qPfI)J_0|E7_+NOOM86Z(jEs72ls$2fHrWMASwC1y36r_ zr}gz!f(z~Zv+r$dy*pMV9PjGu>FEpf^$B7DYX_a3=@`W75&%phN!XLLG~}6mU^Vb4 zc^MlP6BZ-<5Wbz~F#x zK45)yxW5lpRad}tzHN^XL5Z_@;Y~&K?uuNhHgFrA-aWJi={e5; zLkqx78y4&6B*ph#;OpJF$Pi2Rex@UeO{`C^o{|fwoCW(sHROVxS@JY7TX5J#Y8j_- zNcfK{(i4x>UJnWM`8%p)ZogzVT8CU5E4{y_5(iO@D?;8QQ1m%Y4XxuZ{#tbY=hPio zLKP7}B>oKTZ18-WL<;>GEYykHK%eLaW|v!))Tt=TNJ@&YegLA|DgxJozesLgk4pH-fEnu%Mte zt6xL-OALEvXqwV7HWzpMP^9T3BNx75CenfTY8RfAI*q@Ztb%|1V*p>FA&zMWxeguG7bTJz58>1?Q|D7Dj)GEx(> zyNRBcT@P>nQ;O2dCdlr;XR14S-;Eu?ZN6z=77afiEB${;=usKMz_n%8)m;-m0pT z=auiDs{@p&lkg9&zAK9^z6Rpfc4jjn$M@>U837*}o^3CT&%@Er*+%t4;GEr6%KEF* zyrNQJ&j%Y?*KmhZdha)2zNM25u_Pr|=wEz+wVUt@U!it7c|Py=nKy(qE4Uk9Lu~wK zb2t31YwyTkcH2{%MoaTwgs4T7|0EgPO4>(h^?HQQO_%J*?9I)^VHc#+3uHSYg7{(2 za078qK%I7_0bw?7BGLJ{f#bh)+rw9w?M;Zb3O|-~s3U-Sr zdE;WWAcFgoyF%p7X4JNLfy*bx8Ug2ZbI5yn4pARK^K7<0Mb_WHXxrh?@kH5OEq}6b zAjW$G@^`g>YyUEq{3BWkA>lUvr91_DR$q%e(HnDd-|%N%;{v^Z$Q`<|V(=B>*izhV zQ4%3qN);6T&}nZKB{`X-j$@e|!cbW!u<-9{i(YdpO!lmc6YR_zv&G!CHCnktt3hzk zawSC(lZA2N$re|wk-xEs2oHB=rP#tP*~UJ+>5t%&r-sDo-%nQHTk~#X>8acM{=uLd z_qBV=?`gk1@6EkCNEcQfY{aQpMIh9o=XI0S7*rtI!OVlp%4YuU-bHgtqWc2_>FMVh zAL}ZISGw`-AtW{`mQTh=PK@J+G)UI8xVd+hVlBO6erC{Yqa=n9j-v#Lj~?0d4ZPqZ z8^LzP`WJ-u-cY1qh!4~ZJr&xi({!0SGSc#Z1SHFTnR>ZMpQt0+43X8eQ2)y3FETz; zt1OF%vZ!{diwZ4PB2JO@fZjHbo1vYZo$-Tna&MNpkvZLLMrdI>J~)y{_}Iy)MkM)D5d(1e&P+%bVhj_J7;1+oF#>Pb-yexI*G#yo<1azd zR@c*$lTw)tW(zDKKkJu53{cyhNw3?Kcd;PpvR+C)<4QSUZFq#^al>Rsdzmu;yp}*8hL>G-HbMFv-4jOr zee4elDlv|q;uR8z=9Cn2#}`T|y`&^T#&E`l(q4mX(Wk2!QpI)UJoGtuB_U^|8Cg}R z2K1eOJ#6feZz<=73p!i~X{YPoabg=8PfoHzt|VUB-4`3+2f~5>3MfC3JZhyzL!?>q zFq_Zy7p2c!3sKi#giZI_?$W=1>)LQ+7zU9Vh*gH-6_5!P{DFDGBs*r0qka z?4l78ayB-5cz6M!uVugdsUXQ9#k$O&Po1E|o7f zwJmlj6)-Fy_c}iy37IS~0)o0@vB+8EOs3QN_3c3kb)B;&> zvx`v@8C3k_?08{WXtfk$PU3i`KNUZ;Ra8`T4E%0p2PEe2HajJGco_76Xy0ITqy}Tw z2`}mIzm)}*)j9CBr-*nZW|<=8NgV9?{*Q~Zc2jBDvZ)NjPC!LL+{)35gSPXZcu7T7 zMWv+pr7gDzT2)CQbg{-y6mrx=4mJi3ASMsP$1+Ubusk=n->7i~PZp_LVl${v^aFo#SibREMT z15~l}_$w@IL>w5+4+2YKyl~D&Hdhz7T!nolRn!ZTJA42eYbh#fAn5nFM3^J^b~A8C z=;!m85Ow)U5p@Y%23|aEeSO|dG3M~STpmu~Vltv6iKBzQJ`yRn{6eFi>Q=$!HRCKG-ujY!4t%aYJWx?wL&L$}<3pW~!@EfYl z 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

    Fe5OsUhuR7NGHe?wJ1hxz$y102zRH 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

    K(zbt#Ye7|>qX?SD&2)dn~kJ$CN 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%0ALZ~Om(MA&z5!>S+ttt1 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

    TGDv8U&*iaqr4lc7ecYaHBU}WvhpEi(Z(R0-Ge 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 z�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

    ;4<7JssCuCZ(rme?y!Yt&b?3)n9 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�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�AeyiEBxyhPJREKJR{g0gWVZDyf8 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

    ?{W#KhQ^QZ>hMBH85H$?@aY$nsOVRC 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Πtzm5&*}Xg!u*yq;gA_*Q_)MQ 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
    4p`4Zh-A-w=&AR$m{f-&bsf#gXF(feTC@1`>%| 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

    SET40@wy#t(i?z{DF+A_VRk5b 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 literal 0 HcmV?d00001 From 0d4174201e5570a60c612bd831acf2ffc57bc4a9 Mon Sep 17 00:00:00 2001 From: web3rover Date: Mon, 30 Jun 2025 12:56:42 +0530 Subject: [PATCH 08/24] fix: deployed oracle --- deploy/6-deploy-wstETH-oracle.ts | 93 +- deployments/ethereum.json | 972 ------------------ .../ethereum/WstETHOracle_Equivalence.json | 641 +++++++++--- .../ethereum/WstETHOracle_NonEquivalence.json | 641 +++++++++--- .../46c846e585260eef9ba6b1c48d9e2bf9.json | 67 ++ deployments/ethereum_addresses.json | 6 - deployments/sepolia.json | 455 -------- deployments/sepolia/WstETHOracle.json | 644 +++++++++--- .../sepolia/WstETHOracle_Implementation.json | 203 ---- deployments/sepolia/WstETHOracle_Proxy.json | 213 ---- .../46c846e585260eef9ba6b1c48d9e2bf9.json | 67 ++ deployments/sepolia_addresses.json | 3 - 12 files changed, 1708 insertions(+), 2297 deletions(-) create mode 100644 deployments/ethereum/solcInputs/46c846e585260eef9ba6b1c48d9e2bf9.json delete mode 100644 deployments/sepolia/WstETHOracle_Implementation.json delete mode 100644 deployments/sepolia/WstETHOracle_Proxy.json create mode 100644 deployments/sepolia/solcInputs/46c846e585260eef9ba6b1c48d9e2bf9.json diff --git a/deploy/6-deploy-wstETH-oracle.ts b/deploy/6-deploy-wstETH-oracle.ts index aa8821ca..2c9c96c7 100644 --- a/deploy/6-deploy-wstETH-oracle.ts +++ b/deploy/6-deploy-wstETH-oracle.ts @@ -33,43 +33,64 @@ const func: DeployFunction = async ({ getNamedAccounts, deployments, network }: const exchangeRate = await stETHContract.getPooledEthByShares(parseUnits("1", 18)); const snapshotGap = BigNumber.from("55"); // 0.55% - await deploy("WstETHOracle_Equivalence", { - contract: "WstETHOracleV2", - from: deployer, - log: true, - deterministicDeployment: false, - args: [ - stETHAddress, - wstETHAddress, - WETHAddress, - oracle.address, - wstETH_ANNUAL_GROWTH_RATE, - DAYS_30, - increaseExchangeRateByPercentage(exchangeRate, snapshotGap), - block.timestamp, - acm, - getSnapshotGap(exchangeRate, snapshotGap.toNumber()), - ], - }); + if (network.name === "ethereum") { + await deploy("WstETHOracle_Equivalence", { + contract: "WstETHOracleV2", + from: deployer, + log: true, + deterministicDeployment: false, + args: [ + stETHAddress, + wstETHAddress, + WETHAddress, + oracle.address, + wstETH_ANNUAL_GROWTH_RATE, + DAYS_30, + increaseExchangeRateByPercentage(exchangeRate, snapshotGap), + block.timestamp, + acm, + getSnapshotGap(exchangeRate, snapshotGap.toNumber()), + ], + }); - await deploy("WstETHOracle_NonEquivalence", { - contract: "WstETHOracleV2", - from: deployer, - log: true, - deterministicDeployment: false, - args: [ - stETHAddress, - wstETHAddress, - stETHAddress, - oracle.address, - wstETH_ANNUAL_GROWTH_RATE, - DAYS_30, - increaseExchangeRateByPercentage(exchangeRate, snapshotGap), - block.timestamp, - acm, - getSnapshotGap(exchangeRate, snapshotGap.toNumber()), - ], - }); + await deploy("WstETHOracle_NonEquivalence", { + contract: "WstETHOracleV2", + from: deployer, + log: true, + deterministicDeployment: false, + args: [ + stETHAddress, + wstETHAddress, + stETHAddress, + oracle.address, + wstETH_ANNUAL_GROWTH_RATE, + DAYS_30, + increaseExchangeRateByPercentage(exchangeRate, snapshotGap), + block.timestamp, + acm, + getSnapshotGap(exchangeRate, snapshotGap.toNumber()), + ], + }); + } else { + await deploy("WstETHOracle", { + contract: "WstETHOracleV2", + from: deployer, + log: true, + deterministicDeployment: false, + args: [ + stETHAddress, + wstETHAddress, + WETHAddress, + oracle.address, + wstETH_ANNUAL_GROWTH_RATE, + DAYS_30, + increaseExchangeRateByPercentage(exchangeRate, snapshotGap), + block.timestamp, + acm, + getSnapshotGap(exchangeRate, snapshotGap.toNumber()), + ], + }); + } }; export default func; diff --git a/deployments/ethereum.json b/deployments/ethereum.json index 760163cb..314da5cf 100644 --- a/deployments/ethereum.json +++ b/deployments/ethereum.json @@ -11772,978 +11772,6 @@ } ] }, - "WstETHOracle_Equivalence": { - "address": "0xd8B43165a6cdA057DBd3Fcd4745E88FC475398c5", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "beacon", - "type": "address" - } - ], - "name": "BeaconUpgraded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "stateMutability": "payable", - "type": "fallback" - }, - { - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "admin_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "implementation_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "stateMutability": "payable", - "type": "receive" - }, - { - "inputs": [], - "name": "ZeroAddressNotAllowed", - "type": "error" - }, - { - "inputs": [], - "name": "ASSUME_STETH_ETH_EQUIVALENCE", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "RESILIENT_ORACLE", - "outputs": [ - { - "internalType": "contract OracleInterface", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "STETH", - "outputs": [ - { - "internalType": "contract IStETH", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "WETH_ADDRESS", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "WSTETH_ADDRESS", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - } - ], - "name": "getPrice", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "admin_", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "stateMutability": "payable", - "type": "constructor" - } - ] - }, - "WstETHOracle_Equivalence_Implementation": { - "address": "0x4e70615332550CE81e12891772eB950411Bb05A2", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "wstETHAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "wETHAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "stETHAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "resilientOracleAddress", - "type": "address" - }, - { - "internalType": "bool", - "name": "assumeEquivalence", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [], - "name": "ZeroAddressNotAllowed", - "type": "error" - }, - { - "inputs": [], - "name": "ASSUME_STETH_ETH_EQUIVALENCE", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "RESILIENT_ORACLE", - "outputs": [ - { - "internalType": "contract OracleInterface", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "STETH", - "outputs": [ - { - "internalType": "contract IStETH", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "WETH_ADDRESS", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "WSTETH_ADDRESS", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - } - ], - "name": "getPrice", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - } - ] - }, - "WstETHOracle_Equivalence_Proxy": { - "address": "0xd8B43165a6cdA057DBd3Fcd4745E88FC475398c5", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "admin_", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "stateMutability": "payable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "beacon", - "type": "address" - } - ], - "name": "BeaconUpgraded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "stateMutability": "payable", - "type": "fallback" - }, - { - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "admin_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "implementation_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "stateMutability": "payable", - "type": "receive" - } - ] - }, - "WstETHOracle_NonEquivalence": { - "address": "0xd082B50b3EeB012605598bB45Fc2Be853b9AFEEf", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "beacon", - "type": "address" - } - ], - "name": "BeaconUpgraded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "stateMutability": "payable", - "type": "fallback" - }, - { - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "admin_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "implementation_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "stateMutability": "payable", - "type": "receive" - }, - { - "inputs": [], - "name": "ZeroAddressNotAllowed", - "type": "error" - }, - { - "inputs": [], - "name": "ASSUME_STETH_ETH_EQUIVALENCE", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "RESILIENT_ORACLE", - "outputs": [ - { - "internalType": "contract OracleInterface", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "STETH", - "outputs": [ - { - "internalType": "contract IStETH", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "WETH_ADDRESS", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "WSTETH_ADDRESS", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - } - ], - "name": "getPrice", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "admin_", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "stateMutability": "payable", - "type": "constructor" - } - ] - }, - "WstETHOracle_NonEquivalence_Implementation": { - "address": "0x24D3D52332834ddE93692D9ede4679FE920d2afC", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "wstETHAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "wETHAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "stETHAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "resilientOracleAddress", - "type": "address" - }, - { - "internalType": "bool", - "name": "assumeEquivalence", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [], - "name": "ZeroAddressNotAllowed", - "type": "error" - }, - { - "inputs": [], - "name": "ASSUME_STETH_ETH_EQUIVALENCE", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "RESILIENT_ORACLE", - "outputs": [ - { - "internalType": "contract OracleInterface", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "STETH", - "outputs": [ - { - "internalType": "contract IStETH", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "WETH_ADDRESS", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "WSTETH_ADDRESS", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - } - ], - "name": "getPrice", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - } - ] - }, - "WstETHOracle_NonEquivalence_Proxy": { - "address": "0xd082B50b3EeB012605598bB45Fc2Be853b9AFEEf", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "admin_", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "stateMutability": "payable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "beacon", - "type": "address" - } - ], - "name": "BeaconUpgraded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "stateMutability": "payable", - "type": "fallback" - }, - { - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "admin_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "implementation_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "stateMutability": "payable", - "type": "receive" - } - ] - }, "eBTCAccountantOracle": { "address": "0x04d6096A6F089047C7af6E4644D18fB766B8d4cE", "abi": [ diff --git a/deployments/ethereum/WstETHOracle_Equivalence.json b/deployments/ethereum/WstETHOracle_Equivalence.json index 3e59dd32..f60b9199 100644 --- a/deployments/ethereum/WstETHOracle_Equivalence.json +++ b/deployments/ethereum/WstETHOracle_Equivalence.json @@ -1,36 +1,137 @@ { - "address": "0xd8B43165a6cdA057DBd3Fcd4745E88FC475398c5", + "address": "0x6b51Ee3aF70b350AaADc05f418502b330c5Aad7c", "abi": [ { - "anonymous": false, "inputs": [ { - "indexed": false, "internalType": "address", - "name": "previousAdmin", + "name": "stETH", "type": "address" }, { - "indexed": false, "internalType": "address", - "name": "newAdmin", + "name": "wstETH", + "type": "address" + }, + { + "internalType": "address", + "name": "underlyingToken", + "type": "address" + }, + { + "internalType": "address", + "name": "resilientOracle", + "type": "address" + }, + { + "internalType": "uint256", + "name": "annualGrowthRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_snapshotInterval", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "initialSnapshotMaxExchangeRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "initialSnapshotTimestamp", + "type": "uint256" + }, + { + "internalType": "address", + "name": "accessControlManager", "type": "address" + }, + { + "internalType": "uint256", + "name": "_snapshotGap", + "type": "uint256" } ], - "name": "AdminChanged", - "type": "event" + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "InvalidGrowthRate", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialSnapshot", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidSnapshotMaxExchangeRate", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidTokenAddress", + "type": "error" }, { - "anonymous": false, "inputs": [ { - "indexed": true, "internalType": "address", - "name": "beacon", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "calledContract", "type": "address" + }, + { + "internalType": "string", + "name": "methodSignature", + "type": "string" + } + ], + "name": "Unauthorized", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroAddressNotAllowed", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "oldGrowthRatePerSecond", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newGrowthRatePerSecond", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "oldSnapshotInterval", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newSnapshotInterval", + "type": "uint256" } ], - "name": "BeaconUpgraded", + "name": "GrowthRateUpdated", "type": "event" }, { @@ -38,105 +139,131 @@ "inputs": [ { "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" + "internalType": "uint256", + "name": "oldSnapshotGap", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newSnapshotGap", + "type": "uint256" } ], - "name": "Upgraded", + "name": "SnapshotGapUpdated", "type": "event" }, { - "stateMutability": "payable", - "type": "fallback" + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "maxExchangeRate", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "name": "SnapshotUpdated", + "type": "event" }, { "inputs": [], - "name": "admin", + "name": "ACCESS_CONTROL_MANAGER", "outputs": [ { - "internalType": "address", - "name": "admin_", + "internalType": "contract IAccessControlManagerV8", + "name": "", "type": "address" } ], - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function" }, { "inputs": [], - "name": "implementation", + "name": "CORRELATED_TOKEN", "outputs": [ { "internalType": "address", - "name": "implementation_", + "name": "", "type": "address" } ], - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function" }, { - "inputs": [ + "inputs": [], + "name": "RESILIENT_ORACLE", + "outputs": [ { - "internalType": "address", - "name": "newImplementation", + "internalType": "contract ResilientOracleInterface", + "name": "", "type": "address" } ], - "name": "upgradeTo", - "outputs": [], - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function" }, { - "inputs": [ + "inputs": [], + "name": "STETH", + "outputs": [ { - "internalType": "address", - "name": "newImplementation", + "internalType": "contract IStETH", + "name": "", "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" } ], - "name": "upgradeToAndCall", - "outputs": [], - "stateMutability": "payable", + "stateMutability": "view", "type": "function" }, - { - "stateMutability": "payable", - "type": "receive" - }, { "inputs": [], - "name": "ZeroAddressNotAllowed", - "type": "error" + "name": "UNDERLYING_TOKEN", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" }, { "inputs": [], - "name": "ASSUME_STETH_ETH_EQUIVALENCE", + "name": "getMaxAllowedExchangeRate", "outputs": [ { - "internalType": "bool", + "internalType": "uint256", "name": "", - "type": "bool" + "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { - "inputs": [], - "name": "RESILIENT_ORACLE", + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "getPrice", "outputs": [ { - "internalType": "contract OracleInterface", + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "stateMutability": "view", @@ -144,12 +271,12 @@ }, { "inputs": [], - "name": "STETH", + "name": "getUnderlyingAmount", "outputs": [ { - "internalType": "contract IStETH", + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "stateMutability": "view", @@ -157,12 +284,12 @@ }, { "inputs": [], - "name": "WETH_ADDRESS", + "name": "growthRatePerSecond", "outputs": [ { - "internalType": "address", + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "stateMutability": "view", @@ -170,12 +297,12 @@ }, { "inputs": [], - "name": "WSTETH_ADDRESS", + "name": "isCapped", "outputs": [ { - "internalType": "address", + "internalType": "bool", "name": "", - "type": "address" + "type": "bool" } ], "stateMutability": "view", @@ -184,12 +311,55 @@ { "inputs": [ { - "internalType": "address", - "name": "asset", - "type": "address" + "internalType": "uint256", + "name": "_annualGrowthRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_snapshotInterval", + "type": "uint256" } ], - "name": "getPrice", + "name": "setGrowthRate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_snapshotMaxExchangeRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_snapshotTimestamp", + "type": "uint256" + } + ], + "name": "setSnapshot", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_snapshotGap", + "type": "uint256" + } + ], + "name": "setSnapshotGap", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "snapshotGap", "outputs": [ { "internalType": "uint256", @@ -201,103 +371,298 @@ "type": "function" }, { - "inputs": [ + "inputs": [], + "name": "snapshotInterval", + "outputs": [ { - "internalType": "address", - "name": "_logic", - "type": "address" - }, + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "snapshotMaxExchangeRate", + "outputs": [ { - "internalType": "address", - "name": "admin_", - "type": "address" - }, + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "snapshotTimestamp", + "outputs": [ { - "internalType": "bytes", - "name": "_data", - "type": "bytes" + "internalType": "uint256", + "name": "", + "type": "uint256" } ], - "stateMutability": "payable", - "type": "constructor" + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "updateSnapshot", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" } ], - "transactionHash": "0xc1ec093e4f459de11f515b1fd9cb35d397f9a674da9d7b6a6780ef87af7c6d4d", + "transactionHash": "0xa386a86919abc68ad6c3c97184c68c6d5b8ad4402fe79d9d3c0f49e37770d25d", "receipt": { "to": null, - "from": "0x1bb5A9f786a6BA418E8059a877689486A14497a2", - "contractAddress": "0xd8B43165a6cdA057DBd3Fcd4745E88FC475398c5", - "transactionIndex": 101, - "gasUsed": "622245", - "logsBloom": "0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000404000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000008000000000020000000000400000000000000000000000000000000000000000000000000000000000000000000000100000000000000", - "blockHash": "0x1439f9894570bd92ae5f3c33e6f3cefcc8ab8879a538312e08cff08b95b9023e", - "transactionHash": "0xc1ec093e4f459de11f515b1fd9cb35d397f9a674da9d7b6a6780ef87af7c6d4d", - "logs": [ - { - "transactionIndex": 101, - "blockNumber": 19276128, - "transactionHash": "0xc1ec093e4f459de11f515b1fd9cb35d397f9a674da9d7b6a6780ef87af7c6d4d", - "address": "0xd8B43165a6cdA057DBd3Fcd4745E88FC475398c5", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000004e70615332550ce81e12891772eb950411bb05a2" - ], - "data": "0x", - "logIndex": 89, - "blockHash": "0x1439f9894570bd92ae5f3c33e6f3cefcc8ab8879a538312e08cff08b95b9023e" - }, - { - "transactionIndex": 101, - "blockNumber": 19276128, - "transactionHash": "0xc1ec093e4f459de11f515b1fd9cb35d397f9a674da9d7b6a6780ef87af7c6d4d", - "address": "0xd8B43165a6cdA057DBd3Fcd4745E88FC475398c5", - "topics": ["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000567e4cc5e085d09f66f836fa8279f38b4e5866b9", - "logIndex": 90, - "blockHash": "0x1439f9894570bd92ae5f3c33e6f3cefcc8ab8879a538312e08cff08b95b9023e" - } - ], - "blockNumber": 19276128, - "cumulativeGasUsed": "5389879", + "from": "0x63c72cf38D2C35278e2F18A4FE79225A66dFA942", + "contractAddress": "0x6b51Ee3aF70b350AaADc05f418502b330c5Aad7c", + "transactionIndex": 36, + "gasUsed": "860706", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0xf100459ecb9eb77f2bbe24860484204d7286b3059eb8adfeccd35a2b76e34e3b", + "transactionHash": "0xa386a86919abc68ad6c3c97184c68c6d5b8ad4402fe79d9d3c0f49e37770d25d", + "logs": [], + "blockNumber": 22815689, + "cumulativeGasUsed": "7225440", "status": 1, "byzantium": true }, - "args": ["0x4e70615332550CE81e12891772eB950411Bb05A2", "0x567e4cc5e085d09f66f836fa8279f38b4e5866b9", "0x"], - "numDeployments": 1, - "solcInputHash": "0e89febeebc7444140de8e67c9067d2c", - "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_logic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"implementation_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \\\"admin cannot fallback to proxy target\\\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\",\"kind\":\"dev\",\"methods\":{\"admin()\":{\"details\":\"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\"},\"constructor\":{\"details\":\"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\"},\"implementation()\":{\"details\":\"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\"},\"upgradeTo(address)\":{\"details\":\"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\"},\"upgradeToAndCall(address,bytes)\":{\"details\":\"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol\":\"OptimizedTransparentUpgradeableProxy\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x93b4e21c931252739a1ec13ea31d3d35a5c068be3163ccab83e4d70c40355f03\",\"license\":\"MIT\"},\"solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializating the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256(\\\"eip1967.proxy.implementation\\\")) - 1));\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n\",\"keccak256\":\"0x6309f9f39dc6f4f45a24f296543867aa358e32946cd6b2874627a996d606b3a0\",\"license\":\"MIT\"},\"solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967Upgrade {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view virtual returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Emitted when the beacon is upgraded.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(Address.isContract(IBeacon(newBeacon).implementation()), \\\"ERC1967: beacon implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(\\n address newBeacon,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x17668652127feebed0ce8d9431ef95ccc8c4292f03e3b8cf06c6ca16af396633\",\"license\":\"MIT\"},\"solc_0.8/openzeppelin/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internall call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overriden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xd5d1fd16e9faff7fcb3a52e02a8d49156f42a38a03f07b5f1810c21c2149a8ab\",\"license\":\"MIT\"},\"solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"solc_0.8/openzeppelin/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n }\\n}\\n\",\"keccak256\":\"0x3777e696b62134e6177440dbe6e6601c0c156a443f57167194b67e75527439de\",\"license\":\"MIT\"},\"solc_0.8/openzeppelin/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/StorageSlot.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xfe1b7a9aa2a530a9e705b220e26cd584e2fbdc9602a3a1066032b12816b46aca\",\"license\":\"MIT\"},\"solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/transparent/TransparentUpgradeableProxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../openzeppelin/proxy/ERC1967/ERC1967Proxy.sol\\\";\\n\\n/**\\n * @dev This contract implements a proxy that is upgradeable by an admin.\\n *\\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\\n * clashing], which can potentially be used in an attack, this contract uses the\\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\\n * things that go hand in hand:\\n *\\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\\n * that call matches one of the admin functions exposed by the proxy itself.\\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\\n * \\\"admin cannot fallback to proxy target\\\".\\n *\\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\\n * the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due\\n * to sudden errors when trying to call a function from the proxy implementation.\\n *\\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\\n */\\ncontract OptimizedTransparentUpgradeableProxy is ERC1967Proxy {\\n address internal immutable _ADMIN;\\n\\n /**\\n * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\\n * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\\n */\\n constructor(\\n address _logic,\\n address admin_,\\n bytes memory _data\\n ) payable ERC1967Proxy(_logic, _data) {\\n assert(_ADMIN_SLOT == bytes32(uint256(keccak256(\\\"eip1967.proxy.admin\\\")) - 1));\\n _ADMIN = admin_;\\n\\n // still store it to work with EIP-1967\\n bytes32 slot = _ADMIN_SLOT;\\n // solhint-disable-next-line no-inline-assembly\\n assembly {\\n sstore(slot, admin_)\\n }\\n emit AdminChanged(address(0), admin_);\\n }\\n\\n /**\\n * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\\n */\\n modifier ifAdmin() {\\n if (msg.sender == _getAdmin()) {\\n _;\\n } else {\\n _fallback();\\n }\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n */\\n function admin() external ifAdmin returns (address admin_) {\\n admin_ = _getAdmin();\\n }\\n\\n /**\\n * @dev Returns the current implementation.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\\n */\\n function implementation() external ifAdmin returns (address implementation_) {\\n implementation_ = _implementation();\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\\n */\\n function upgradeTo(address newImplementation) external ifAdmin {\\n _upgradeToAndCall(newImplementation, bytes(\\\"\\\"), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\\n * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\\n * proxied contract.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\\n */\\n function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {\\n _upgradeToAndCall(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _admin() internal view virtual returns (address) {\\n return _getAdmin();\\n }\\n\\n /**\\n * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.\\n */\\n function _beforeFallback() internal virtual override {\\n require(msg.sender != _getAdmin(), \\\"TransparentUpgradeableProxy: admin cannot fallback to proxy target\\\");\\n super._beforeFallback();\\n }\\n\\n function _getAdmin() internal view virtual override returns (address) {\\n return _ADMIN;\\n }\\n}\\n\",\"keccak256\":\"0xa30117644e27fa5b49e162aae2f62b36c1aca02f801b8c594d46e2024963a534\",\"license\":\"MIT\"}},\"version\":1}", - "bytecode": "0x60a060405260405162000f5f38038062000f5f83398101604081905262000026916200044a565b82816200005560017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd6200052a565b60008051602062000f188339815191521462000075576200007562000550565b62000083828260006200013c565b50620000b3905060017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61046200052a565b60008051602062000ef883398151915214620000d357620000d362000550565b6001600160a01b038216608081905260008051602062000ef88339815191528381556040805160008152602081019390935290917f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a150505050620005b9565b620001478362000179565b600082511180620001555750805b156200017457620001728383620001bb60201b620002a91760201c565b505b505050565b6200018481620001ea565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060620001e3838360405180606001604052806027815260200162000f3860279139620002b2565b9392505050565b62000200816200039860201b620002d51760201c565b620002685760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806200029160008051602062000f1883398151915260001b620003a760201b620002411760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606001600160a01b0384163b6200031c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016200025f565b600080856001600160a01b03168560405162000339919062000566565b600060405180830381855af49150503d806000811462000376576040519150601f19603f3d011682016040523d82523d6000602084013e6200037b565b606091505b5090925090506200038e828286620003aa565b9695505050505050565b6001600160a01b03163b151590565b90565b60608315620003bb575081620001e3565b825115620003cc5782518084602001fd5b8160405162461bcd60e51b81526004016200025f919062000584565b80516001600160a01b03811681146200040057600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620004385781810151838201526020016200041e565b83811115620001725750506000910152565b6000806000606084860312156200046057600080fd5b6200046b84620003e8565b92506200047b60208501620003e8565b60408501519092506001600160401b03808211156200049957600080fd5b818601915086601f830112620004ae57600080fd5b815181811115620004c357620004c362000405565b604051601f8201601f19908116603f01168101908382118183101715620004ee57620004ee62000405565b816040528281528960208487010111156200050857600080fd5b6200051b8360208301602088016200041b565b80955050505050509250925092565b6000828210156200054b57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b600082516200057a8184602087016200041b565b9190910192915050565b6020815260008251806020840152620005a58160408501602087016200041b565b601f01601f19169190910160400192915050565b608051610900620005f86000396000818161011201528181610176015281816102060152818161025e01528181610287015261030901526109006000f3fe6080604052600436106100435760003560e01c80633659cfe61461005a5780634f1ef2861461007a5780635c60da1b1461008d578063f851a440146100cb57610052565b36610052576100506100e0565b005b6100506100e0565b34801561006657600080fd5b5061005061007536600461076c565b6100fa565b610050610088366004610787565b61015e565b34801561009957600080fd5b506100a26101ec565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100d757600080fd5b506100a2610244565b6100e86102f1565b6100f86100f36103e2565b610422565b565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614156101565761015381604051806020016040528060008152506000610446565b50565b6101536100e0565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614156101e4576101df8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610446915050565b505050565b6101df6100e0565b60003373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161415610239576102346103e2565b905090565b6102416100e0565b90565b60003373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016141561023957507f000000000000000000000000000000000000000000000000000000000000000090565b60606102ce83836040518060600160405280602781526020016108a460279139610471565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614156100f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b60006102347f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b3660008037600080366000845af43d6000803e808015610441573d6000f35b3d6000fd5b61044f83610599565b60008251118061045c5750805b156101df5761046b83836102a9565b50505050565b606073ffffffffffffffffffffffffffffffffffffffff84163b610517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e7472616374000000000000000000000000000000000000000000000000000060648201526084016103d9565b6000808573ffffffffffffffffffffffffffffffffffffffff168560405161053f9190610836565b600060405180830381855af49150503d806000811461057a576040519150601f19603f3d011682016040523d82523d6000602084013e61057f565b606091505b509150915061058f8282866105e6565b9695505050505050565b6105a281610639565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606083156105f55750816102ce565b8251156106055782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d99190610852565b73ffffffffffffffffffffffffffffffffffffffff81163b6106dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103d9565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461076757600080fd5b919050565b60006020828403121561077e57600080fd5b6102ce82610743565b60008060006040848603121561079c57600080fd5b6107a584610743565b9250602084013567ffffffffffffffff808211156107c257600080fd5b818601915086601f8301126107d657600080fd5b8135818111156107e557600080fd5b8760208285010111156107f757600080fd5b6020830194508093505050509250925092565b60005b8381101561082557818101518382015260200161080d565b8381111561046b5750506000910152565b6000825161084881846020870161080a565b9190910192915050565b602081526000825180602084015261087181604085016020870161080a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206f70214c51cdd41c05ba0ffeb72b309ca3c8be178fd6e73c12162330799984f364736f6c634300080a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564", - "deployedBytecode": "0x6080604052600436106100435760003560e01c80633659cfe61461005a5780634f1ef2861461007a5780635c60da1b1461008d578063f851a440146100cb57610052565b36610052576100506100e0565b005b6100506100e0565b34801561006657600080fd5b5061005061007536600461076c565b6100fa565b610050610088366004610787565b61015e565b34801561009957600080fd5b506100a26101ec565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100d757600080fd5b506100a2610244565b6100e86102f1565b6100f86100f36103e2565b610422565b565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614156101565761015381604051806020016040528060008152506000610446565b50565b6101536100e0565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614156101e4576101df8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610446915050565b505050565b6101df6100e0565b60003373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161415610239576102346103e2565b905090565b6102416100e0565b90565b60003373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016141561023957507f000000000000000000000000000000000000000000000000000000000000000090565b60606102ce83836040518060600160405280602781526020016108a460279139610471565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614156100f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b60006102347f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b3660008037600080366000845af43d6000803e808015610441573d6000f35b3d6000fd5b61044f83610599565b60008251118061045c5750805b156101df5761046b83836102a9565b50505050565b606073ffffffffffffffffffffffffffffffffffffffff84163b610517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e7472616374000000000000000000000000000000000000000000000000000060648201526084016103d9565b6000808573ffffffffffffffffffffffffffffffffffffffff168560405161053f9190610836565b600060405180830381855af49150503d806000811461057a576040519150601f19603f3d011682016040523d82523d6000602084013e61057f565b606091505b509150915061058f8282866105e6565b9695505050505050565b6105a281610639565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606083156105f55750816102ce565b8251156106055782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d99190610852565b73ffffffffffffffffffffffffffffffffffffffff81163b6106dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103d9565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461076757600080fd5b919050565b60006020828403121561077e57600080fd5b6102ce82610743565b60008060006040848603121561079c57600080fd5b6107a584610743565b9250602084013567ffffffffffffffff808211156107c257600080fd5b818601915086601f8301126107d657600080fd5b8135818111156107e557600080fd5b8760208285010111156107f757600080fd5b6020830194508093505050509250925092565b60005b8381101561082557818101518382015260200161080d565b8381111561046b5750506000910152565b6000825161084881846020870161080a565b9190910192915050565b602081526000825180602084015261087181604085016020870161080a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206f70214c51cdd41c05ba0ffeb72b309ca3c8be178fd6e73c12162330799984f364736f6c634300080a0033", - "implementation": "0x4e70615332550CE81e12891772eB950411Bb05A2", + "args": [ + "0xae7ab96520de3a18e5e111b5eaab095312d7fe84", + "0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0", + "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "0xd2ce3fb018805ef92b8C5976cb31F84b4E295F94", + "67000000000000000", + 2592000, + "1213468274408913381", + 1751267891, + "0x230058da2D23eb8836EC5DB7037ef7250c56E25E", + "6637568880406786" + ], + "numDeployments": 2, + "solcInputHash": "46c846e585260eef9ba6b1c48d9e2bf9", + "metadata": "{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"stETH\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"wstETH\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"underlyingToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resilientOracle\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"annualGrowthRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotInterval\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSnapshotMaxExchangeRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSnapshotTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"accessControlManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotGap\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidGrowthRate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialSnapshot\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSnapshotMaxExchangeRate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"calledContract\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"methodSignature\",\"type\":\"string\"}],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldGrowthRatePerSecond\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newGrowthRatePerSecond\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldSnapshotInterval\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSnapshotInterval\",\"type\":\"uint256\"}],\"name\":\"GrowthRateUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldSnapshotGap\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newSnapshotGap\",\"type\":\"uint256\"}],\"name\":\"SnapshotGapUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maxExchangeRate\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"SnapshotUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ACCESS_CONTROL_MANAGER\",\"outputs\":[{\"internalType\":\"contract IAccessControlManagerV8\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CORRELATED_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RESILIENT_ORACLE\",\"outputs\":[{\"internalType\":\"contract ResilientOracleInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"STETH\",\"outputs\":[{\"internalType\":\"contract IStETH\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UNDERLYING_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaxAllowedExchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUnderlyingAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"growthRatePerSecond\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isCapped\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_annualGrowthRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotInterval\",\"type\":\"uint256\"}],\"name\":\"setGrowthRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_snapshotMaxExchangeRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotTimestamp\",\"type\":\"uint256\"}],\"name\":\"setSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_snapshotGap\",\"type\":\"uint256\"}],\"name\":\"setSnapshotGap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotGap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotInterval\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotMaxExchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Venus\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"The underlyingToken must be correlated so that 1 underlyingToken is equal to 1 stETH, because getUnderlyingAmount() implicitly assumes that\"},\"getMaxAllowedExchangeRate()\":{\"returns\":{\"_0\":\"maxExchangeRate Maximum allowed exchange rate\"}},\"getPrice(address)\":{\"custom:error\":\"InvalidTokenAddress error is thrown if the token address is invalid\",\"params\":{\"asset\":\"Address of the token\"},\"returns\":{\"_0\":\"price The price of the token in scaled decimal places. It can be capped to a maximum value taking into account the growth rate\"}},\"getUnderlyingAmount()\":{\"returns\":{\"_0\":\"amount Amount of underlyingToken\"}},\"isCapped()\":{\"returns\":{\"_0\":\"isCapped Boolean indicating if the price is capped\"}},\"setGrowthRate(uint256,uint256)\":{\"custom:error\":\"InvalidGrowthRate error is thrown if the growth rate is invalid\",\"custom:event\":\"Emits GrowthRateUpdated event on successful update of the growth rate\",\"params\":{\"_annualGrowthRate\":\"The annual growth rate to set\",\"_snapshotInterval\":\"The snapshot interval to set\"}},\"setSnapshot(uint256,uint256)\":{\"custom:event\":\"Emits SnapshotUpdated event on successful update of the snapshot\",\"params\":{\"_snapshotMaxExchangeRate\":\"The exchange rate to set\",\"_snapshotTimestamp\":\"The timestamp to set\"}},\"setSnapshotGap(uint256)\":{\"custom:event\":\"Emits SnapshotGapUpdated event on successful update of the snapshot gap\",\"params\":{\"_snapshotGap\":\"The snapshot gap to set\"}},\"updateSnapshot()\":{\"custom:error\":\"InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero\",\"custom:event\":\"Emits SnapshotUpdated event on successful update of the snapshot\"}},\"title\":\"WstETHOracleV2\",\"version\":1},\"userdoc\":{\"errors\":{\"InvalidGrowthRate()\":[{\"notice\":\"Thrown if the growth rate is invalid\"}],\"InvalidInitialSnapshot()\":[{\"notice\":\"Thrown if the initial snapshot is invalid\"}],\"InvalidSnapshotMaxExchangeRate()\":[{\"notice\":\"Thrown if the max snapshot exchange rate is invalid\"}],\"InvalidTokenAddress()\":[{\"notice\":\"Thrown if the token address is invalid\"}],\"Unauthorized(address,address,string)\":[{\"notice\":\"@notice Thrown when the action is prohibited by AccessControlManager\"}],\"ZeroAddressNotAllowed()\":[{\"notice\":\"Thrown if the supplied address is a zero address where it is not allowed\"}]},\"events\":{\"GrowthRateUpdated(uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted when the growth rate is updated\"},\"SnapshotGapUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the snapshot gap is updated\"},\"SnapshotUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the snapshot is updated\"}},\"kind\":\"user\",\"methods\":{\"ACCESS_CONTROL_MANAGER()\":{\"notice\":\"Address of the AccessControlManager contract\"},\"CORRELATED_TOKEN()\":{\"notice\":\"Address of the correlated token\"},\"RESILIENT_ORACLE()\":{\"notice\":\"Address of Resilient Oracle\"},\"STETH()\":{\"notice\":\"Address of stETH\"},\"UNDERLYING_TOKEN()\":{\"notice\":\"Address of the underlying token\"},\"constructor\":{\"notice\":\"Constructor for the implementation contract.\"},\"getMaxAllowedExchangeRate()\":{\"notice\":\"Gets the maximum allowed exchange rate for token\"},\"getPrice(address)\":{\"notice\":\"Fetches the price of the token\"},\"getUnderlyingAmount()\":{\"notice\":\"Gets the amount of underlyingToken for 1 wstETH, assuming that 1 underlyingToken is equivalent to 1 stETH\"},\"isCapped()\":{\"notice\":\"Returns if the price is capped\"},\"setGrowthRate(uint256,uint256)\":{\"notice\":\"Sets the growth rate and snapshot interval\"},\"setSnapshot(uint256,uint256)\":{\"notice\":\"Directly sets the snapshot exchange rate and timestamp\"},\"setSnapshotGap(uint256)\":{\"notice\":\"Sets the snapshot gap\"},\"snapshotGap()\":{\"notice\":\"Gap to add when updating the snapshot\"},\"snapshotInterval()\":{\"notice\":\"Snapshot update interval\"},\"snapshotMaxExchangeRate()\":{\"notice\":\"Last stored snapshot maximum exchange rate\"},\"snapshotTimestamp()\":{\"notice\":\"Last stored snapshot timestamp\"},\"updateSnapshot()\":{\"notice\":\"Updates the snapshot price and timestamp\"}},\"notice\":\"This oracle fetches the price of wstETH\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracles/WstETHOracleV2.sol\":\"WstETHOracleV2\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev External interface of AccessControl declared to support ERC165 detection.\\n */\\ninterface IAccessControl {\\n /**\\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\\n *\\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\\n * {RoleAdminChanged} not being emitted signaling this.\\n *\\n * _Available since v3.1._\\n */\\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\\n\\n /**\\n * @dev Emitted when `account` is granted `role`.\\n *\\n * `sender` is the account that originated the contract call, an admin role\\n * bearer except when using {AccessControl-_setupRole}.\\n */\\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Emitted when `account` is revoked `role`.\\n *\\n * `sender` is the account that originated the contract call:\\n * - if using `revokeRole`, it is the admin role bearer\\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\\n */\\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Returns `true` if `account` has been granted `role`.\\n */\\n function hasRole(bytes32 role, address account) external view returns (bool);\\n\\n /**\\n * @dev Returns the admin role that controls `role`. See {grantRole} and\\n * {revokeRole}.\\n *\\n * To change a role's admin, use {AccessControl-_setRoleAdmin}.\\n */\\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function grantRole(bytes32 role, address account) external;\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function revokeRole(bytes32 role, address account) external;\\n\\n /**\\n * @dev Revokes `role` from the calling account.\\n *\\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n * purpose is to provide a mechanism for accounts to lose their privileges\\n * if they are compromised (such as when a trusted device is misplaced).\\n *\\n * If the calling account had been granted `role`, emits a {RoleRevoked}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must be `account`.\\n */\\n function renounceRole(bytes32 role, address account) external;\\n}\\n\",\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n *\\n * _Available since v4.1._\\n */\\ninterface IERC20Metadata is IERC20 {\\n /**\\n * @dev Returns the name of the token.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the symbol of the token.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the decimals places of the token.\\n */\\n function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\"},\"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\nimport \\\"@openzeppelin/contracts/access/IAccessControl.sol\\\";\\n\\n/**\\n * @title IAccessControlManagerV8\\n * @author Venus\\n * @notice Interface implemented by the `AccessControlManagerV8` contract.\\n */\\ninterface IAccessControlManagerV8 is IAccessControl {\\n function giveCallPermission(address contractAddress, string calldata functionSig, address accountToPermit) external;\\n\\n function revokeCallPermission(\\n address contractAddress,\\n string calldata functionSig,\\n address accountToRevoke\\n ) external;\\n\\n function isAllowedToCall(address account, string calldata functionSig) external view returns (bool);\\n\\n function hasPermission(\\n address account,\\n address contractAddress,\\n string calldata functionSig\\n ) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xaa29b098440d0b3a131c5ecdf25ce548790c1b5ac7bf9b5c0264b6af6f7a1e0b\",\"license\":\"BSD-3-Clause\"},\"@venusprotocol/solidity-utilities/contracts/constants.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\n/// @dev Base unit for computations, usually used in scaling (multiplications, divisions)\\nuint256 constant EXP_SCALE = 1e18;\\n\\n/// @dev A unit (literal one) in EXP_SCALE, usually used in additions/subtractions\\nuint256 constant MANTISSA_ONE = EXP_SCALE;\\n\\n/// @dev The approximate number of seconds per year\\nuint256 constant SECONDS_PER_YEAR = 31_536_000;\\n\",\"keccak256\":\"0x14de93ead464da249af31bea0e3bcfb62ec693bea3475fb4d90f055ac81dc5eb\",\"license\":\"BSD-3-Clause\"},\"@venusprotocol/solidity-utilities/contracts/validators.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.25;\\n\\n/// @notice Thrown if the supplied address is a zero address where it is not allowed\\nerror ZeroAddressNotAllowed();\\n\\n/// @notice Thrown if the supplied value is 0 where it is not allowed\\nerror ZeroValueNotAllowed();\\n\\n/// @notice Checks if the provided address is nonzero, reverts otherwise\\n/// @param address_ Address to check\\n/// @custom:error ZeroAddressNotAllowed is thrown if the provided address is a zero address\\nfunction ensureNonzeroAddress(address address_) pure {\\n if (address_ == address(0)) {\\n revert ZeroAddressNotAllowed();\\n }\\n}\\n\\n/// @notice Checks if the provided value is nonzero, reverts otherwise\\n/// @param value_ Value to check\\n/// @custom:error ZeroValueNotAllowed is thrown if the provided value is 0\\nfunction ensureNonzeroValue(uint256 value_) pure {\\n if (value_ == 0) {\\n revert ZeroValueNotAllowed();\\n }\\n}\\n\",\"keccak256\":\"0xdb88e14d50dd21889ca3329d755673d022c47e8da005b6a545c7f69c2c4b7b86\",\"license\":\"BSD-3-Clause\"},\"contracts/interfaces/ICappedOracle.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.25;\\n\\ninterface ICappedOracle {\\n function updateSnapshot() external;\\n}\\n\",\"keccak256\":\"0xad239e65b5e92b3486418c5ccca120247702251f9724cd96657c3cfdc7fedc31\",\"license\":\"BSD-3-Clause\"},\"contracts/interfaces/IStETH.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\ninterface IStETH {\\n function getPooledEthByShares(uint256 _sharesAmount) external view returns (uint256);\\n function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0x9e7ee12d63a84081722469719e046d6791a087f33ab40804ff1ff40ab859d4d3\",\"license\":\"BSD-3-Clause\"},\"contracts/interfaces/OracleInterface.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\ninterface OracleInterface {\\n function getPrice(address asset) external view returns (uint256);\\n}\\n\\ninterface ResilientOracleInterface is OracleInterface {\\n function updatePrice(address vToken) external;\\n\\n function updateAssetPrice(address asset) external;\\n\\n function getUnderlyingPrice(address vToken) external view returns (uint256);\\n}\\n\\ninterface BoundValidatorInterface {\\n function validatePriceWithAnchorPrice(\\n address asset,\\n uint256 reporterPrice,\\n uint256 anchorPrice\\n ) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\"},\"contracts/oracles/WstETHOracleV2.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.25;\\n\\nimport { IStETH } from \\\"../interfaces/IStETH.sol\\\";\\nimport { CorrelatedTokenOracle } from \\\"./common/CorrelatedTokenOracle.sol\\\";\\nimport { EXP_SCALE } from \\\"@venusprotocol/solidity-utilities/contracts/constants.sol\\\";\\nimport { ensureNonzeroAddress } from \\\"@venusprotocol/solidity-utilities/contracts/validators.sol\\\";\\n\\n/**\\n * @title WstETHOracleV2\\n * @author Venus\\n * @notice This oracle fetches the price of wstETH\\n */\\ncontract WstETHOracleV2 is CorrelatedTokenOracle {\\n /// @notice Address of stETH\\n IStETH public immutable STETH;\\n\\n /// @notice Constructor for the implementation contract.\\n /// @dev The underlyingToken must be correlated so that 1 underlyingToken is equal to 1 stETH, because\\n /// getUnderlyingAmount() implicitly assumes that\\n constructor(\\n address stETH,\\n address wstETH,\\n address underlyingToken,\\n address resilientOracle,\\n uint256 annualGrowthRate,\\n uint256 _snapshotInterval,\\n uint256 initialSnapshotMaxExchangeRate,\\n uint256 initialSnapshotTimestamp,\\n address accessControlManager,\\n uint256 _snapshotGap\\n )\\n CorrelatedTokenOracle(\\n wstETH,\\n underlyingToken,\\n resilientOracle,\\n annualGrowthRate,\\n _snapshotInterval,\\n initialSnapshotMaxExchangeRate,\\n initialSnapshotTimestamp,\\n accessControlManager,\\n _snapshotGap\\n )\\n {\\n ensureNonzeroAddress(stETH);\\n STETH = IStETH(stETH);\\n }\\n\\n /**\\n * @notice Gets the amount of underlyingToken for 1 wstETH, assuming that 1 underlyingToken is equivalent to 1 stETH\\n * @return amount Amount of underlyingToken\\n */\\n function getUnderlyingAmount() public view override returns (uint256) {\\n return STETH.getPooledEthByShares(EXP_SCALE);\\n }\\n}\\n\",\"keccak256\":\"0xafa20a802d782e7dbc09351314e7ced484e3685b10a4b7d4e2bf10e57b534806\",\"license\":\"BSD-3-Clause\"},\"contracts/oracles/common/CorrelatedTokenOracle.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.25;\\n\\nimport { OracleInterface, ResilientOracleInterface } from \\\"../../interfaces/OracleInterface.sol\\\";\\nimport { ensureNonzeroAddress } from \\\"@venusprotocol/solidity-utilities/contracts/validators.sol\\\";\\nimport { SECONDS_PER_YEAR } from \\\"@venusprotocol/solidity-utilities/contracts/constants.sol\\\";\\nimport { IERC20Metadata } from \\\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\\\";\\nimport { ICappedOracle } from \\\"../../interfaces/ICappedOracle.sol\\\";\\nimport { IAccessControlManagerV8 } from \\\"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol\\\";\\n\\n/**\\n * @title CorrelatedTokenOracle\\n * @notice This oracle fetches the price of a token that is correlated to another token.\\n */\\nabstract contract CorrelatedTokenOracle is OracleInterface, ICappedOracle {\\n /// @notice Address of the correlated token\\n address public immutable CORRELATED_TOKEN;\\n\\n /// @notice Address of the underlying token\\n address public immutable UNDERLYING_TOKEN;\\n\\n /// @notice Address of Resilient Oracle\\n ResilientOracleInterface public immutable RESILIENT_ORACLE;\\n\\n /// @notice Address of the AccessControlManager contract\\n IAccessControlManagerV8 public immutable ACCESS_CONTROL_MANAGER;\\n\\n //// @notice Growth rate percentage in seconds. Ex: 1e18 is 100%\\n uint256 public growthRatePerSecond;\\n\\n /// @notice Snapshot update interval\\n uint256 public snapshotInterval;\\n\\n /// @notice Last stored snapshot maximum exchange rate\\n uint256 public snapshotMaxExchangeRate;\\n\\n /// @notice Last stored snapshot timestamp\\n uint256 public snapshotTimestamp;\\n\\n /// @notice Gap to add when updating the snapshot\\n uint256 public snapshotGap;\\n\\n /// @notice Emitted when the snapshot is updated\\n event SnapshotUpdated(uint256 indexed maxExchangeRate, uint256 indexed timestamp);\\n\\n /// @notice Emitted when the growth rate is updated\\n event GrowthRateUpdated(\\n uint256 indexed oldGrowthRatePerSecond,\\n uint256 indexed newGrowthRatePerSecond,\\n uint256 indexed oldSnapshotInterval,\\n uint256 newSnapshotInterval\\n );\\n\\n /// @notice Emitted when the snapshot gap is updated\\n event SnapshotGapUpdated(uint256 indexed oldSnapshotGap, uint256 indexed newSnapshotGap);\\n\\n /// @notice Thrown if the token address is invalid\\n error InvalidTokenAddress();\\n\\n /// @notice Thrown if the growth rate is invalid\\n error InvalidGrowthRate();\\n\\n /// @notice Thrown if the initial snapshot is invalid\\n error InvalidInitialSnapshot();\\n\\n /// @notice Thrown if the max snapshot exchange rate is invalid\\n error InvalidSnapshotMaxExchangeRate();\\n\\n /// @notice @notice Thrown when the action is prohibited by AccessControlManager\\n error Unauthorized(address sender, address calledContract, string methodSignature);\\n\\n /**\\n * @notice Constructor for the implementation contract.\\n * @custom:error InvalidGrowthRate error is thrown if the growth rate is invalid\\n * @custom:error InvalidInitialSnapshot error is thrown if the initial snapshot values are invalid\\n */\\n constructor(\\n address _correlatedToken,\\n address _underlyingToken,\\n address _resilientOracle,\\n uint256 _annualGrowthRate,\\n uint256 _snapshotInterval,\\n uint256 _initialSnapshotMaxExchangeRate,\\n uint256 _initialSnapshotTimestamp,\\n address _accessControlManager,\\n uint256 _snapshotGap\\n ) {\\n growthRatePerSecond = _annualGrowthRate / SECONDS_PER_YEAR;\\n\\n if ((growthRatePerSecond == 0 && _snapshotInterval > 0) || (growthRatePerSecond > 0 && _snapshotInterval == 0))\\n revert InvalidGrowthRate();\\n\\n if ((_initialSnapshotMaxExchangeRate == 0 || _initialSnapshotTimestamp == 0) && _snapshotInterval > 0) {\\n revert InvalidInitialSnapshot();\\n }\\n\\n ensureNonzeroAddress(_correlatedToken);\\n ensureNonzeroAddress(_underlyingToken);\\n ensureNonzeroAddress(_resilientOracle);\\n ensureNonzeroAddress(_accessControlManager);\\n\\n CORRELATED_TOKEN = _correlatedToken;\\n UNDERLYING_TOKEN = _underlyingToken;\\n RESILIENT_ORACLE = ResilientOracleInterface(_resilientOracle);\\n snapshotInterval = _snapshotInterval;\\n\\n snapshotMaxExchangeRate = _initialSnapshotMaxExchangeRate;\\n snapshotTimestamp = _initialSnapshotTimestamp;\\n snapshotGap = _snapshotGap;\\n\\n ACCESS_CONTROL_MANAGER = IAccessControlManagerV8(_accessControlManager);\\n }\\n\\n /**\\n * @notice Directly sets the snapshot exchange rate and timestamp\\n * @param _snapshotMaxExchangeRate The exchange rate to set\\n * @param _snapshotTimestamp The timestamp to set\\n * @custom:event Emits SnapshotUpdated event on successful update of the snapshot\\n */\\n function setSnapshot(uint256 _snapshotMaxExchangeRate, uint256 _snapshotTimestamp) external {\\n _checkAccessAllowed(\\\"setSnapshot(uint256,uint256)\\\");\\n\\n snapshotMaxExchangeRate = _snapshotMaxExchangeRate;\\n snapshotTimestamp = _snapshotTimestamp;\\n\\n emit SnapshotUpdated(snapshotMaxExchangeRate, snapshotTimestamp);\\n }\\n\\n /**\\n * @notice Sets the growth rate and snapshot interval\\n * @param _annualGrowthRate The annual growth rate to set\\n * @param _snapshotInterval The snapshot interval to set\\n * @custom:error InvalidGrowthRate error is thrown if the growth rate is invalid\\n * @custom:event Emits GrowthRateUpdated event on successful update of the growth rate\\n */\\n function setGrowthRate(uint256 _annualGrowthRate, uint256 _snapshotInterval) external {\\n _checkAccessAllowed(\\\"setGrowthRate(uint256,uint256)\\\");\\n uint256 oldGrowthRatePerSecond = growthRatePerSecond;\\n\\n growthRatePerSecond = _annualGrowthRate / SECONDS_PER_YEAR;\\n\\n if ((growthRatePerSecond == 0 && _snapshotInterval > 0) || (growthRatePerSecond > 0 && _snapshotInterval == 0))\\n revert InvalidGrowthRate();\\n\\n emit GrowthRateUpdated(oldGrowthRatePerSecond, growthRatePerSecond, snapshotInterval, _snapshotInterval);\\n\\n snapshotInterval = _snapshotInterval;\\n }\\n\\n /**\\n * @notice Sets the snapshot gap\\n * @param _snapshotGap The snapshot gap to set\\n * @custom:event Emits SnapshotGapUpdated event on successful update of the snapshot gap\\n */\\n function setSnapshotGap(uint256 _snapshotGap) external {\\n _checkAccessAllowed(\\\"setSnapshotGap(uint256)\\\");\\n\\n emit SnapshotGapUpdated(snapshotGap, _snapshotGap);\\n\\n snapshotGap = _snapshotGap;\\n }\\n\\n /**\\n * @notice Returns if the price is capped\\n * @return isCapped Boolean indicating if the price is capped\\n */\\n function isCapped() external view virtual returns (bool) {\\n if (snapshotInterval == 0) {\\n return false;\\n }\\n\\n uint256 maxAllowedExchangeRate = getMaxAllowedExchangeRate();\\n if (maxAllowedExchangeRate == 0) {\\n return false;\\n }\\n\\n uint256 exchangeRate = getUnderlyingAmount();\\n\\n return exchangeRate > maxAllowedExchangeRate;\\n }\\n\\n /**\\n * @notice Updates the snapshot price and timestamp\\n * @custom:event Emits SnapshotUpdated event on successful update of the snapshot\\n * @custom:error InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero\\n */\\n function updateSnapshot() public override {\\n if (block.timestamp - snapshotTimestamp < snapshotInterval || snapshotInterval == 0) return;\\n\\n uint256 exchangeRate = getUnderlyingAmount();\\n uint256 maxAllowedExchangeRate = getMaxAllowedExchangeRate();\\n\\n snapshotMaxExchangeRate =\\n (exchangeRate > maxAllowedExchangeRate ? maxAllowedExchangeRate : exchangeRate) +\\n snapshotGap;\\n snapshotTimestamp = block.timestamp;\\n\\n if (snapshotMaxExchangeRate == 0) revert InvalidSnapshotMaxExchangeRate();\\n\\n RESILIENT_ORACLE.updateAssetPrice(UNDERLYING_TOKEN);\\n emit SnapshotUpdated(snapshotMaxExchangeRate, snapshotTimestamp);\\n }\\n\\n /**\\n * @notice Fetches the price of the token\\n * @param asset Address of the token\\n * @return price The price of the token in scaled decimal places. It can be capped\\n * to a maximum value taking into account the growth rate\\n * @custom:error InvalidTokenAddress error is thrown if the token address is invalid\\n */\\n function getPrice(address asset) public view override returns (uint256) {\\n if (asset != CORRELATED_TOKEN) revert InvalidTokenAddress();\\n\\n uint256 exchangeRate = getUnderlyingAmount();\\n\\n if (snapshotInterval == 0) {\\n return _calculatePrice(exchangeRate);\\n }\\n\\n uint256 maxAllowedExchangeRate = getMaxAllowedExchangeRate();\\n\\n uint256 finalExchangeRate = (exchangeRate > maxAllowedExchangeRate && maxAllowedExchangeRate != 0)\\n ? maxAllowedExchangeRate\\n : exchangeRate;\\n\\n return _calculatePrice(finalExchangeRate);\\n }\\n\\n /**\\n * @notice Gets the maximum allowed exchange rate for token\\n * @return maxExchangeRate Maximum allowed exchange rate\\n */\\n function getMaxAllowedExchangeRate() public view returns (uint256) {\\n uint256 timeElapsed = block.timestamp - snapshotTimestamp;\\n uint256 maxExchangeRate = snapshotMaxExchangeRate +\\n (snapshotMaxExchangeRate * growthRatePerSecond * timeElapsed) /\\n 1e18;\\n return maxExchangeRate;\\n }\\n\\n /**\\n * @notice Gets the underlying amount for correlated token\\n * @return underlyingAmount Amount of underlying token\\n */\\n function getUnderlyingAmount() public view virtual returns (uint256);\\n\\n /**\\n * @notice Fetches price of the token based on an underlying exchange rate\\n * @param exchangeRate The underlying exchange rate to use\\n * @return price The price of the token in scaled decimal places\\n */\\n function _calculatePrice(uint256 exchangeRate) internal view returns (uint256) {\\n uint256 underlyingUSDPrice = RESILIENT_ORACLE.getPrice(UNDERLYING_TOKEN);\\n\\n IERC20Metadata token = IERC20Metadata(CORRELATED_TOKEN);\\n uint256 decimals = token.decimals();\\n\\n return (exchangeRate * underlyingUSDPrice) / (10 ** decimals);\\n }\\n\\n /**\\n * @notice Reverts if the call is not allowed by AccessControlManager\\n * @param signature Method signature\\n * @custom:error Unauthorized error is thrown if the call is not allowed\\n */\\n function _checkAccessAllowed(string memory signature) internal view {\\n bool isAllowedToCall = ACCESS_CONTROL_MANAGER.isAllowedToCall(msg.sender, signature);\\n\\n if (!isAllowedToCall) {\\n revert Unauthorized(msg.sender, address(this), signature);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x808b444fa4d1d440dc43de290f1eb59a64646ce9085028b286fa30346305872e\",\"license\":\"BSD-3-Clause\"}},\"version\":1}", + "bytecode": "0x610120604052348015610010575f80fd5b50604051610f0c380380610f0c83398101604081905261002f9161017d565b8888888888888888886100466301e133808761020e565b5f81905515801561005657505f85115b8061006a57505f805411801561006a575084155b15610088576040516353b7e64560e11b815260040160405180910390fd5b831580610093575082155b801561009e57505f85115b156100bc5760405163b8a5589b60e01b815260040160405180910390fd5b6100c589610138565b6100ce88610138565b6100d787610138565b6100e082610138565b6001600160a01b0398891660805296881660a05294871660c052600192909255600255600355506004919091551660e05261011a8a610138565b5050506001600160a01b03909616610100525061022d945050505050565b6001600160a01b03811661015f576040516342bcdf7f60e11b815260040160405180910390fd5b50565b80516001600160a01b0381168114610178575f80fd5b919050565b5f805f805f805f805f806101408b8d031215610197575f80fd5b6101a08b610162565b99506101ae60208c01610162565b98506101bc60408c01610162565b97506101ca60608c01610162565b965060808b0151955060a08b0151945060c08b0151935060e08b015192506101f56101008c01610162565b91506101208b015190509295989b9194979a5092959850565b5f8261022857634e487b7160e01b5f52601260045260245ffd5b500490565b60805160a05160c05160e05161010051610c6a6102a25f395f818161028b01526106c001525f818161019101526108f301525f818161024c0152818161059c01526107c601525f818161013601528181610574015261079a01525f8181610209015281816102b001526108340152610c6a5ff3fe608060405234801561000f575f80fd5b5060043610610111575f3560e01c8063692404261161009e578063a4edcd4c1161006e578063a4edcd4c14610247578063abb856131461026e578063ac5a693e14610276578063bdf13af21461027e578063e00bfe5014610286575f80fd5b806369240426146101fc57806369818a35146102045780637fc4e4a01461022b5780639c43eb541461023e575f80fd5b806345be2dc7116100e457806345be2dc71461018c5780635213f9c8146101b3578063596efe6f146101c8578063643d813d146101d1578063671528d4146101e4575f80fd5b806307d0413c1461011557806329db1be6146101315780634169d2451461017057806341976e0914610179575b5f80fd5b61011e60015481565b6040519081526020015b60405180910390f35b6101587f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610128565b61011e60045481565b61011e61018736600461099c565b6102ad565b6101587f000000000000000000000000000000000000000000000000000000000000000081565b6101c66101c13660046109c2565b61035e565b005b61011e60025481565b6101c66101df3660046109d9565b6103cf565b6101ec6104a5565b6040519015158152602001610128565b6101c66104e0565b6101587f000000000000000000000000000000000000000000000000000000000000000081565b6101c66102393660046109d9565b610629565b61011e60035481565b6101587f000000000000000000000000000000000000000000000000000000000000000081565b61011e6106a1565b61011e5f5481565b61011e610736565b6101587f000000000000000000000000000000000000000000000000000000000000000081565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161461030057604051630f58058360e11b815260040160405180910390fd5b5f6103096106a1565b90506001545f036103245761031d81610783565b9392505050565b5f61032d610736565b90505f818311801561033e57508115155b610348578261034a565b815b905061035581610783565b95945050505050565b61039c6040518060400160405280601781526020017f736574536e617073686f744761702875696e74323536290000000000000000008152506108da565b6004546040518291907feb3716d3f8388c182853c1dc98b18931f3a600bbab31f2ff48631f6412e4997f905f90a3600455565b61040d6040518060400160405280601e81526020017f73657447726f777468526174652875696e743235362c75696e743235362900008152506108da565b5f5461041d6301e1338084610a0d565b5f81905515801561042d57505f82115b8061044157505f8054118015610441575081155b1561045f576040516353b7e64560e11b815260040160405180910390fd5b6001545f54827fa65cbeb0e28a8803a912daac67c472c160aa01e2c988755fa424f290321de6088560405161049691815260200190565b60405180910390a45060015550565b5f6001545f036104b457505f90565b5f6104bd610736565b9050805f036104cd575f91505090565b5f6104d66106a1565b9190911192915050565b6001546003546104f09042610a2c565b10806104fc5750600154155b1561050357565b5f61050c6106a1565b90505f610517610736565b9050600454818311610529578261052b565b815b6105359190610a45565b6002819055426003555f0361055d57604051635f18388760e01b815260040160405180910390fd5b60405163b62cad6960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063b62cad69906024015f604051808303815f87803b1580156105dd575f80fd5b505af11580156105ef573d5f803e3d5ffd5b505050506003546002547f2c8c8fcb8c77a0ca21dcc3ab8fc0ade761557e76b1240cb40ebbef9fcee00f7d60405160405180910390a35050565b6106676040518060400160405280601c81526020017f736574536e617073686f742875696e743235362c75696e7432353629000000008152506108da565b60028290556003819055604051819083907f2c8c8fcb8c77a0ca21dcc3ab8fc0ade761557e76b1240cb40ebbef9fcee00f7d905f90a35050565b604051630f451f7160e31b8152670de0b6b3a764000060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637a28fb8890602401602060405180830381865afa15801561070d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107319190610a58565b905090565b5f80600354426107469190610a2c565b90505f670de0b6b3a7640000825f546002546107629190610a6f565b61076c9190610a6f565b6107769190610a0d565b60025461031d9190610a45565b6040516341976e0960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f9182917f000000000000000000000000000000000000000000000000000000000000000016906341976e0990602401602060405180830381865afa15801561080b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061082f9190610a58565b90505f7f000000000000000000000000000000000000000000000000000000000000000090505f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610892573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108b69190610a86565b60ff1690506108c681600a610b86565b6108d08487610a6f565b6103559190610a0d565b6040516318c5e8ab60e01b81525f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906318c5e8ab9061092a9033908690600401610bbf565b602060405180830381865afa158015610945573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109699190610bea565b90508061099857333083604051634a3fa29360e01b815260040161098f93929190610c09565b60405180910390fd5b5050565b5f602082840312156109ac575f80fd5b81356001600160a01b038116811461031d575f80fd5b5f602082840312156109d2575f80fd5b5035919050565b5f80604083850312156109ea575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b5f82610a2757634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115610a3f57610a3f6109f9565b92915050565b80820180821115610a3f57610a3f6109f9565b5f60208284031215610a68575f80fd5b5051919050565b8082028115828204841417610a3f57610a3f6109f9565b5f60208284031215610a96575f80fd5b815160ff8116811461031d575f80fd5b600181815b80851115610ae057815f1904821115610ac657610ac66109f9565b80851615610ad357918102915b93841c9390800290610aab565b509250929050565b5f82610af657506001610a3f565b81610b0257505f610a3f565b8160018114610b185760028114610b2257610b3e565b6001915050610a3f565b60ff841115610b3357610b336109f9565b50506001821b610a3f565b5060208310610133831016604e8410600b8410161715610b61575081810a610a3f565b610b6b8383610aa6565b805f1904821115610b7e57610b7e6109f9565b029392505050565b5f61031d8383610ae8565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6001600160a01b03831681526040602082018190525f90610be290830184610b91565b949350505050565b5f60208284031215610bfa575f80fd5b8151801515811461031d575f80fd5b6001600160a01b038481168252831660208201526060604082018190525f9061035590830184610b9156fea264697066735822122022c446218af0aec324997e3d37ad189048cd4415dfdbeae289215ff36289569b64736f6c63430008190033", + "deployedBytecode": "0x608060405234801561000f575f80fd5b5060043610610111575f3560e01c8063692404261161009e578063a4edcd4c1161006e578063a4edcd4c14610247578063abb856131461026e578063ac5a693e14610276578063bdf13af21461027e578063e00bfe5014610286575f80fd5b806369240426146101fc57806369818a35146102045780637fc4e4a01461022b5780639c43eb541461023e575f80fd5b806345be2dc7116100e457806345be2dc71461018c5780635213f9c8146101b3578063596efe6f146101c8578063643d813d146101d1578063671528d4146101e4575f80fd5b806307d0413c1461011557806329db1be6146101315780634169d2451461017057806341976e0914610179575b5f80fd5b61011e60015481565b6040519081526020015b60405180910390f35b6101587f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610128565b61011e60045481565b61011e61018736600461099c565b6102ad565b6101587f000000000000000000000000000000000000000000000000000000000000000081565b6101c66101c13660046109c2565b61035e565b005b61011e60025481565b6101c66101df3660046109d9565b6103cf565b6101ec6104a5565b6040519015158152602001610128565b6101c66104e0565b6101587f000000000000000000000000000000000000000000000000000000000000000081565b6101c66102393660046109d9565b610629565b61011e60035481565b6101587f000000000000000000000000000000000000000000000000000000000000000081565b61011e6106a1565b61011e5f5481565b61011e610736565b6101587f000000000000000000000000000000000000000000000000000000000000000081565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161461030057604051630f58058360e11b815260040160405180910390fd5b5f6103096106a1565b90506001545f036103245761031d81610783565b9392505050565b5f61032d610736565b90505f818311801561033e57508115155b610348578261034a565b815b905061035581610783565b95945050505050565b61039c6040518060400160405280601781526020017f736574536e617073686f744761702875696e74323536290000000000000000008152506108da565b6004546040518291907feb3716d3f8388c182853c1dc98b18931f3a600bbab31f2ff48631f6412e4997f905f90a3600455565b61040d6040518060400160405280601e81526020017f73657447726f777468526174652875696e743235362c75696e743235362900008152506108da565b5f5461041d6301e1338084610a0d565b5f81905515801561042d57505f82115b8061044157505f8054118015610441575081155b1561045f576040516353b7e64560e11b815260040160405180910390fd5b6001545f54827fa65cbeb0e28a8803a912daac67c472c160aa01e2c988755fa424f290321de6088560405161049691815260200190565b60405180910390a45060015550565b5f6001545f036104b457505f90565b5f6104bd610736565b9050805f036104cd575f91505090565b5f6104d66106a1565b9190911192915050565b6001546003546104f09042610a2c565b10806104fc5750600154155b1561050357565b5f61050c6106a1565b90505f610517610736565b9050600454818311610529578261052b565b815b6105359190610a45565b6002819055426003555f0361055d57604051635f18388760e01b815260040160405180910390fd5b60405163b62cad6960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063b62cad69906024015f604051808303815f87803b1580156105dd575f80fd5b505af11580156105ef573d5f803e3d5ffd5b505050506003546002547f2c8c8fcb8c77a0ca21dcc3ab8fc0ade761557e76b1240cb40ebbef9fcee00f7d60405160405180910390a35050565b6106676040518060400160405280601c81526020017f736574536e617073686f742875696e743235362c75696e7432353629000000008152506108da565b60028290556003819055604051819083907f2c8c8fcb8c77a0ca21dcc3ab8fc0ade761557e76b1240cb40ebbef9fcee00f7d905f90a35050565b604051630f451f7160e31b8152670de0b6b3a764000060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637a28fb8890602401602060405180830381865afa15801561070d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107319190610a58565b905090565b5f80600354426107469190610a2c565b90505f670de0b6b3a7640000825f546002546107629190610a6f565b61076c9190610a6f565b6107769190610a0d565b60025461031d9190610a45565b6040516341976e0960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f9182917f000000000000000000000000000000000000000000000000000000000000000016906341976e0990602401602060405180830381865afa15801561080b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061082f9190610a58565b90505f7f000000000000000000000000000000000000000000000000000000000000000090505f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610892573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108b69190610a86565b60ff1690506108c681600a610b86565b6108d08487610a6f565b6103559190610a0d565b6040516318c5e8ab60e01b81525f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906318c5e8ab9061092a9033908690600401610bbf565b602060405180830381865afa158015610945573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109699190610bea565b90508061099857333083604051634a3fa29360e01b815260040161098f93929190610c09565b60405180910390fd5b5050565b5f602082840312156109ac575f80fd5b81356001600160a01b038116811461031d575f80fd5b5f602082840312156109d2575f80fd5b5035919050565b5f80604083850312156109ea575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b5f82610a2757634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115610a3f57610a3f6109f9565b92915050565b80820180821115610a3f57610a3f6109f9565b5f60208284031215610a68575f80fd5b5051919050565b8082028115828204841417610a3f57610a3f6109f9565b5f60208284031215610a96575f80fd5b815160ff8116811461031d575f80fd5b600181815b80851115610ae057815f1904821115610ac657610ac66109f9565b80851615610ad357918102915b93841c9390800290610aab565b509250929050565b5f82610af657506001610a3f565b81610b0257505f610a3f565b8160018114610b185760028114610b2257610b3e565b6001915050610a3f565b60ff841115610b3357610b336109f9565b50506001821b610a3f565b5060208310610133831016604e8410600b8410161715610b61575081810a610a3f565b610b6b8383610aa6565b805f1904821115610b7e57610b7e6109f9565b029392505050565b5f61031d8383610ae8565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6001600160a01b03831681526040602082018190525f90610be290830184610b91565b949350505050565b5f60208284031215610bfa575f80fd5b8151801515811461031d575f80fd5b6001600160a01b038481168252831660208201526060604082018190525f9061035590830184610b9156fea264697066735822122022c446218af0aec324997e3d37ad189048cd4415dfdbeae289215ff36289569b64736f6c63430008190033", "devdoc": { - "details": "This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \"admin cannot fallback to proxy target\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.", + "author": "Venus", "kind": "dev", "methods": { - "admin()": { - "details": "Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`" - }, "constructor": { - "details": "Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}." + "details": "The underlyingToken must be correlated so that 1 underlyingToken is equal to 1 stETH, because getUnderlyingAmount() implicitly assumes that" }, - "implementation()": { - "details": "Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`" + "getMaxAllowedExchangeRate()": { + "returns": { + "_0": "maxExchangeRate Maximum allowed exchange rate" + } }, - "upgradeTo(address)": { - "details": "Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}." + "getPrice(address)": { + "custom:error": "InvalidTokenAddress error is thrown if the token address is invalid", + "params": { + "asset": "Address of the token" + }, + "returns": { + "_0": "price The price of the token in scaled decimal places. It can be capped to a maximum value taking into account the growth rate" + } + }, + "getUnderlyingAmount()": { + "returns": { + "_0": "amount Amount of underlyingToken" + } }, - "upgradeToAndCall(address,bytes)": { - "details": "Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}." + "isCapped()": { + "returns": { + "_0": "isCapped Boolean indicating if the price is capped" + } + }, + "setGrowthRate(uint256,uint256)": { + "custom:error": "InvalidGrowthRate error is thrown if the growth rate is invalid", + "custom:event": "Emits GrowthRateUpdated event on successful update of the growth rate", + "params": { + "_annualGrowthRate": "The annual growth rate to set", + "_snapshotInterval": "The snapshot interval to set" + } + }, + "setSnapshot(uint256,uint256)": { + "custom:event": "Emits SnapshotUpdated event on successful update of the snapshot", + "params": { + "_snapshotMaxExchangeRate": "The exchange rate to set", + "_snapshotTimestamp": "The timestamp to set" + } + }, + "setSnapshotGap(uint256)": { + "custom:event": "Emits SnapshotGapUpdated event on successful update of the snapshot gap", + "params": { + "_snapshotGap": "The snapshot gap to set" + } + }, + "updateSnapshot()": { + "custom:error": "InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero", + "custom:event": "Emits SnapshotUpdated event on successful update of the snapshot" } }, + "title": "WstETHOracleV2", "version": 1 }, "userdoc": { + "errors": { + "InvalidGrowthRate()": [ + { + "notice": "Thrown if the growth rate is invalid" + } + ], + "InvalidInitialSnapshot()": [ + { + "notice": "Thrown if the initial snapshot is invalid" + } + ], + "InvalidSnapshotMaxExchangeRate()": [ + { + "notice": "Thrown if the max snapshot exchange rate is invalid" + } + ], + "InvalidTokenAddress()": [ + { + "notice": "Thrown if the token address is invalid" + } + ], + "Unauthorized(address,address,string)": [ + { + "notice": "@notice Thrown when the action is prohibited by AccessControlManager" + } + ], + "ZeroAddressNotAllowed()": [ + { + "notice": "Thrown if the supplied address is a zero address where it is not allowed" + } + ] + }, + "events": { + "GrowthRateUpdated(uint256,uint256,uint256,uint256)": { + "notice": "Emitted when the growth rate is updated" + }, + "SnapshotGapUpdated(uint256,uint256)": { + "notice": "Emitted when the snapshot gap is updated" + }, + "SnapshotUpdated(uint256,uint256)": { + "notice": "Emitted when the snapshot is updated" + } + }, "kind": "user", - "methods": {}, + "methods": { + "ACCESS_CONTROL_MANAGER()": { + "notice": "Address of the AccessControlManager contract" + }, + "CORRELATED_TOKEN()": { + "notice": "Address of the correlated token" + }, + "RESILIENT_ORACLE()": { + "notice": "Address of Resilient Oracle" + }, + "STETH()": { + "notice": "Address of stETH" + }, + "UNDERLYING_TOKEN()": { + "notice": "Address of the underlying token" + }, + "constructor": { + "notice": "Constructor for the implementation contract." + }, + "getMaxAllowedExchangeRate()": { + "notice": "Gets the maximum allowed exchange rate for token" + }, + "getPrice(address)": { + "notice": "Fetches the price of the token" + }, + "getUnderlyingAmount()": { + "notice": "Gets the amount of underlyingToken for 1 wstETH, assuming that 1 underlyingToken is equivalent to 1 stETH" + }, + "isCapped()": { + "notice": "Returns if the price is capped" + }, + "setGrowthRate(uint256,uint256)": { + "notice": "Sets the growth rate and snapshot interval" + }, + "setSnapshot(uint256,uint256)": { + "notice": "Directly sets the snapshot exchange rate and timestamp" + }, + "setSnapshotGap(uint256)": { + "notice": "Sets the snapshot gap" + }, + "snapshotGap()": { + "notice": "Gap to add when updating the snapshot" + }, + "snapshotInterval()": { + "notice": "Snapshot update interval" + }, + "snapshotMaxExchangeRate()": { + "notice": "Last stored snapshot maximum exchange rate" + }, + "snapshotTimestamp()": { + "notice": "Last stored snapshot timestamp" + }, + "updateSnapshot()": { + "notice": "Updates the snapshot price and timestamp" + } + }, + "notice": "This oracle fetches the price of wstETH", "version": 1 }, "storageLayout": { - "storage": [], - "types": null + "storage": [ + { + "astId": 451, + "contract": "contracts/oracles/WstETHOracleV2.sol:WstETHOracleV2", + "label": "growthRatePerSecond", + "offset": 0, + "slot": "0", + "type": "t_uint256" + }, + { + "astId": 454, + "contract": "contracts/oracles/WstETHOracleV2.sol:WstETHOracleV2", + "label": "snapshotInterval", + "offset": 0, + "slot": "1", + "type": "t_uint256" + }, + { + "astId": 457, + "contract": "contracts/oracles/WstETHOracleV2.sol:WstETHOracleV2", + "label": "snapshotMaxExchangeRate", + "offset": 0, + "slot": "2", + "type": "t_uint256" + }, + { + "astId": 460, + "contract": "contracts/oracles/WstETHOracleV2.sol:WstETHOracleV2", + "label": "snapshotTimestamp", + "offset": 0, + "slot": "3", + "type": "t_uint256" + }, + { + "astId": 463, + "contract": "contracts/oracles/WstETHOracleV2.sol:WstETHOracleV2", + "label": "snapshotGap", + "offset": 0, + "slot": "4", + "type": "t_uint256" + } + ], + "types": { + "t_uint256": { + "encoding": "inplace", + "label": "uint256", + "numberOfBytes": "32" + } + } } } diff --git a/deployments/ethereum/WstETHOracle_NonEquivalence.json b/deployments/ethereum/WstETHOracle_NonEquivalence.json index 3ed7fcfb..c248743a 100644 --- a/deployments/ethereum/WstETHOracle_NonEquivalence.json +++ b/deployments/ethereum/WstETHOracle_NonEquivalence.json @@ -1,36 +1,137 @@ { - "address": "0xd082B50b3EeB012605598bB45Fc2Be853b9AFEEf", + "address": "0x6ecf38558B0D1fFc6Ea28bEC6BD39F9F0Fdd6631", "abi": [ { - "anonymous": false, "inputs": [ { - "indexed": false, "internalType": "address", - "name": "previousAdmin", + "name": "stETH", "type": "address" }, { - "indexed": false, "internalType": "address", - "name": "newAdmin", + "name": "wstETH", + "type": "address" + }, + { + "internalType": "address", + "name": "underlyingToken", + "type": "address" + }, + { + "internalType": "address", + "name": "resilientOracle", + "type": "address" + }, + { + "internalType": "uint256", + "name": "annualGrowthRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_snapshotInterval", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "initialSnapshotMaxExchangeRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "initialSnapshotTimestamp", + "type": "uint256" + }, + { + "internalType": "address", + "name": "accessControlManager", "type": "address" + }, + { + "internalType": "uint256", + "name": "_snapshotGap", + "type": "uint256" } ], - "name": "AdminChanged", - "type": "event" + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "InvalidGrowthRate", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialSnapshot", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidSnapshotMaxExchangeRate", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidTokenAddress", + "type": "error" }, { - "anonymous": false, "inputs": [ { - "indexed": true, "internalType": "address", - "name": "beacon", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "calledContract", "type": "address" + }, + { + "internalType": "string", + "name": "methodSignature", + "type": "string" + } + ], + "name": "Unauthorized", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroAddressNotAllowed", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "oldGrowthRatePerSecond", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newGrowthRatePerSecond", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "oldSnapshotInterval", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newSnapshotInterval", + "type": "uint256" } ], - "name": "BeaconUpgraded", + "name": "GrowthRateUpdated", "type": "event" }, { @@ -38,105 +139,131 @@ "inputs": [ { "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" + "internalType": "uint256", + "name": "oldSnapshotGap", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newSnapshotGap", + "type": "uint256" } ], - "name": "Upgraded", + "name": "SnapshotGapUpdated", "type": "event" }, { - "stateMutability": "payable", - "type": "fallback" + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "maxExchangeRate", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "name": "SnapshotUpdated", + "type": "event" }, { "inputs": [], - "name": "admin", + "name": "ACCESS_CONTROL_MANAGER", "outputs": [ { - "internalType": "address", - "name": "admin_", + "internalType": "contract IAccessControlManagerV8", + "name": "", "type": "address" } ], - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function" }, { "inputs": [], - "name": "implementation", + "name": "CORRELATED_TOKEN", "outputs": [ { "internalType": "address", - "name": "implementation_", + "name": "", "type": "address" } ], - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function" }, { - "inputs": [ + "inputs": [], + "name": "RESILIENT_ORACLE", + "outputs": [ { - "internalType": "address", - "name": "newImplementation", + "internalType": "contract ResilientOracleInterface", + "name": "", "type": "address" } ], - "name": "upgradeTo", - "outputs": [], - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function" }, { - "inputs": [ + "inputs": [], + "name": "STETH", + "outputs": [ { - "internalType": "address", - "name": "newImplementation", + "internalType": "contract IStETH", + "name": "", "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" } ], - "name": "upgradeToAndCall", - "outputs": [], - "stateMutability": "payable", + "stateMutability": "view", "type": "function" }, - { - "stateMutability": "payable", - "type": "receive" - }, { "inputs": [], - "name": "ZeroAddressNotAllowed", - "type": "error" + "name": "UNDERLYING_TOKEN", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" }, { "inputs": [], - "name": "ASSUME_STETH_ETH_EQUIVALENCE", + "name": "getMaxAllowedExchangeRate", "outputs": [ { - "internalType": "bool", + "internalType": "uint256", "name": "", - "type": "bool" + "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { - "inputs": [], - "name": "RESILIENT_ORACLE", + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "getPrice", "outputs": [ { - "internalType": "contract OracleInterface", + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "stateMutability": "view", @@ -144,12 +271,12 @@ }, { "inputs": [], - "name": "STETH", + "name": "getUnderlyingAmount", "outputs": [ { - "internalType": "contract IStETH", + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "stateMutability": "view", @@ -157,12 +284,12 @@ }, { "inputs": [], - "name": "WETH_ADDRESS", + "name": "growthRatePerSecond", "outputs": [ { - "internalType": "address", + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "stateMutability": "view", @@ -170,12 +297,12 @@ }, { "inputs": [], - "name": "WSTETH_ADDRESS", + "name": "isCapped", "outputs": [ { - "internalType": "address", + "internalType": "bool", "name": "", - "type": "address" + "type": "bool" } ], "stateMutability": "view", @@ -184,12 +311,55 @@ { "inputs": [ { - "internalType": "address", - "name": "asset", - "type": "address" + "internalType": "uint256", + "name": "_annualGrowthRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_snapshotInterval", + "type": "uint256" } ], - "name": "getPrice", + "name": "setGrowthRate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_snapshotMaxExchangeRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_snapshotTimestamp", + "type": "uint256" + } + ], + "name": "setSnapshot", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_snapshotGap", + "type": "uint256" + } + ], + "name": "setSnapshotGap", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "snapshotGap", "outputs": [ { "internalType": "uint256", @@ -201,103 +371,298 @@ "type": "function" }, { - "inputs": [ + "inputs": [], + "name": "snapshotInterval", + "outputs": [ { - "internalType": "address", - "name": "_logic", - "type": "address" - }, + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "snapshotMaxExchangeRate", + "outputs": [ { - "internalType": "address", - "name": "admin_", - "type": "address" - }, + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "snapshotTimestamp", + "outputs": [ { - "internalType": "bytes", - "name": "_data", - "type": "bytes" + "internalType": "uint256", + "name": "", + "type": "uint256" } ], - "stateMutability": "payable", - "type": "constructor" + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "updateSnapshot", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" } ], - "transactionHash": "0xe5f6eb1f53fb632519eb85e168454e1357d3ebbda0536e2d3b06dcff44f8932a", + "transactionHash": "0xc754a3f4ace60a3e17d891031bd3ce01f9c78bff53cdacd9731eacb7dbe0e617", "receipt": { "to": null, - "from": "0x1bb5A9f786a6BA418E8059a877689486A14497a2", - "contractAddress": "0xd082B50b3EeB012605598bB45Fc2Be853b9AFEEf", - "transactionIndex": 99, - "gasUsed": "622245", - "logsBloom": "0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000800000000000000000000000000000400000000000000800000000000000000000000000040000000000000000000000000000000000080000000000020000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000800", - "blockHash": "0x1695e78f240fbd2c3cb51fcbf602bba30a2ab326aaaa1d4d0a82445b88e992db", - "transactionHash": "0xe5f6eb1f53fb632519eb85e168454e1357d3ebbda0536e2d3b06dcff44f8932a", - "logs": [ - { - "transactionIndex": 99, - "blockNumber": 19276211, - "transactionHash": "0xe5f6eb1f53fb632519eb85e168454e1357d3ebbda0536e2d3b06dcff44f8932a", - "address": "0xd082B50b3EeB012605598bB45Fc2Be853b9AFEEf", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x00000000000000000000000024d3d52332834dde93692d9ede4679fe920d2afc" - ], - "data": "0x", - "logIndex": 181, - "blockHash": "0x1695e78f240fbd2c3cb51fcbf602bba30a2ab326aaaa1d4d0a82445b88e992db" - }, - { - "transactionIndex": 99, - "blockNumber": 19276211, - "transactionHash": "0xe5f6eb1f53fb632519eb85e168454e1357d3ebbda0536e2d3b06dcff44f8932a", - "address": "0xd082B50b3EeB012605598bB45Fc2Be853b9AFEEf", - "topics": ["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000567e4cc5e085d09f66f836fa8279f38b4e5866b9", - "logIndex": 182, - "blockHash": "0x1695e78f240fbd2c3cb51fcbf602bba30a2ab326aaaa1d4d0a82445b88e992db" - } - ], - "blockNumber": 19276211, - "cumulativeGasUsed": "7726843", + "from": "0x63c72cf38D2C35278e2F18A4FE79225A66dFA942", + "contractAddress": "0x6ecf38558B0D1fFc6Ea28bEC6BD39F9F0Fdd6631", + "transactionIndex": 12, + "gasUsed": "860706", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x8c2bf18cbebada8218c5ac61c71fcf2c817b873b8bcda33927f6849f5419c7a7", + "transactionHash": "0xc754a3f4ace60a3e17d891031bd3ce01f9c78bff53cdacd9731eacb7dbe0e617", + "logs": [], + "blockNumber": 22815690, + "cumulativeGasUsed": "4267405", "status": 1, "byzantium": true }, - "args": ["0x24D3D52332834ddE93692D9ede4679FE920d2afC", "0x567e4cc5e085d09f66f836fa8279f38b4e5866b9", "0x"], - "numDeployments": 1, - "solcInputHash": "0e89febeebc7444140de8e67c9067d2c", - "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_logic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"implementation_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \\\"admin cannot fallback to proxy target\\\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\",\"kind\":\"dev\",\"methods\":{\"admin()\":{\"details\":\"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\"},\"constructor\":{\"details\":\"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\"},\"implementation()\":{\"details\":\"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\"},\"upgradeTo(address)\":{\"details\":\"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\"},\"upgradeToAndCall(address,bytes)\":{\"details\":\"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol\":\"OptimizedTransparentUpgradeableProxy\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x93b4e21c931252739a1ec13ea31d3d35a5c068be3163ccab83e4d70c40355f03\",\"license\":\"MIT\"},\"solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializating the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256(\\\"eip1967.proxy.implementation\\\")) - 1));\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n\",\"keccak256\":\"0x6309f9f39dc6f4f45a24f296543867aa358e32946cd6b2874627a996d606b3a0\",\"license\":\"MIT\"},\"solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967Upgrade {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view virtual returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Emitted when the beacon is upgraded.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(Address.isContract(IBeacon(newBeacon).implementation()), \\\"ERC1967: beacon implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(\\n address newBeacon,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x17668652127feebed0ce8d9431ef95ccc8c4292f03e3b8cf06c6ca16af396633\",\"license\":\"MIT\"},\"solc_0.8/openzeppelin/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internall call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overriden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xd5d1fd16e9faff7fcb3a52e02a8d49156f42a38a03f07b5f1810c21c2149a8ab\",\"license\":\"MIT\"},\"solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"solc_0.8/openzeppelin/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n }\\n}\\n\",\"keccak256\":\"0x3777e696b62134e6177440dbe6e6601c0c156a443f57167194b67e75527439de\",\"license\":\"MIT\"},\"solc_0.8/openzeppelin/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/StorageSlot.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xfe1b7a9aa2a530a9e705b220e26cd584e2fbdc9602a3a1066032b12816b46aca\",\"license\":\"MIT\"},\"solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/transparent/TransparentUpgradeableProxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../openzeppelin/proxy/ERC1967/ERC1967Proxy.sol\\\";\\n\\n/**\\n * @dev This contract implements a proxy that is upgradeable by an admin.\\n *\\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\\n * clashing], which can potentially be used in an attack, this contract uses the\\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\\n * things that go hand in hand:\\n *\\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\\n * that call matches one of the admin functions exposed by the proxy itself.\\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\\n * \\\"admin cannot fallback to proxy target\\\".\\n *\\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\\n * the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due\\n * to sudden errors when trying to call a function from the proxy implementation.\\n *\\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\\n */\\ncontract OptimizedTransparentUpgradeableProxy is ERC1967Proxy {\\n address internal immutable _ADMIN;\\n\\n /**\\n * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\\n * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\\n */\\n constructor(\\n address _logic,\\n address admin_,\\n bytes memory _data\\n ) payable ERC1967Proxy(_logic, _data) {\\n assert(_ADMIN_SLOT == bytes32(uint256(keccak256(\\\"eip1967.proxy.admin\\\")) - 1));\\n _ADMIN = admin_;\\n\\n // still store it to work with EIP-1967\\n bytes32 slot = _ADMIN_SLOT;\\n // solhint-disable-next-line no-inline-assembly\\n assembly {\\n sstore(slot, admin_)\\n }\\n emit AdminChanged(address(0), admin_);\\n }\\n\\n /**\\n * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\\n */\\n modifier ifAdmin() {\\n if (msg.sender == _getAdmin()) {\\n _;\\n } else {\\n _fallback();\\n }\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n */\\n function admin() external ifAdmin returns (address admin_) {\\n admin_ = _getAdmin();\\n }\\n\\n /**\\n * @dev Returns the current implementation.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\\n */\\n function implementation() external ifAdmin returns (address implementation_) {\\n implementation_ = _implementation();\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\\n */\\n function upgradeTo(address newImplementation) external ifAdmin {\\n _upgradeToAndCall(newImplementation, bytes(\\\"\\\"), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\\n * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\\n * proxied contract.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\\n */\\n function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {\\n _upgradeToAndCall(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _admin() internal view virtual returns (address) {\\n return _getAdmin();\\n }\\n\\n /**\\n * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.\\n */\\n function _beforeFallback() internal virtual override {\\n require(msg.sender != _getAdmin(), \\\"TransparentUpgradeableProxy: admin cannot fallback to proxy target\\\");\\n super._beforeFallback();\\n }\\n\\n function _getAdmin() internal view virtual override returns (address) {\\n return _ADMIN;\\n }\\n}\\n\",\"keccak256\":\"0xa30117644e27fa5b49e162aae2f62b36c1aca02f801b8c594d46e2024963a534\",\"license\":\"MIT\"}},\"version\":1}", - "bytecode": "0x60a060405260405162000f5f38038062000f5f83398101604081905262000026916200044a565b82816200005560017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd6200052a565b60008051602062000f188339815191521462000075576200007562000550565b62000083828260006200013c565b50620000b3905060017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61046200052a565b60008051602062000ef883398151915214620000d357620000d362000550565b6001600160a01b038216608081905260008051602062000ef88339815191528381556040805160008152602081019390935290917f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a150505050620005b9565b620001478362000179565b600082511180620001555750805b156200017457620001728383620001bb60201b620002a91760201c565b505b505050565b6200018481620001ea565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060620001e3838360405180606001604052806027815260200162000f3860279139620002b2565b9392505050565b62000200816200039860201b620002d51760201c565b620002685760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806200029160008051602062000f1883398151915260001b620003a760201b620002411760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606001600160a01b0384163b6200031c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016200025f565b600080856001600160a01b03168560405162000339919062000566565b600060405180830381855af49150503d806000811462000376576040519150601f19603f3d011682016040523d82523d6000602084013e6200037b565b606091505b5090925090506200038e828286620003aa565b9695505050505050565b6001600160a01b03163b151590565b90565b60608315620003bb575081620001e3565b825115620003cc5782518084602001fd5b8160405162461bcd60e51b81526004016200025f919062000584565b80516001600160a01b03811681146200040057600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620004385781810151838201526020016200041e565b83811115620001725750506000910152565b6000806000606084860312156200046057600080fd5b6200046b84620003e8565b92506200047b60208501620003e8565b60408501519092506001600160401b03808211156200049957600080fd5b818601915086601f830112620004ae57600080fd5b815181811115620004c357620004c362000405565b604051601f8201601f19908116603f01168101908382118183101715620004ee57620004ee62000405565b816040528281528960208487010111156200050857600080fd5b6200051b8360208301602088016200041b565b80955050505050509250925092565b6000828210156200054b57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b600082516200057a8184602087016200041b565b9190910192915050565b6020815260008251806020840152620005a58160408501602087016200041b565b601f01601f19169190910160400192915050565b608051610900620005f86000396000818161011201528181610176015281816102060152818161025e01528181610287015261030901526109006000f3fe6080604052600436106100435760003560e01c80633659cfe61461005a5780634f1ef2861461007a5780635c60da1b1461008d578063f851a440146100cb57610052565b36610052576100506100e0565b005b6100506100e0565b34801561006657600080fd5b5061005061007536600461076c565b6100fa565b610050610088366004610787565b61015e565b34801561009957600080fd5b506100a26101ec565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100d757600080fd5b506100a2610244565b6100e86102f1565b6100f86100f36103e2565b610422565b565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614156101565761015381604051806020016040528060008152506000610446565b50565b6101536100e0565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614156101e4576101df8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610446915050565b505050565b6101df6100e0565b60003373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161415610239576102346103e2565b905090565b6102416100e0565b90565b60003373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016141561023957507f000000000000000000000000000000000000000000000000000000000000000090565b60606102ce83836040518060600160405280602781526020016108a460279139610471565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614156100f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b60006102347f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b3660008037600080366000845af43d6000803e808015610441573d6000f35b3d6000fd5b61044f83610599565b60008251118061045c5750805b156101df5761046b83836102a9565b50505050565b606073ffffffffffffffffffffffffffffffffffffffff84163b610517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e7472616374000000000000000000000000000000000000000000000000000060648201526084016103d9565b6000808573ffffffffffffffffffffffffffffffffffffffff168560405161053f9190610836565b600060405180830381855af49150503d806000811461057a576040519150601f19603f3d011682016040523d82523d6000602084013e61057f565b606091505b509150915061058f8282866105e6565b9695505050505050565b6105a281610639565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606083156105f55750816102ce565b8251156106055782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d99190610852565b73ffffffffffffffffffffffffffffffffffffffff81163b6106dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103d9565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461076757600080fd5b919050565b60006020828403121561077e57600080fd5b6102ce82610743565b60008060006040848603121561079c57600080fd5b6107a584610743565b9250602084013567ffffffffffffffff808211156107c257600080fd5b818601915086601f8301126107d657600080fd5b8135818111156107e557600080fd5b8760208285010111156107f757600080fd5b6020830194508093505050509250925092565b60005b8381101561082557818101518382015260200161080d565b8381111561046b5750506000910152565b6000825161084881846020870161080a565b9190910192915050565b602081526000825180602084015261087181604085016020870161080a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206f70214c51cdd41c05ba0ffeb72b309ca3c8be178fd6e73c12162330799984f364736f6c634300080a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564", - "deployedBytecode": "0x6080604052600436106100435760003560e01c80633659cfe61461005a5780634f1ef2861461007a5780635c60da1b1461008d578063f851a440146100cb57610052565b36610052576100506100e0565b005b6100506100e0565b34801561006657600080fd5b5061005061007536600461076c565b6100fa565b610050610088366004610787565b61015e565b34801561009957600080fd5b506100a26101ec565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100d757600080fd5b506100a2610244565b6100e86102f1565b6100f86100f36103e2565b610422565b565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614156101565761015381604051806020016040528060008152506000610446565b50565b6101536100e0565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614156101e4576101df8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610446915050565b505050565b6101df6100e0565b60003373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161415610239576102346103e2565b905090565b6102416100e0565b90565b60003373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016141561023957507f000000000000000000000000000000000000000000000000000000000000000090565b60606102ce83836040518060600160405280602781526020016108a460279139610471565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614156100f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b60006102347f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b3660008037600080366000845af43d6000803e808015610441573d6000f35b3d6000fd5b61044f83610599565b60008251118061045c5750805b156101df5761046b83836102a9565b50505050565b606073ffffffffffffffffffffffffffffffffffffffff84163b610517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e7472616374000000000000000000000000000000000000000000000000000060648201526084016103d9565b6000808573ffffffffffffffffffffffffffffffffffffffff168560405161053f9190610836565b600060405180830381855af49150503d806000811461057a576040519150601f19603f3d011682016040523d82523d6000602084013e61057f565b606091505b509150915061058f8282866105e6565b9695505050505050565b6105a281610639565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606083156105f55750816102ce565b8251156106055782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d99190610852565b73ffffffffffffffffffffffffffffffffffffffff81163b6106dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103d9565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461076757600080fd5b919050565b60006020828403121561077e57600080fd5b6102ce82610743565b60008060006040848603121561079c57600080fd5b6107a584610743565b9250602084013567ffffffffffffffff808211156107c257600080fd5b818601915086601f8301126107d657600080fd5b8135818111156107e557600080fd5b8760208285010111156107f757600080fd5b6020830194508093505050509250925092565b60005b8381101561082557818101518382015260200161080d565b8381111561046b5750506000910152565b6000825161084881846020870161080a565b9190910192915050565b602081526000825180602084015261087181604085016020870161080a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206f70214c51cdd41c05ba0ffeb72b309ca3c8be178fd6e73c12162330799984f364736f6c634300080a0033", - "implementation": "0x24D3D52332834ddE93692D9ede4679FE920d2afC", + "args": [ + "0xae7ab96520de3a18e5e111b5eaab095312d7fe84", + "0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0", + "0xae7ab96520de3a18e5e111b5eaab095312d7fe84", + "0xd2ce3fb018805ef92b8C5976cb31F84b4E295F94", + "67000000000000000", + 2592000, + "1213468274408913381", + 1751267891, + "0x230058da2D23eb8836EC5DB7037ef7250c56E25E", + "6637568880406786" + ], + "numDeployments": 2, + "solcInputHash": "46c846e585260eef9ba6b1c48d9e2bf9", + "metadata": "{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"stETH\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"wstETH\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"underlyingToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resilientOracle\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"annualGrowthRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotInterval\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSnapshotMaxExchangeRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSnapshotTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"accessControlManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotGap\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidGrowthRate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialSnapshot\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSnapshotMaxExchangeRate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"calledContract\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"methodSignature\",\"type\":\"string\"}],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldGrowthRatePerSecond\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newGrowthRatePerSecond\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldSnapshotInterval\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSnapshotInterval\",\"type\":\"uint256\"}],\"name\":\"GrowthRateUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldSnapshotGap\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newSnapshotGap\",\"type\":\"uint256\"}],\"name\":\"SnapshotGapUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maxExchangeRate\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"SnapshotUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ACCESS_CONTROL_MANAGER\",\"outputs\":[{\"internalType\":\"contract IAccessControlManagerV8\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CORRELATED_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RESILIENT_ORACLE\",\"outputs\":[{\"internalType\":\"contract ResilientOracleInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"STETH\",\"outputs\":[{\"internalType\":\"contract IStETH\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UNDERLYING_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaxAllowedExchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUnderlyingAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"growthRatePerSecond\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isCapped\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_annualGrowthRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotInterval\",\"type\":\"uint256\"}],\"name\":\"setGrowthRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_snapshotMaxExchangeRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotTimestamp\",\"type\":\"uint256\"}],\"name\":\"setSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_snapshotGap\",\"type\":\"uint256\"}],\"name\":\"setSnapshotGap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotGap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotInterval\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotMaxExchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Venus\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"The underlyingToken must be correlated so that 1 underlyingToken is equal to 1 stETH, because getUnderlyingAmount() implicitly assumes that\"},\"getMaxAllowedExchangeRate()\":{\"returns\":{\"_0\":\"maxExchangeRate Maximum allowed exchange rate\"}},\"getPrice(address)\":{\"custom:error\":\"InvalidTokenAddress error is thrown if the token address is invalid\",\"params\":{\"asset\":\"Address of the token\"},\"returns\":{\"_0\":\"price The price of the token in scaled decimal places. It can be capped to a maximum value taking into account the growth rate\"}},\"getUnderlyingAmount()\":{\"returns\":{\"_0\":\"amount Amount of underlyingToken\"}},\"isCapped()\":{\"returns\":{\"_0\":\"isCapped Boolean indicating if the price is capped\"}},\"setGrowthRate(uint256,uint256)\":{\"custom:error\":\"InvalidGrowthRate error is thrown if the growth rate is invalid\",\"custom:event\":\"Emits GrowthRateUpdated event on successful update of the growth rate\",\"params\":{\"_annualGrowthRate\":\"The annual growth rate to set\",\"_snapshotInterval\":\"The snapshot interval to set\"}},\"setSnapshot(uint256,uint256)\":{\"custom:event\":\"Emits SnapshotUpdated event on successful update of the snapshot\",\"params\":{\"_snapshotMaxExchangeRate\":\"The exchange rate to set\",\"_snapshotTimestamp\":\"The timestamp to set\"}},\"setSnapshotGap(uint256)\":{\"custom:event\":\"Emits SnapshotGapUpdated event on successful update of the snapshot gap\",\"params\":{\"_snapshotGap\":\"The snapshot gap to set\"}},\"updateSnapshot()\":{\"custom:error\":\"InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero\",\"custom:event\":\"Emits SnapshotUpdated event on successful update of the snapshot\"}},\"title\":\"WstETHOracleV2\",\"version\":1},\"userdoc\":{\"errors\":{\"InvalidGrowthRate()\":[{\"notice\":\"Thrown if the growth rate is invalid\"}],\"InvalidInitialSnapshot()\":[{\"notice\":\"Thrown if the initial snapshot is invalid\"}],\"InvalidSnapshotMaxExchangeRate()\":[{\"notice\":\"Thrown if the max snapshot exchange rate is invalid\"}],\"InvalidTokenAddress()\":[{\"notice\":\"Thrown if the token address is invalid\"}],\"Unauthorized(address,address,string)\":[{\"notice\":\"@notice Thrown when the action is prohibited by AccessControlManager\"}],\"ZeroAddressNotAllowed()\":[{\"notice\":\"Thrown if the supplied address is a zero address where it is not allowed\"}]},\"events\":{\"GrowthRateUpdated(uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted when the growth rate is updated\"},\"SnapshotGapUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the snapshot gap is updated\"},\"SnapshotUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the snapshot is updated\"}},\"kind\":\"user\",\"methods\":{\"ACCESS_CONTROL_MANAGER()\":{\"notice\":\"Address of the AccessControlManager contract\"},\"CORRELATED_TOKEN()\":{\"notice\":\"Address of the correlated token\"},\"RESILIENT_ORACLE()\":{\"notice\":\"Address of Resilient Oracle\"},\"STETH()\":{\"notice\":\"Address of stETH\"},\"UNDERLYING_TOKEN()\":{\"notice\":\"Address of the underlying token\"},\"constructor\":{\"notice\":\"Constructor for the implementation contract.\"},\"getMaxAllowedExchangeRate()\":{\"notice\":\"Gets the maximum allowed exchange rate for token\"},\"getPrice(address)\":{\"notice\":\"Fetches the price of the token\"},\"getUnderlyingAmount()\":{\"notice\":\"Gets the amount of underlyingToken for 1 wstETH, assuming that 1 underlyingToken is equivalent to 1 stETH\"},\"isCapped()\":{\"notice\":\"Returns if the price is capped\"},\"setGrowthRate(uint256,uint256)\":{\"notice\":\"Sets the growth rate and snapshot interval\"},\"setSnapshot(uint256,uint256)\":{\"notice\":\"Directly sets the snapshot exchange rate and timestamp\"},\"setSnapshotGap(uint256)\":{\"notice\":\"Sets the snapshot gap\"},\"snapshotGap()\":{\"notice\":\"Gap to add when updating the snapshot\"},\"snapshotInterval()\":{\"notice\":\"Snapshot update interval\"},\"snapshotMaxExchangeRate()\":{\"notice\":\"Last stored snapshot maximum exchange rate\"},\"snapshotTimestamp()\":{\"notice\":\"Last stored snapshot timestamp\"},\"updateSnapshot()\":{\"notice\":\"Updates the snapshot price and timestamp\"}},\"notice\":\"This oracle fetches the price of wstETH\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracles/WstETHOracleV2.sol\":\"WstETHOracleV2\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev External interface of AccessControl declared to support ERC165 detection.\\n */\\ninterface IAccessControl {\\n /**\\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\\n *\\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\\n * {RoleAdminChanged} not being emitted signaling this.\\n *\\n * _Available since v3.1._\\n */\\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\\n\\n /**\\n * @dev Emitted when `account` is granted `role`.\\n *\\n * `sender` is the account that originated the contract call, an admin role\\n * bearer except when using {AccessControl-_setupRole}.\\n */\\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Emitted when `account` is revoked `role`.\\n *\\n * `sender` is the account that originated the contract call:\\n * - if using `revokeRole`, it is the admin role bearer\\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\\n */\\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Returns `true` if `account` has been granted `role`.\\n */\\n function hasRole(bytes32 role, address account) external view returns (bool);\\n\\n /**\\n * @dev Returns the admin role that controls `role`. See {grantRole} and\\n * {revokeRole}.\\n *\\n * To change a role's admin, use {AccessControl-_setRoleAdmin}.\\n */\\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function grantRole(bytes32 role, address account) external;\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function revokeRole(bytes32 role, address account) external;\\n\\n /**\\n * @dev Revokes `role` from the calling account.\\n *\\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n * purpose is to provide a mechanism for accounts to lose their privileges\\n * if they are compromised (such as when a trusted device is misplaced).\\n *\\n * If the calling account had been granted `role`, emits a {RoleRevoked}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must be `account`.\\n */\\n function renounceRole(bytes32 role, address account) external;\\n}\\n\",\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n *\\n * _Available since v4.1._\\n */\\ninterface IERC20Metadata is IERC20 {\\n /**\\n * @dev Returns the name of the token.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the symbol of the token.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the decimals places of the token.\\n */\\n function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\"},\"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\nimport \\\"@openzeppelin/contracts/access/IAccessControl.sol\\\";\\n\\n/**\\n * @title IAccessControlManagerV8\\n * @author Venus\\n * @notice Interface implemented by the `AccessControlManagerV8` contract.\\n */\\ninterface IAccessControlManagerV8 is IAccessControl {\\n function giveCallPermission(address contractAddress, string calldata functionSig, address accountToPermit) external;\\n\\n function revokeCallPermission(\\n address contractAddress,\\n string calldata functionSig,\\n address accountToRevoke\\n ) external;\\n\\n function isAllowedToCall(address account, string calldata functionSig) external view returns (bool);\\n\\n function hasPermission(\\n address account,\\n address contractAddress,\\n string calldata functionSig\\n ) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xaa29b098440d0b3a131c5ecdf25ce548790c1b5ac7bf9b5c0264b6af6f7a1e0b\",\"license\":\"BSD-3-Clause\"},\"@venusprotocol/solidity-utilities/contracts/constants.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\n/// @dev Base unit for computations, usually used in scaling (multiplications, divisions)\\nuint256 constant EXP_SCALE = 1e18;\\n\\n/// @dev A unit (literal one) in EXP_SCALE, usually used in additions/subtractions\\nuint256 constant MANTISSA_ONE = EXP_SCALE;\\n\\n/// @dev The approximate number of seconds per year\\nuint256 constant SECONDS_PER_YEAR = 31_536_000;\\n\",\"keccak256\":\"0x14de93ead464da249af31bea0e3bcfb62ec693bea3475fb4d90f055ac81dc5eb\",\"license\":\"BSD-3-Clause\"},\"@venusprotocol/solidity-utilities/contracts/validators.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.25;\\n\\n/// @notice Thrown if the supplied address is a zero address where it is not allowed\\nerror ZeroAddressNotAllowed();\\n\\n/// @notice Thrown if the supplied value is 0 where it is not allowed\\nerror ZeroValueNotAllowed();\\n\\n/// @notice Checks if the provided address is nonzero, reverts otherwise\\n/// @param address_ Address to check\\n/// @custom:error ZeroAddressNotAllowed is thrown if the provided address is a zero address\\nfunction ensureNonzeroAddress(address address_) pure {\\n if (address_ == address(0)) {\\n revert ZeroAddressNotAllowed();\\n }\\n}\\n\\n/// @notice Checks if the provided value is nonzero, reverts otherwise\\n/// @param value_ Value to check\\n/// @custom:error ZeroValueNotAllowed is thrown if the provided value is 0\\nfunction ensureNonzeroValue(uint256 value_) pure {\\n if (value_ == 0) {\\n revert ZeroValueNotAllowed();\\n }\\n}\\n\",\"keccak256\":\"0xdb88e14d50dd21889ca3329d755673d022c47e8da005b6a545c7f69c2c4b7b86\",\"license\":\"BSD-3-Clause\"},\"contracts/interfaces/ICappedOracle.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.25;\\n\\ninterface ICappedOracle {\\n function updateSnapshot() external;\\n}\\n\",\"keccak256\":\"0xad239e65b5e92b3486418c5ccca120247702251f9724cd96657c3cfdc7fedc31\",\"license\":\"BSD-3-Clause\"},\"contracts/interfaces/IStETH.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\ninterface IStETH {\\n function getPooledEthByShares(uint256 _sharesAmount) external view returns (uint256);\\n function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0x9e7ee12d63a84081722469719e046d6791a087f33ab40804ff1ff40ab859d4d3\",\"license\":\"BSD-3-Clause\"},\"contracts/interfaces/OracleInterface.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\ninterface OracleInterface {\\n function getPrice(address asset) external view returns (uint256);\\n}\\n\\ninterface ResilientOracleInterface is OracleInterface {\\n function updatePrice(address vToken) external;\\n\\n function updateAssetPrice(address asset) external;\\n\\n function getUnderlyingPrice(address vToken) external view returns (uint256);\\n}\\n\\ninterface BoundValidatorInterface {\\n function validatePriceWithAnchorPrice(\\n address asset,\\n uint256 reporterPrice,\\n uint256 anchorPrice\\n ) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\"},\"contracts/oracles/WstETHOracleV2.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.25;\\n\\nimport { IStETH } from \\\"../interfaces/IStETH.sol\\\";\\nimport { CorrelatedTokenOracle } from \\\"./common/CorrelatedTokenOracle.sol\\\";\\nimport { EXP_SCALE } from \\\"@venusprotocol/solidity-utilities/contracts/constants.sol\\\";\\nimport { ensureNonzeroAddress } from \\\"@venusprotocol/solidity-utilities/contracts/validators.sol\\\";\\n\\n/**\\n * @title WstETHOracleV2\\n * @author Venus\\n * @notice This oracle fetches the price of wstETH\\n */\\ncontract WstETHOracleV2 is CorrelatedTokenOracle {\\n /// @notice Address of stETH\\n IStETH public immutable STETH;\\n\\n /// @notice Constructor for the implementation contract.\\n /// @dev The underlyingToken must be correlated so that 1 underlyingToken is equal to 1 stETH, because\\n /// getUnderlyingAmount() implicitly assumes that\\n constructor(\\n address stETH,\\n address wstETH,\\n address underlyingToken,\\n address resilientOracle,\\n uint256 annualGrowthRate,\\n uint256 _snapshotInterval,\\n uint256 initialSnapshotMaxExchangeRate,\\n uint256 initialSnapshotTimestamp,\\n address accessControlManager,\\n uint256 _snapshotGap\\n )\\n CorrelatedTokenOracle(\\n wstETH,\\n underlyingToken,\\n resilientOracle,\\n annualGrowthRate,\\n _snapshotInterval,\\n initialSnapshotMaxExchangeRate,\\n initialSnapshotTimestamp,\\n accessControlManager,\\n _snapshotGap\\n )\\n {\\n ensureNonzeroAddress(stETH);\\n STETH = IStETH(stETH);\\n }\\n\\n /**\\n * @notice Gets the amount of underlyingToken for 1 wstETH, assuming that 1 underlyingToken is equivalent to 1 stETH\\n * @return amount Amount of underlyingToken\\n */\\n function getUnderlyingAmount() public view override returns (uint256) {\\n return STETH.getPooledEthByShares(EXP_SCALE);\\n }\\n}\\n\",\"keccak256\":\"0xafa20a802d782e7dbc09351314e7ced484e3685b10a4b7d4e2bf10e57b534806\",\"license\":\"BSD-3-Clause\"},\"contracts/oracles/common/CorrelatedTokenOracle.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.25;\\n\\nimport { OracleInterface, ResilientOracleInterface } from \\\"../../interfaces/OracleInterface.sol\\\";\\nimport { ensureNonzeroAddress } from \\\"@venusprotocol/solidity-utilities/contracts/validators.sol\\\";\\nimport { SECONDS_PER_YEAR } from \\\"@venusprotocol/solidity-utilities/contracts/constants.sol\\\";\\nimport { IERC20Metadata } from \\\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\\\";\\nimport { ICappedOracle } from \\\"../../interfaces/ICappedOracle.sol\\\";\\nimport { IAccessControlManagerV8 } from \\\"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol\\\";\\n\\n/**\\n * @title CorrelatedTokenOracle\\n * @notice This oracle fetches the price of a token that is correlated to another token.\\n */\\nabstract contract CorrelatedTokenOracle is OracleInterface, ICappedOracle {\\n /// @notice Address of the correlated token\\n address public immutable CORRELATED_TOKEN;\\n\\n /// @notice Address of the underlying token\\n address public immutable UNDERLYING_TOKEN;\\n\\n /// @notice Address of Resilient Oracle\\n ResilientOracleInterface public immutable RESILIENT_ORACLE;\\n\\n /// @notice Address of the AccessControlManager contract\\n IAccessControlManagerV8 public immutable ACCESS_CONTROL_MANAGER;\\n\\n //// @notice Growth rate percentage in seconds. Ex: 1e18 is 100%\\n uint256 public growthRatePerSecond;\\n\\n /// @notice Snapshot update interval\\n uint256 public snapshotInterval;\\n\\n /// @notice Last stored snapshot maximum exchange rate\\n uint256 public snapshotMaxExchangeRate;\\n\\n /// @notice Last stored snapshot timestamp\\n uint256 public snapshotTimestamp;\\n\\n /// @notice Gap to add when updating the snapshot\\n uint256 public snapshotGap;\\n\\n /// @notice Emitted when the snapshot is updated\\n event SnapshotUpdated(uint256 indexed maxExchangeRate, uint256 indexed timestamp);\\n\\n /// @notice Emitted when the growth rate is updated\\n event GrowthRateUpdated(\\n uint256 indexed oldGrowthRatePerSecond,\\n uint256 indexed newGrowthRatePerSecond,\\n uint256 indexed oldSnapshotInterval,\\n uint256 newSnapshotInterval\\n );\\n\\n /// @notice Emitted when the snapshot gap is updated\\n event SnapshotGapUpdated(uint256 indexed oldSnapshotGap, uint256 indexed newSnapshotGap);\\n\\n /// @notice Thrown if the token address is invalid\\n error InvalidTokenAddress();\\n\\n /// @notice Thrown if the growth rate is invalid\\n error InvalidGrowthRate();\\n\\n /// @notice Thrown if the initial snapshot is invalid\\n error InvalidInitialSnapshot();\\n\\n /// @notice Thrown if the max snapshot exchange rate is invalid\\n error InvalidSnapshotMaxExchangeRate();\\n\\n /// @notice @notice Thrown when the action is prohibited by AccessControlManager\\n error Unauthorized(address sender, address calledContract, string methodSignature);\\n\\n /**\\n * @notice Constructor for the implementation contract.\\n * @custom:error InvalidGrowthRate error is thrown if the growth rate is invalid\\n * @custom:error InvalidInitialSnapshot error is thrown if the initial snapshot values are invalid\\n */\\n constructor(\\n address _correlatedToken,\\n address _underlyingToken,\\n address _resilientOracle,\\n uint256 _annualGrowthRate,\\n uint256 _snapshotInterval,\\n uint256 _initialSnapshotMaxExchangeRate,\\n uint256 _initialSnapshotTimestamp,\\n address _accessControlManager,\\n uint256 _snapshotGap\\n ) {\\n growthRatePerSecond = _annualGrowthRate / SECONDS_PER_YEAR;\\n\\n if ((growthRatePerSecond == 0 && _snapshotInterval > 0) || (growthRatePerSecond > 0 && _snapshotInterval == 0))\\n revert InvalidGrowthRate();\\n\\n if ((_initialSnapshotMaxExchangeRate == 0 || _initialSnapshotTimestamp == 0) && _snapshotInterval > 0) {\\n revert InvalidInitialSnapshot();\\n }\\n\\n ensureNonzeroAddress(_correlatedToken);\\n ensureNonzeroAddress(_underlyingToken);\\n ensureNonzeroAddress(_resilientOracle);\\n ensureNonzeroAddress(_accessControlManager);\\n\\n CORRELATED_TOKEN = _correlatedToken;\\n UNDERLYING_TOKEN = _underlyingToken;\\n RESILIENT_ORACLE = ResilientOracleInterface(_resilientOracle);\\n snapshotInterval = _snapshotInterval;\\n\\n snapshotMaxExchangeRate = _initialSnapshotMaxExchangeRate;\\n snapshotTimestamp = _initialSnapshotTimestamp;\\n snapshotGap = _snapshotGap;\\n\\n ACCESS_CONTROL_MANAGER = IAccessControlManagerV8(_accessControlManager);\\n }\\n\\n /**\\n * @notice Directly sets the snapshot exchange rate and timestamp\\n * @param _snapshotMaxExchangeRate The exchange rate to set\\n * @param _snapshotTimestamp The timestamp to set\\n * @custom:event Emits SnapshotUpdated event on successful update of the snapshot\\n */\\n function setSnapshot(uint256 _snapshotMaxExchangeRate, uint256 _snapshotTimestamp) external {\\n _checkAccessAllowed(\\\"setSnapshot(uint256,uint256)\\\");\\n\\n snapshotMaxExchangeRate = _snapshotMaxExchangeRate;\\n snapshotTimestamp = _snapshotTimestamp;\\n\\n emit SnapshotUpdated(snapshotMaxExchangeRate, snapshotTimestamp);\\n }\\n\\n /**\\n * @notice Sets the growth rate and snapshot interval\\n * @param _annualGrowthRate The annual growth rate to set\\n * @param _snapshotInterval The snapshot interval to set\\n * @custom:error InvalidGrowthRate error is thrown if the growth rate is invalid\\n * @custom:event Emits GrowthRateUpdated event on successful update of the growth rate\\n */\\n function setGrowthRate(uint256 _annualGrowthRate, uint256 _snapshotInterval) external {\\n _checkAccessAllowed(\\\"setGrowthRate(uint256,uint256)\\\");\\n uint256 oldGrowthRatePerSecond = growthRatePerSecond;\\n\\n growthRatePerSecond = _annualGrowthRate / SECONDS_PER_YEAR;\\n\\n if ((growthRatePerSecond == 0 && _snapshotInterval > 0) || (growthRatePerSecond > 0 && _snapshotInterval == 0))\\n revert InvalidGrowthRate();\\n\\n emit GrowthRateUpdated(oldGrowthRatePerSecond, growthRatePerSecond, snapshotInterval, _snapshotInterval);\\n\\n snapshotInterval = _snapshotInterval;\\n }\\n\\n /**\\n * @notice Sets the snapshot gap\\n * @param _snapshotGap The snapshot gap to set\\n * @custom:event Emits SnapshotGapUpdated event on successful update of the snapshot gap\\n */\\n function setSnapshotGap(uint256 _snapshotGap) external {\\n _checkAccessAllowed(\\\"setSnapshotGap(uint256)\\\");\\n\\n emit SnapshotGapUpdated(snapshotGap, _snapshotGap);\\n\\n snapshotGap = _snapshotGap;\\n }\\n\\n /**\\n * @notice Returns if the price is capped\\n * @return isCapped Boolean indicating if the price is capped\\n */\\n function isCapped() external view virtual returns (bool) {\\n if (snapshotInterval == 0) {\\n return false;\\n }\\n\\n uint256 maxAllowedExchangeRate = getMaxAllowedExchangeRate();\\n if (maxAllowedExchangeRate == 0) {\\n return false;\\n }\\n\\n uint256 exchangeRate = getUnderlyingAmount();\\n\\n return exchangeRate > maxAllowedExchangeRate;\\n }\\n\\n /**\\n * @notice Updates the snapshot price and timestamp\\n * @custom:event Emits SnapshotUpdated event on successful update of the snapshot\\n * @custom:error InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero\\n */\\n function updateSnapshot() public override {\\n if (block.timestamp - snapshotTimestamp < snapshotInterval || snapshotInterval == 0) return;\\n\\n uint256 exchangeRate = getUnderlyingAmount();\\n uint256 maxAllowedExchangeRate = getMaxAllowedExchangeRate();\\n\\n snapshotMaxExchangeRate =\\n (exchangeRate > maxAllowedExchangeRate ? maxAllowedExchangeRate : exchangeRate) +\\n snapshotGap;\\n snapshotTimestamp = block.timestamp;\\n\\n if (snapshotMaxExchangeRate == 0) revert InvalidSnapshotMaxExchangeRate();\\n\\n RESILIENT_ORACLE.updateAssetPrice(UNDERLYING_TOKEN);\\n emit SnapshotUpdated(snapshotMaxExchangeRate, snapshotTimestamp);\\n }\\n\\n /**\\n * @notice Fetches the price of the token\\n * @param asset Address of the token\\n * @return price The price of the token in scaled decimal places. It can be capped\\n * to a maximum value taking into account the growth rate\\n * @custom:error InvalidTokenAddress error is thrown if the token address is invalid\\n */\\n function getPrice(address asset) public view override returns (uint256) {\\n if (asset != CORRELATED_TOKEN) revert InvalidTokenAddress();\\n\\n uint256 exchangeRate = getUnderlyingAmount();\\n\\n if (snapshotInterval == 0) {\\n return _calculatePrice(exchangeRate);\\n }\\n\\n uint256 maxAllowedExchangeRate = getMaxAllowedExchangeRate();\\n\\n uint256 finalExchangeRate = (exchangeRate > maxAllowedExchangeRate && maxAllowedExchangeRate != 0)\\n ? maxAllowedExchangeRate\\n : exchangeRate;\\n\\n return _calculatePrice(finalExchangeRate);\\n }\\n\\n /**\\n * @notice Gets the maximum allowed exchange rate for token\\n * @return maxExchangeRate Maximum allowed exchange rate\\n */\\n function getMaxAllowedExchangeRate() public view returns (uint256) {\\n uint256 timeElapsed = block.timestamp - snapshotTimestamp;\\n uint256 maxExchangeRate = snapshotMaxExchangeRate +\\n (snapshotMaxExchangeRate * growthRatePerSecond * timeElapsed) /\\n 1e18;\\n return maxExchangeRate;\\n }\\n\\n /**\\n * @notice Gets the underlying amount for correlated token\\n * @return underlyingAmount Amount of underlying token\\n */\\n function getUnderlyingAmount() public view virtual returns (uint256);\\n\\n /**\\n * @notice Fetches price of the token based on an underlying exchange rate\\n * @param exchangeRate The underlying exchange rate to use\\n * @return price The price of the token in scaled decimal places\\n */\\n function _calculatePrice(uint256 exchangeRate) internal view returns (uint256) {\\n uint256 underlyingUSDPrice = RESILIENT_ORACLE.getPrice(UNDERLYING_TOKEN);\\n\\n IERC20Metadata token = IERC20Metadata(CORRELATED_TOKEN);\\n uint256 decimals = token.decimals();\\n\\n return (exchangeRate * underlyingUSDPrice) / (10 ** decimals);\\n }\\n\\n /**\\n * @notice Reverts if the call is not allowed by AccessControlManager\\n * @param signature Method signature\\n * @custom:error Unauthorized error is thrown if the call is not allowed\\n */\\n function _checkAccessAllowed(string memory signature) internal view {\\n bool isAllowedToCall = ACCESS_CONTROL_MANAGER.isAllowedToCall(msg.sender, signature);\\n\\n if (!isAllowedToCall) {\\n revert Unauthorized(msg.sender, address(this), signature);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x808b444fa4d1d440dc43de290f1eb59a64646ce9085028b286fa30346305872e\",\"license\":\"BSD-3-Clause\"}},\"version\":1}", + "bytecode": "0x610120604052348015610010575f80fd5b50604051610f0c380380610f0c83398101604081905261002f9161017d565b8888888888888888886100466301e133808761020e565b5f81905515801561005657505f85115b8061006a57505f805411801561006a575084155b15610088576040516353b7e64560e11b815260040160405180910390fd5b831580610093575082155b801561009e57505f85115b156100bc5760405163b8a5589b60e01b815260040160405180910390fd5b6100c589610138565b6100ce88610138565b6100d787610138565b6100e082610138565b6001600160a01b0398891660805296881660a05294871660c052600192909255600255600355506004919091551660e05261011a8a610138565b5050506001600160a01b03909616610100525061022d945050505050565b6001600160a01b03811661015f576040516342bcdf7f60e11b815260040160405180910390fd5b50565b80516001600160a01b0381168114610178575f80fd5b919050565b5f805f805f805f805f806101408b8d031215610197575f80fd5b6101a08b610162565b99506101ae60208c01610162565b98506101bc60408c01610162565b97506101ca60608c01610162565b965060808b0151955060a08b0151945060c08b0151935060e08b015192506101f56101008c01610162565b91506101208b015190509295989b9194979a5092959850565b5f8261022857634e487b7160e01b5f52601260045260245ffd5b500490565b60805160a05160c05160e05161010051610c6a6102a25f395f818161028b01526106c001525f818161019101526108f301525f818161024c0152818161059c01526107c601525f818161013601528181610574015261079a01525f8181610209015281816102b001526108340152610c6a5ff3fe608060405234801561000f575f80fd5b5060043610610111575f3560e01c8063692404261161009e578063a4edcd4c1161006e578063a4edcd4c14610247578063abb856131461026e578063ac5a693e14610276578063bdf13af21461027e578063e00bfe5014610286575f80fd5b806369240426146101fc57806369818a35146102045780637fc4e4a01461022b5780639c43eb541461023e575f80fd5b806345be2dc7116100e457806345be2dc71461018c5780635213f9c8146101b3578063596efe6f146101c8578063643d813d146101d1578063671528d4146101e4575f80fd5b806307d0413c1461011557806329db1be6146101315780634169d2451461017057806341976e0914610179575b5f80fd5b61011e60015481565b6040519081526020015b60405180910390f35b6101587f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610128565b61011e60045481565b61011e61018736600461099c565b6102ad565b6101587f000000000000000000000000000000000000000000000000000000000000000081565b6101c66101c13660046109c2565b61035e565b005b61011e60025481565b6101c66101df3660046109d9565b6103cf565b6101ec6104a5565b6040519015158152602001610128565b6101c66104e0565b6101587f000000000000000000000000000000000000000000000000000000000000000081565b6101c66102393660046109d9565b610629565b61011e60035481565b6101587f000000000000000000000000000000000000000000000000000000000000000081565b61011e6106a1565b61011e5f5481565b61011e610736565b6101587f000000000000000000000000000000000000000000000000000000000000000081565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161461030057604051630f58058360e11b815260040160405180910390fd5b5f6103096106a1565b90506001545f036103245761031d81610783565b9392505050565b5f61032d610736565b90505f818311801561033e57508115155b610348578261034a565b815b905061035581610783565b95945050505050565b61039c6040518060400160405280601781526020017f736574536e617073686f744761702875696e74323536290000000000000000008152506108da565b6004546040518291907feb3716d3f8388c182853c1dc98b18931f3a600bbab31f2ff48631f6412e4997f905f90a3600455565b61040d6040518060400160405280601e81526020017f73657447726f777468526174652875696e743235362c75696e743235362900008152506108da565b5f5461041d6301e1338084610a0d565b5f81905515801561042d57505f82115b8061044157505f8054118015610441575081155b1561045f576040516353b7e64560e11b815260040160405180910390fd5b6001545f54827fa65cbeb0e28a8803a912daac67c472c160aa01e2c988755fa424f290321de6088560405161049691815260200190565b60405180910390a45060015550565b5f6001545f036104b457505f90565b5f6104bd610736565b9050805f036104cd575f91505090565b5f6104d66106a1565b9190911192915050565b6001546003546104f09042610a2c565b10806104fc5750600154155b1561050357565b5f61050c6106a1565b90505f610517610736565b9050600454818311610529578261052b565b815b6105359190610a45565b6002819055426003555f0361055d57604051635f18388760e01b815260040160405180910390fd5b60405163b62cad6960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063b62cad69906024015f604051808303815f87803b1580156105dd575f80fd5b505af11580156105ef573d5f803e3d5ffd5b505050506003546002547f2c8c8fcb8c77a0ca21dcc3ab8fc0ade761557e76b1240cb40ebbef9fcee00f7d60405160405180910390a35050565b6106676040518060400160405280601c81526020017f736574536e617073686f742875696e743235362c75696e7432353629000000008152506108da565b60028290556003819055604051819083907f2c8c8fcb8c77a0ca21dcc3ab8fc0ade761557e76b1240cb40ebbef9fcee00f7d905f90a35050565b604051630f451f7160e31b8152670de0b6b3a764000060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637a28fb8890602401602060405180830381865afa15801561070d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107319190610a58565b905090565b5f80600354426107469190610a2c565b90505f670de0b6b3a7640000825f546002546107629190610a6f565b61076c9190610a6f565b6107769190610a0d565b60025461031d9190610a45565b6040516341976e0960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f9182917f000000000000000000000000000000000000000000000000000000000000000016906341976e0990602401602060405180830381865afa15801561080b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061082f9190610a58565b90505f7f000000000000000000000000000000000000000000000000000000000000000090505f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610892573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108b69190610a86565b60ff1690506108c681600a610b86565b6108d08487610a6f565b6103559190610a0d565b6040516318c5e8ab60e01b81525f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906318c5e8ab9061092a9033908690600401610bbf565b602060405180830381865afa158015610945573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109699190610bea565b90508061099857333083604051634a3fa29360e01b815260040161098f93929190610c09565b60405180910390fd5b5050565b5f602082840312156109ac575f80fd5b81356001600160a01b038116811461031d575f80fd5b5f602082840312156109d2575f80fd5b5035919050565b5f80604083850312156109ea575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b5f82610a2757634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115610a3f57610a3f6109f9565b92915050565b80820180821115610a3f57610a3f6109f9565b5f60208284031215610a68575f80fd5b5051919050565b8082028115828204841417610a3f57610a3f6109f9565b5f60208284031215610a96575f80fd5b815160ff8116811461031d575f80fd5b600181815b80851115610ae057815f1904821115610ac657610ac66109f9565b80851615610ad357918102915b93841c9390800290610aab565b509250929050565b5f82610af657506001610a3f565b81610b0257505f610a3f565b8160018114610b185760028114610b2257610b3e565b6001915050610a3f565b60ff841115610b3357610b336109f9565b50506001821b610a3f565b5060208310610133831016604e8410600b8410161715610b61575081810a610a3f565b610b6b8383610aa6565b805f1904821115610b7e57610b7e6109f9565b029392505050565b5f61031d8383610ae8565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6001600160a01b03831681526040602082018190525f90610be290830184610b91565b949350505050565b5f60208284031215610bfa575f80fd5b8151801515811461031d575f80fd5b6001600160a01b038481168252831660208201526060604082018190525f9061035590830184610b9156fea264697066735822122022c446218af0aec324997e3d37ad189048cd4415dfdbeae289215ff36289569b64736f6c63430008190033", + "deployedBytecode": "0x608060405234801561000f575f80fd5b5060043610610111575f3560e01c8063692404261161009e578063a4edcd4c1161006e578063a4edcd4c14610247578063abb856131461026e578063ac5a693e14610276578063bdf13af21461027e578063e00bfe5014610286575f80fd5b806369240426146101fc57806369818a35146102045780637fc4e4a01461022b5780639c43eb541461023e575f80fd5b806345be2dc7116100e457806345be2dc71461018c5780635213f9c8146101b3578063596efe6f146101c8578063643d813d146101d1578063671528d4146101e4575f80fd5b806307d0413c1461011557806329db1be6146101315780634169d2451461017057806341976e0914610179575b5f80fd5b61011e60015481565b6040519081526020015b60405180910390f35b6101587f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610128565b61011e60045481565b61011e61018736600461099c565b6102ad565b6101587f000000000000000000000000000000000000000000000000000000000000000081565b6101c66101c13660046109c2565b61035e565b005b61011e60025481565b6101c66101df3660046109d9565b6103cf565b6101ec6104a5565b6040519015158152602001610128565b6101c66104e0565b6101587f000000000000000000000000000000000000000000000000000000000000000081565b6101c66102393660046109d9565b610629565b61011e60035481565b6101587f000000000000000000000000000000000000000000000000000000000000000081565b61011e6106a1565b61011e5f5481565b61011e610736565b6101587f000000000000000000000000000000000000000000000000000000000000000081565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161461030057604051630f58058360e11b815260040160405180910390fd5b5f6103096106a1565b90506001545f036103245761031d81610783565b9392505050565b5f61032d610736565b90505f818311801561033e57508115155b610348578261034a565b815b905061035581610783565b95945050505050565b61039c6040518060400160405280601781526020017f736574536e617073686f744761702875696e74323536290000000000000000008152506108da565b6004546040518291907feb3716d3f8388c182853c1dc98b18931f3a600bbab31f2ff48631f6412e4997f905f90a3600455565b61040d6040518060400160405280601e81526020017f73657447726f777468526174652875696e743235362c75696e743235362900008152506108da565b5f5461041d6301e1338084610a0d565b5f81905515801561042d57505f82115b8061044157505f8054118015610441575081155b1561045f576040516353b7e64560e11b815260040160405180910390fd5b6001545f54827fa65cbeb0e28a8803a912daac67c472c160aa01e2c988755fa424f290321de6088560405161049691815260200190565b60405180910390a45060015550565b5f6001545f036104b457505f90565b5f6104bd610736565b9050805f036104cd575f91505090565b5f6104d66106a1565b9190911192915050565b6001546003546104f09042610a2c565b10806104fc5750600154155b1561050357565b5f61050c6106a1565b90505f610517610736565b9050600454818311610529578261052b565b815b6105359190610a45565b6002819055426003555f0361055d57604051635f18388760e01b815260040160405180910390fd5b60405163b62cad6960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063b62cad69906024015f604051808303815f87803b1580156105dd575f80fd5b505af11580156105ef573d5f803e3d5ffd5b505050506003546002547f2c8c8fcb8c77a0ca21dcc3ab8fc0ade761557e76b1240cb40ebbef9fcee00f7d60405160405180910390a35050565b6106676040518060400160405280601c81526020017f736574536e617073686f742875696e743235362c75696e7432353629000000008152506108da565b60028290556003819055604051819083907f2c8c8fcb8c77a0ca21dcc3ab8fc0ade761557e76b1240cb40ebbef9fcee00f7d905f90a35050565b604051630f451f7160e31b8152670de0b6b3a764000060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637a28fb8890602401602060405180830381865afa15801561070d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107319190610a58565b905090565b5f80600354426107469190610a2c565b90505f670de0b6b3a7640000825f546002546107629190610a6f565b61076c9190610a6f565b6107769190610a0d565b60025461031d9190610a45565b6040516341976e0960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f9182917f000000000000000000000000000000000000000000000000000000000000000016906341976e0990602401602060405180830381865afa15801561080b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061082f9190610a58565b90505f7f000000000000000000000000000000000000000000000000000000000000000090505f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610892573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108b69190610a86565b60ff1690506108c681600a610b86565b6108d08487610a6f565b6103559190610a0d565b6040516318c5e8ab60e01b81525f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906318c5e8ab9061092a9033908690600401610bbf565b602060405180830381865afa158015610945573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109699190610bea565b90508061099857333083604051634a3fa29360e01b815260040161098f93929190610c09565b60405180910390fd5b5050565b5f602082840312156109ac575f80fd5b81356001600160a01b038116811461031d575f80fd5b5f602082840312156109d2575f80fd5b5035919050565b5f80604083850312156109ea575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b5f82610a2757634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115610a3f57610a3f6109f9565b92915050565b80820180821115610a3f57610a3f6109f9565b5f60208284031215610a68575f80fd5b5051919050565b8082028115828204841417610a3f57610a3f6109f9565b5f60208284031215610a96575f80fd5b815160ff8116811461031d575f80fd5b600181815b80851115610ae057815f1904821115610ac657610ac66109f9565b80851615610ad357918102915b93841c9390800290610aab565b509250929050565b5f82610af657506001610a3f565b81610b0257505f610a3f565b8160018114610b185760028114610b2257610b3e565b6001915050610a3f565b60ff841115610b3357610b336109f9565b50506001821b610a3f565b5060208310610133831016604e8410600b8410161715610b61575081810a610a3f565b610b6b8383610aa6565b805f1904821115610b7e57610b7e6109f9565b029392505050565b5f61031d8383610ae8565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6001600160a01b03831681526040602082018190525f90610be290830184610b91565b949350505050565b5f60208284031215610bfa575f80fd5b8151801515811461031d575f80fd5b6001600160a01b038481168252831660208201526060604082018190525f9061035590830184610b9156fea264697066735822122022c446218af0aec324997e3d37ad189048cd4415dfdbeae289215ff36289569b64736f6c63430008190033", "devdoc": { - "details": "This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \"admin cannot fallback to proxy target\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.", + "author": "Venus", "kind": "dev", "methods": { - "admin()": { - "details": "Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`" - }, "constructor": { - "details": "Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}." + "details": "The underlyingToken must be correlated so that 1 underlyingToken is equal to 1 stETH, because getUnderlyingAmount() implicitly assumes that" }, - "implementation()": { - "details": "Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`" + "getMaxAllowedExchangeRate()": { + "returns": { + "_0": "maxExchangeRate Maximum allowed exchange rate" + } }, - "upgradeTo(address)": { - "details": "Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}." + "getPrice(address)": { + "custom:error": "InvalidTokenAddress error is thrown if the token address is invalid", + "params": { + "asset": "Address of the token" + }, + "returns": { + "_0": "price The price of the token in scaled decimal places. It can be capped to a maximum value taking into account the growth rate" + } + }, + "getUnderlyingAmount()": { + "returns": { + "_0": "amount Amount of underlyingToken" + } }, - "upgradeToAndCall(address,bytes)": { - "details": "Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}." + "isCapped()": { + "returns": { + "_0": "isCapped Boolean indicating if the price is capped" + } + }, + "setGrowthRate(uint256,uint256)": { + "custom:error": "InvalidGrowthRate error is thrown if the growth rate is invalid", + "custom:event": "Emits GrowthRateUpdated event on successful update of the growth rate", + "params": { + "_annualGrowthRate": "The annual growth rate to set", + "_snapshotInterval": "The snapshot interval to set" + } + }, + "setSnapshot(uint256,uint256)": { + "custom:event": "Emits SnapshotUpdated event on successful update of the snapshot", + "params": { + "_snapshotMaxExchangeRate": "The exchange rate to set", + "_snapshotTimestamp": "The timestamp to set" + } + }, + "setSnapshotGap(uint256)": { + "custom:event": "Emits SnapshotGapUpdated event on successful update of the snapshot gap", + "params": { + "_snapshotGap": "The snapshot gap to set" + } + }, + "updateSnapshot()": { + "custom:error": "InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero", + "custom:event": "Emits SnapshotUpdated event on successful update of the snapshot" } }, + "title": "WstETHOracleV2", "version": 1 }, "userdoc": { + "errors": { + "InvalidGrowthRate()": [ + { + "notice": "Thrown if the growth rate is invalid" + } + ], + "InvalidInitialSnapshot()": [ + { + "notice": "Thrown if the initial snapshot is invalid" + } + ], + "InvalidSnapshotMaxExchangeRate()": [ + { + "notice": "Thrown if the max snapshot exchange rate is invalid" + } + ], + "InvalidTokenAddress()": [ + { + "notice": "Thrown if the token address is invalid" + } + ], + "Unauthorized(address,address,string)": [ + { + "notice": "@notice Thrown when the action is prohibited by AccessControlManager" + } + ], + "ZeroAddressNotAllowed()": [ + { + "notice": "Thrown if the supplied address is a zero address where it is not allowed" + } + ] + }, + "events": { + "GrowthRateUpdated(uint256,uint256,uint256,uint256)": { + "notice": "Emitted when the growth rate is updated" + }, + "SnapshotGapUpdated(uint256,uint256)": { + "notice": "Emitted when the snapshot gap is updated" + }, + "SnapshotUpdated(uint256,uint256)": { + "notice": "Emitted when the snapshot is updated" + } + }, "kind": "user", - "methods": {}, + "methods": { + "ACCESS_CONTROL_MANAGER()": { + "notice": "Address of the AccessControlManager contract" + }, + "CORRELATED_TOKEN()": { + "notice": "Address of the correlated token" + }, + "RESILIENT_ORACLE()": { + "notice": "Address of Resilient Oracle" + }, + "STETH()": { + "notice": "Address of stETH" + }, + "UNDERLYING_TOKEN()": { + "notice": "Address of the underlying token" + }, + "constructor": { + "notice": "Constructor for the implementation contract." + }, + "getMaxAllowedExchangeRate()": { + "notice": "Gets the maximum allowed exchange rate for token" + }, + "getPrice(address)": { + "notice": "Fetches the price of the token" + }, + "getUnderlyingAmount()": { + "notice": "Gets the amount of underlyingToken for 1 wstETH, assuming that 1 underlyingToken is equivalent to 1 stETH" + }, + "isCapped()": { + "notice": "Returns if the price is capped" + }, + "setGrowthRate(uint256,uint256)": { + "notice": "Sets the growth rate and snapshot interval" + }, + "setSnapshot(uint256,uint256)": { + "notice": "Directly sets the snapshot exchange rate and timestamp" + }, + "setSnapshotGap(uint256)": { + "notice": "Sets the snapshot gap" + }, + "snapshotGap()": { + "notice": "Gap to add when updating the snapshot" + }, + "snapshotInterval()": { + "notice": "Snapshot update interval" + }, + "snapshotMaxExchangeRate()": { + "notice": "Last stored snapshot maximum exchange rate" + }, + "snapshotTimestamp()": { + "notice": "Last stored snapshot timestamp" + }, + "updateSnapshot()": { + "notice": "Updates the snapshot price and timestamp" + } + }, + "notice": "This oracle fetches the price of wstETH", "version": 1 }, "storageLayout": { - "storage": [], - "types": null + "storage": [ + { + "astId": 451, + "contract": "contracts/oracles/WstETHOracleV2.sol:WstETHOracleV2", + "label": "growthRatePerSecond", + "offset": 0, + "slot": "0", + "type": "t_uint256" + }, + { + "astId": 454, + "contract": "contracts/oracles/WstETHOracleV2.sol:WstETHOracleV2", + "label": "snapshotInterval", + "offset": 0, + "slot": "1", + "type": "t_uint256" + }, + { + "astId": 457, + "contract": "contracts/oracles/WstETHOracleV2.sol:WstETHOracleV2", + "label": "snapshotMaxExchangeRate", + "offset": 0, + "slot": "2", + "type": "t_uint256" + }, + { + "astId": 460, + "contract": "contracts/oracles/WstETHOracleV2.sol:WstETHOracleV2", + "label": "snapshotTimestamp", + "offset": 0, + "slot": "3", + "type": "t_uint256" + }, + { + "astId": 463, + "contract": "contracts/oracles/WstETHOracleV2.sol:WstETHOracleV2", + "label": "snapshotGap", + "offset": 0, + "slot": "4", + "type": "t_uint256" + } + ], + "types": { + "t_uint256": { + "encoding": "inplace", + "label": "uint256", + "numberOfBytes": "32" + } + } } } diff --git a/deployments/ethereum/solcInputs/46c846e585260eef9ba6b1c48d9e2bf9.json b/deployments/ethereum/solcInputs/46c846e585260eef9ba6b1c48d9e2bf9.json new file mode 100644 index 00000000..506046f2 --- /dev/null +++ b/deployments/ethereum/solcInputs/46c846e585260eef9ba6b1c48d9e2bf9.json @@ -0,0 +1,67 @@ +{ + "language": "Solidity", + "sources": { + "@openzeppelin/contracts/access/IAccessControl.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev External interface of AccessControl declared to support ERC165 detection.\n */\ninterface IAccessControl {\n /**\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n *\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n * {RoleAdminChanged} not being emitted signaling this.\n *\n * _Available since v3.1._\n */\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\n\n /**\n * @dev Emitted when `account` is granted `role`.\n *\n * `sender` is the account that originated the contract call, an admin role\n * bearer except when using {AccessControl-_setupRole}.\n */\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\n\n /**\n * @dev Emitted when `account` is revoked `role`.\n *\n * `sender` is the account that originated the contract call:\n * - if using `revokeRole`, it is the admin role bearer\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\n */\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\n\n /**\n * @dev Returns `true` if `account` has been granted `role`.\n */\n function hasRole(bytes32 role, address account) external view returns (bool);\n\n /**\n * @dev Returns the admin role that controls `role`. See {grantRole} and\n * {revokeRole}.\n *\n * To change a role's admin, use {AccessControl-_setRoleAdmin}.\n */\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\n\n /**\n * @dev Grants `role` to `account`.\n *\n * If `account` had not been already granted `role`, emits a {RoleGranted}\n * event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function grantRole(bytes32 role, address account) external;\n\n /**\n * @dev Revokes `role` from `account`.\n *\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function revokeRole(bytes32 role, address account) external;\n\n /**\n * @dev Revokes `role` from the calling account.\n *\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\n * purpose is to provide a mechanism for accounts to lose their privileges\n * if they are compromised (such as when a trusted device is misplaced).\n *\n * If the calling account had been granted `role`, emits a {RoleRevoked}\n * event.\n *\n * Requirements:\n *\n * - the caller must be `account`.\n */\n function renounceRole(bytes32 role, address account) external;\n}\n" + }, + "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC20.sol\";\n\n/**\n * @dev Interface for the optional metadata functions from the ERC20 standard.\n *\n * _Available since v4.1._\n */\ninterface IERC20Metadata is IERC20 {\n /**\n * @dev Returns the name of the token.\n */\n function name() external view returns (string memory);\n\n /**\n * @dev Returns the symbol of the token.\n */\n function symbol() external view returns (string memory);\n\n /**\n * @dev Returns the decimals places of the token.\n */\n function decimals() external view returns (uint8);\n}\n" + }, + "@openzeppelin/contracts/token/ERC20/IERC20.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n /**\n * @dev Returns the amount of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address to, uint256 amount) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 amount) external returns (bool);\n\n /**\n * @dev Moves `amount` tokens from `from` to `to` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\n}\n" + }, + "@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\nimport \"@openzeppelin/contracts/access/IAccessControl.sol\";\n\n/**\n * @title IAccessControlManagerV8\n * @author Venus\n * @notice Interface implemented by the `AccessControlManagerV8` contract.\n */\ninterface IAccessControlManagerV8 is IAccessControl {\n function giveCallPermission(address contractAddress, string calldata functionSig, address accountToPermit) external;\n\n function revokeCallPermission(\n address contractAddress,\n string calldata functionSig,\n address accountToRevoke\n ) external;\n\n function isAllowedToCall(address account, string calldata functionSig) external view returns (bool);\n\n function hasPermission(\n address account,\n address contractAddress,\n string calldata functionSig\n ) external view returns (bool);\n}\n" + }, + "@venusprotocol/solidity-utilities/contracts/constants.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\n/// @dev Base unit for computations, usually used in scaling (multiplications, divisions)\nuint256 constant EXP_SCALE = 1e18;\n\n/// @dev A unit (literal one) in EXP_SCALE, usually used in additions/subtractions\nuint256 constant MANTISSA_ONE = EXP_SCALE;\n\n/// @dev The approximate number of seconds per year\nuint256 constant SECONDS_PER_YEAR = 31_536_000;\n" + }, + "@venusprotocol/solidity-utilities/contracts/validators.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\n/// @notice Thrown if the supplied address is a zero address where it is not allowed\nerror ZeroAddressNotAllowed();\n\n/// @notice Thrown if the supplied value is 0 where it is not allowed\nerror ZeroValueNotAllowed();\n\n/// @notice Checks if the provided address is nonzero, reverts otherwise\n/// @param address_ Address to check\n/// @custom:error ZeroAddressNotAllowed is thrown if the provided address is a zero address\nfunction ensureNonzeroAddress(address address_) pure {\n if (address_ == address(0)) {\n revert ZeroAddressNotAllowed();\n }\n}\n\n/// @notice Checks if the provided value is nonzero, reverts otherwise\n/// @param value_ Value to check\n/// @custom:error ZeroValueNotAllowed is thrown if the provided value is 0\nfunction ensureNonzeroValue(uint256 value_) pure {\n if (value_ == 0) {\n revert ZeroValueNotAllowed();\n }\n}\n" + }, + "contracts/interfaces/ICappedOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface ICappedOracle {\n function updateSnapshot() external;\n}\n" + }, + "contracts/interfaces/IStETH.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\ninterface IStETH {\n function getPooledEthByShares(uint256 _sharesAmount) external view returns (uint256);\n function decimals() external view returns (uint8);\n}\n" + }, + "contracts/interfaces/OracleInterface.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\ninterface OracleInterface {\n function getPrice(address asset) external view returns (uint256);\n}\n\ninterface ResilientOracleInterface is OracleInterface {\n function updatePrice(address vToken) external;\n\n function updateAssetPrice(address asset) external;\n\n function getUnderlyingPrice(address vToken) external view returns (uint256);\n}\n\ninterface BoundValidatorInterface {\n function validatePriceWithAnchorPrice(\n address asset,\n uint256 reporterPrice,\n uint256 anchorPrice\n ) external view returns (bool);\n}\n" + }, + "contracts/oracles/common/CorrelatedTokenOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { OracleInterface, ResilientOracleInterface } from \"../../interfaces/OracleInterface.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\nimport { SECONDS_PER_YEAR } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\nimport { IERC20Metadata } from \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\";\nimport { ICappedOracle } from \"../../interfaces/ICappedOracle.sol\";\nimport { IAccessControlManagerV8 } from \"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol\";\n\n/**\n * @title CorrelatedTokenOracle\n * @notice This oracle fetches the price of a token that is correlated to another token.\n */\nabstract contract CorrelatedTokenOracle is OracleInterface, ICappedOracle {\n /// @notice Address of the correlated token\n address public immutable CORRELATED_TOKEN;\n\n /// @notice Address of the underlying token\n address public immutable UNDERLYING_TOKEN;\n\n /// @notice Address of Resilient Oracle\n ResilientOracleInterface public immutable RESILIENT_ORACLE;\n\n /// @notice Address of the AccessControlManager contract\n IAccessControlManagerV8 public immutable ACCESS_CONTROL_MANAGER;\n\n //// @notice Growth rate percentage in seconds. Ex: 1e18 is 100%\n uint256 public growthRatePerSecond;\n\n /// @notice Snapshot update interval\n uint256 public snapshotInterval;\n\n /// @notice Last stored snapshot maximum exchange rate\n uint256 public snapshotMaxExchangeRate;\n\n /// @notice Last stored snapshot timestamp\n uint256 public snapshotTimestamp;\n\n /// @notice Gap to add when updating the snapshot\n uint256 public snapshotGap;\n\n /// @notice Emitted when the snapshot is updated\n event SnapshotUpdated(uint256 indexed maxExchangeRate, uint256 indexed timestamp);\n\n /// @notice Emitted when the growth rate is updated\n event GrowthRateUpdated(\n uint256 indexed oldGrowthRatePerSecond,\n uint256 indexed newGrowthRatePerSecond,\n uint256 indexed oldSnapshotInterval,\n uint256 newSnapshotInterval\n );\n\n /// @notice Emitted when the snapshot gap is updated\n event SnapshotGapUpdated(uint256 indexed oldSnapshotGap, uint256 indexed newSnapshotGap);\n\n /// @notice Thrown if the token address is invalid\n error InvalidTokenAddress();\n\n /// @notice Thrown if the growth rate is invalid\n error InvalidGrowthRate();\n\n /// @notice Thrown if the initial snapshot is invalid\n error InvalidInitialSnapshot();\n\n /// @notice Thrown if the max snapshot exchange rate is invalid\n error InvalidSnapshotMaxExchangeRate();\n\n /// @notice @notice Thrown when the action is prohibited by AccessControlManager\n error Unauthorized(address sender, address calledContract, string methodSignature);\n\n /**\n * @notice Constructor for the implementation contract.\n * @custom:error InvalidGrowthRate error is thrown if the growth rate is invalid\n * @custom:error InvalidInitialSnapshot error is thrown if the initial snapshot values are invalid\n */\n constructor(\n address _correlatedToken,\n address _underlyingToken,\n address _resilientOracle,\n uint256 _annualGrowthRate,\n uint256 _snapshotInterval,\n uint256 _initialSnapshotMaxExchangeRate,\n uint256 _initialSnapshotTimestamp,\n address _accessControlManager,\n uint256 _snapshotGap\n ) {\n growthRatePerSecond = _annualGrowthRate / SECONDS_PER_YEAR;\n\n if ((growthRatePerSecond == 0 && _snapshotInterval > 0) || (growthRatePerSecond > 0 && _snapshotInterval == 0))\n revert InvalidGrowthRate();\n\n if ((_initialSnapshotMaxExchangeRate == 0 || _initialSnapshotTimestamp == 0) && _snapshotInterval > 0) {\n revert InvalidInitialSnapshot();\n }\n\n ensureNonzeroAddress(_correlatedToken);\n ensureNonzeroAddress(_underlyingToken);\n ensureNonzeroAddress(_resilientOracle);\n ensureNonzeroAddress(_accessControlManager);\n\n CORRELATED_TOKEN = _correlatedToken;\n UNDERLYING_TOKEN = _underlyingToken;\n RESILIENT_ORACLE = ResilientOracleInterface(_resilientOracle);\n snapshotInterval = _snapshotInterval;\n\n snapshotMaxExchangeRate = _initialSnapshotMaxExchangeRate;\n snapshotTimestamp = _initialSnapshotTimestamp;\n snapshotGap = _snapshotGap;\n\n ACCESS_CONTROL_MANAGER = IAccessControlManagerV8(_accessControlManager);\n }\n\n /**\n * @notice Directly sets the snapshot exchange rate and timestamp\n * @param _snapshotMaxExchangeRate The exchange rate to set\n * @param _snapshotTimestamp The timestamp to set\n * @custom:event Emits SnapshotUpdated event on successful update of the snapshot\n */\n function setSnapshot(uint256 _snapshotMaxExchangeRate, uint256 _snapshotTimestamp) external {\n _checkAccessAllowed(\"setSnapshot(uint256,uint256)\");\n\n snapshotMaxExchangeRate = _snapshotMaxExchangeRate;\n snapshotTimestamp = _snapshotTimestamp;\n\n emit SnapshotUpdated(snapshotMaxExchangeRate, snapshotTimestamp);\n }\n\n /**\n * @notice Sets the growth rate and snapshot interval\n * @param _annualGrowthRate The annual growth rate to set\n * @param _snapshotInterval The snapshot interval to set\n * @custom:error InvalidGrowthRate error is thrown if the growth rate is invalid\n * @custom:event Emits GrowthRateUpdated event on successful update of the growth rate\n */\n function setGrowthRate(uint256 _annualGrowthRate, uint256 _snapshotInterval) external {\n _checkAccessAllowed(\"setGrowthRate(uint256,uint256)\");\n uint256 oldGrowthRatePerSecond = growthRatePerSecond;\n\n growthRatePerSecond = _annualGrowthRate / SECONDS_PER_YEAR;\n\n if ((growthRatePerSecond == 0 && _snapshotInterval > 0) || (growthRatePerSecond > 0 && _snapshotInterval == 0))\n revert InvalidGrowthRate();\n\n emit GrowthRateUpdated(oldGrowthRatePerSecond, growthRatePerSecond, snapshotInterval, _snapshotInterval);\n\n snapshotInterval = _snapshotInterval;\n }\n\n /**\n * @notice Sets the snapshot gap\n * @param _snapshotGap The snapshot gap to set\n * @custom:event Emits SnapshotGapUpdated event on successful update of the snapshot gap\n */\n function setSnapshotGap(uint256 _snapshotGap) external {\n _checkAccessAllowed(\"setSnapshotGap(uint256)\");\n\n emit SnapshotGapUpdated(snapshotGap, _snapshotGap);\n\n snapshotGap = _snapshotGap;\n }\n\n /**\n * @notice Returns if the price is capped\n * @return isCapped Boolean indicating if the price is capped\n */\n function isCapped() external view virtual returns (bool) {\n if (snapshotInterval == 0) {\n return false;\n }\n\n uint256 maxAllowedExchangeRate = getMaxAllowedExchangeRate();\n if (maxAllowedExchangeRate == 0) {\n return false;\n }\n\n uint256 exchangeRate = getUnderlyingAmount();\n\n return exchangeRate > maxAllowedExchangeRate;\n }\n\n /**\n * @notice Updates the snapshot price and timestamp\n * @custom:event Emits SnapshotUpdated event on successful update of the snapshot\n * @custom:error InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero\n */\n function updateSnapshot() public override {\n if (block.timestamp - snapshotTimestamp < snapshotInterval || snapshotInterval == 0) return;\n\n uint256 exchangeRate = getUnderlyingAmount();\n uint256 maxAllowedExchangeRate = getMaxAllowedExchangeRate();\n\n snapshotMaxExchangeRate =\n (exchangeRate > maxAllowedExchangeRate ? maxAllowedExchangeRate : exchangeRate) +\n snapshotGap;\n snapshotTimestamp = block.timestamp;\n\n if (snapshotMaxExchangeRate == 0) revert InvalidSnapshotMaxExchangeRate();\n\n RESILIENT_ORACLE.updateAssetPrice(UNDERLYING_TOKEN);\n emit SnapshotUpdated(snapshotMaxExchangeRate, snapshotTimestamp);\n }\n\n /**\n * @notice Fetches the price of the token\n * @param asset Address of the token\n * @return price The price of the token in scaled decimal places. It can be capped\n * to a maximum value taking into account the growth rate\n * @custom:error InvalidTokenAddress error is thrown if the token address is invalid\n */\n function getPrice(address asset) public view override returns (uint256) {\n if (asset != CORRELATED_TOKEN) revert InvalidTokenAddress();\n\n uint256 exchangeRate = getUnderlyingAmount();\n\n if (snapshotInterval == 0) {\n return _calculatePrice(exchangeRate);\n }\n\n uint256 maxAllowedExchangeRate = getMaxAllowedExchangeRate();\n\n uint256 finalExchangeRate = (exchangeRate > maxAllowedExchangeRate && maxAllowedExchangeRate != 0)\n ? maxAllowedExchangeRate\n : exchangeRate;\n\n return _calculatePrice(finalExchangeRate);\n }\n\n /**\n * @notice Gets the maximum allowed exchange rate for token\n * @return maxExchangeRate Maximum allowed exchange rate\n */\n function getMaxAllowedExchangeRate() public view returns (uint256) {\n uint256 timeElapsed = block.timestamp - snapshotTimestamp;\n uint256 maxExchangeRate = snapshotMaxExchangeRate +\n (snapshotMaxExchangeRate * growthRatePerSecond * timeElapsed) /\n 1e18;\n return maxExchangeRate;\n }\n\n /**\n * @notice Gets the underlying amount for correlated token\n * @return underlyingAmount Amount of underlying token\n */\n function getUnderlyingAmount() public view virtual returns (uint256);\n\n /**\n * @notice Fetches price of the token based on an underlying exchange rate\n * @param exchangeRate The underlying exchange rate to use\n * @return price The price of the token in scaled decimal places\n */\n function _calculatePrice(uint256 exchangeRate) internal view returns (uint256) {\n uint256 underlyingUSDPrice = RESILIENT_ORACLE.getPrice(UNDERLYING_TOKEN);\n\n IERC20Metadata token = IERC20Metadata(CORRELATED_TOKEN);\n uint256 decimals = token.decimals();\n\n return (exchangeRate * underlyingUSDPrice) / (10 ** decimals);\n }\n\n /**\n * @notice Reverts if the call is not allowed by AccessControlManager\n * @param signature Method signature\n * @custom:error Unauthorized error is thrown if the call is not allowed\n */\n function _checkAccessAllowed(string memory signature) internal view {\n bool isAllowedToCall = ACCESS_CONTROL_MANAGER.isAllowedToCall(msg.sender, signature);\n\n if (!isAllowedToCall) {\n revert Unauthorized(msg.sender, address(this), signature);\n }\n }\n}\n" + }, + "contracts/oracles/WstETHOracleV2.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { IStETH } from \"../interfaces/IStETH.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\nimport { EXP_SCALE } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\n\n/**\n * @title WstETHOracleV2\n * @author Venus\n * @notice This oracle fetches the price of wstETH\n */\ncontract WstETHOracleV2 is CorrelatedTokenOracle {\n /// @notice Address of stETH\n IStETH public immutable STETH;\n\n /// @notice Constructor for the implementation contract.\n /// @dev The underlyingToken must be correlated so that 1 underlyingToken is equal to 1 stETH, because\n /// getUnderlyingAmount() implicitly assumes that\n constructor(\n address stETH,\n address wstETH,\n address underlyingToken,\n address resilientOracle,\n uint256 annualGrowthRate,\n uint256 _snapshotInterval,\n uint256 initialSnapshotMaxExchangeRate,\n uint256 initialSnapshotTimestamp,\n address accessControlManager,\n uint256 _snapshotGap\n )\n CorrelatedTokenOracle(\n wstETH,\n underlyingToken,\n resilientOracle,\n annualGrowthRate,\n _snapshotInterval,\n initialSnapshotMaxExchangeRate,\n initialSnapshotTimestamp,\n accessControlManager,\n _snapshotGap\n )\n {\n ensureNonzeroAddress(stETH);\n STETH = IStETH(stETH);\n }\n\n /**\n * @notice Gets the amount of underlyingToken for 1 wstETH, assuming that 1 underlyingToken is equivalent to 1 stETH\n * @return amount Amount of underlyingToken\n */\n function getUnderlyingAmount() public view override returns (uint256) {\n return STETH.getPooledEthByShares(EXP_SCALE);\n }\n}\n" + } + }, + "settings": { + "optimizer": { + "enabled": true, + "runs": 200, + "details": { + "yul": true + } + }, + "evmVersion": "cancun", + "outputSelection": { + "*": { + "*": [ + "storageLayout", + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "evm.gasEstimates" + ], + "": ["ast"] + } + }, + "metadata": { + "useLiteralContent": true + } + } +} diff --git a/deployments/ethereum_addresses.json b/deployments/ethereum_addresses.json index dad980bd..d9299998 100644 --- a/deployments/ethereum_addresses.json +++ b/deployments/ethereum_addresses.json @@ -33,12 +33,6 @@ "WeETHAccountantOracle_weETHs": "0x47F7A7f3486b08A019E0c10Af969ADC4B6E415Cd", "WeETHOracle_Equivalence": "0xaB663D4a701229DFF407Eb4B45007921029072e9", "WeETHOracle_NonEquivalence": "0x92469958A4C00101F9F290cc3AC32959Af497EAf", - "WstETHOracle_Equivalence": "0xd8B43165a6cdA057DBd3Fcd4745E88FC475398c5", - "WstETHOracle_Equivalence_Implementation": "0x4e70615332550CE81e12891772eB950411Bb05A2", - "WstETHOracle_Equivalence_Proxy": "0xd8B43165a6cdA057DBd3Fcd4745E88FC475398c5", - "WstETHOracle_NonEquivalence": "0xd082B50b3EeB012605598bB45Fc2Be853b9AFEEf", - "WstETHOracle_NonEquivalence_Implementation": "0x24D3D52332834ddE93692D9ede4679FE920d2afC", - "WstETHOracle_NonEquivalence_Proxy": "0xd082B50b3EeB012605598bB45Fc2Be853b9AFEEf", "eBTCAccountantOracle": "0x04d6096A6F089047C7af6E4644D18fB766B8d4cE", "ezETHOneJumpChainlinkOracle": "0x84FAe9909Fa1F259CB23Fa14FCdd1a35A0FE7EB8", "ezETHOneJumpRedStoneOracle": "0xA6efeF98D9C4E9FF8193f80FbABF92AD92D50500", diff --git a/deployments/sepolia.json b/deployments/sepolia.json index 7e173b71..12f8d8a9 100644 --- a/deployments/sepolia.json +++ b/deployments/sepolia.json @@ -10244,461 +10244,6 @@ } ] }, - "WstETHOracle": { - "address": "0x92E7F73B0d57902fDC453E8aef990EdEe827b0BF", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "beacon", - "type": "address" - } - ], - "name": "BeaconUpgraded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "stateMutability": "payable", - "type": "fallback" - }, - { - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "admin_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "implementation_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "stateMutability": "payable", - "type": "receive" - }, - { - "inputs": [], - "name": "ZeroAddressNotAllowed", - "type": "error" - }, - { - "inputs": [], - "name": "RESILIENT_ORACLE", - "outputs": [ - { - "internalType": "contract OracleInterface", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "STETH", - "outputs": [ - { - "internalType": "contract IStETH", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "WETH_ADDRESS", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "WSTETH_ADDRESS", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - } - ], - "name": "getPrice", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "admin_", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "stateMutability": "payable", - "type": "constructor" - } - ] - }, - "WstETHOracle_Implementation": { - "address": "0xEf0F74FaBC69f32F9b73419726eeFa70F4E8d10F", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "wstETHAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "wETHAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "stETHAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "resilientOracleAddress", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [], - "name": "ZeroAddressNotAllowed", - "type": "error" - }, - { - "inputs": [], - "name": "RESILIENT_ORACLE", - "outputs": [ - { - "internalType": "contract OracleInterface", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "STETH", - "outputs": [ - { - "internalType": "contract IStETH", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "WETH_ADDRESS", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "WSTETH_ADDRESS", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - } - ], - "name": "getPrice", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - } - ] - }, - "WstETHOracle_Proxy": { - "address": "0x92E7F73B0d57902fDC453E8aef990EdEe827b0BF", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "admin_", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "stateMutability": "payable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "beacon", - "type": "address" - } - ], - "name": "BeaconUpgraded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "stateMutability": "payable", - "type": "fallback" - }, - { - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "admin_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "implementation_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "stateMutability": "payable", - "type": "receive" - } - ] - }, "eBTCAccountantOracle": { "address": "0x51Fa73926Cd9456A94221b70428aa94F009a5b81", "abi": [ diff --git a/deployments/sepolia/WstETHOracle.json b/deployments/sepolia/WstETHOracle.json index c3ce4452..316a86c2 100644 --- a/deployments/sepolia/WstETHOracle.json +++ b/deployments/sepolia/WstETHOracle.json @@ -1,36 +1,137 @@ { - "address": "0x92E7F73B0d57902fDC453E8aef990EdEe827b0BF", + "address": "0xA33f06dB4c0DD8E41BA3d2C8917a27e6B9200662", "abi": [ { - "anonymous": false, "inputs": [ { - "indexed": false, "internalType": "address", - "name": "previousAdmin", + "name": "stETH", "type": "address" }, { - "indexed": false, "internalType": "address", - "name": "newAdmin", + "name": "wstETH", + "type": "address" + }, + { + "internalType": "address", + "name": "underlyingToken", + "type": "address" + }, + { + "internalType": "address", + "name": "resilientOracle", + "type": "address" + }, + { + "internalType": "uint256", + "name": "annualGrowthRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_snapshotInterval", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "initialSnapshotMaxExchangeRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "initialSnapshotTimestamp", + "type": "uint256" + }, + { + "internalType": "address", + "name": "accessControlManager", "type": "address" + }, + { + "internalType": "uint256", + "name": "_snapshotGap", + "type": "uint256" } ], - "name": "AdminChanged", - "type": "event" + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "InvalidGrowthRate", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialSnapshot", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidSnapshotMaxExchangeRate", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidTokenAddress", + "type": "error" }, { - "anonymous": false, "inputs": [ { - "indexed": true, "internalType": "address", - "name": "beacon", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "calledContract", "type": "address" + }, + { + "internalType": "string", + "name": "methodSignature", + "type": "string" } ], - "name": "BeaconUpgraded", + "name": "Unauthorized", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroAddressNotAllowed", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "oldGrowthRatePerSecond", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newGrowthRatePerSecond", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "oldSnapshotInterval", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newSnapshotInterval", + "type": "uint256" + } + ], + "name": "GrowthRateUpdated", "type": "event" }, { @@ -38,105 +139,144 @@ "inputs": [ { "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" + "internalType": "uint256", + "name": "oldSnapshotGap", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newSnapshotGap", + "type": "uint256" } ], - "name": "Upgraded", + "name": "SnapshotGapUpdated", "type": "event" }, { - "stateMutability": "payable", - "type": "fallback" + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "maxExchangeRate", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "name": "SnapshotUpdated", + "type": "event" }, { "inputs": [], - "name": "admin", + "name": "ACCESS_CONTROL_MANAGER", "outputs": [ { - "internalType": "address", - "name": "admin_", + "internalType": "contract IAccessControlManagerV8", + "name": "", "type": "address" } ], - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function" }, { "inputs": [], - "name": "implementation", + "name": "CORRELATED_TOKEN", "outputs": [ { "internalType": "address", - "name": "implementation_", + "name": "", "type": "address" } ], - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function" }, { - "inputs": [ + "inputs": [], + "name": "RESILIENT_ORACLE", + "outputs": [ { - "internalType": "address", - "name": "newImplementation", + "internalType": "contract ResilientOracleInterface", + "name": "", "type": "address" } ], - "name": "upgradeTo", - "outputs": [], - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function" }, { - "inputs": [ + "inputs": [], + "name": "STETH", + "outputs": [ { - "internalType": "address", - "name": "newImplementation", + "internalType": "contract IStETH", + "name": "", "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" } ], - "name": "upgradeToAndCall", - "outputs": [], - "stateMutability": "payable", + "stateMutability": "view", "type": "function" }, - { - "stateMutability": "payable", - "type": "receive" - }, { "inputs": [], - "name": "ZeroAddressNotAllowed", - "type": "error" + "name": "UNDERLYING_TOKEN", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" }, { "inputs": [], - "name": "RESILIENT_ORACLE", + "name": "getMaxAllowedExchangeRate", "outputs": [ { - "internalType": "contract OracleInterface", + "internalType": "uint256", "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", "type": "address" } ], + "name": "getPrice", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], "stateMutability": "view", "type": "function" }, { "inputs": [], - "name": "STETH", + "name": "getUnderlyingAmount", "outputs": [ { - "internalType": "contract IStETH", + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "stateMutability": "view", @@ -144,12 +284,12 @@ }, { "inputs": [], - "name": "WETH_ADDRESS", + "name": "growthRatePerSecond", "outputs": [ { - "internalType": "address", + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "stateMutability": "view", @@ -157,12 +297,12 @@ }, { "inputs": [], - "name": "WSTETH_ADDRESS", + "name": "isCapped", "outputs": [ { - "internalType": "address", + "internalType": "bool", "name": "", - "type": "address" + "type": "bool" } ], "stateMutability": "view", @@ -171,12 +311,55 @@ { "inputs": [ { - "internalType": "address", - "name": "asset", - "type": "address" + "internalType": "uint256", + "name": "_annualGrowthRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_snapshotInterval", + "type": "uint256" } ], - "name": "getPrice", + "name": "setGrowthRate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_snapshotMaxExchangeRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_snapshotTimestamp", + "type": "uint256" + } + ], + "name": "setSnapshot", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_snapshotGap", + "type": "uint256" + } + ], + "name": "setSnapshotGap", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "snapshotGap", "outputs": [ { "internalType": "uint256", @@ -188,103 +371,298 @@ "type": "function" }, { - "inputs": [ + "inputs": [], + "name": "snapshotInterval", + "outputs": [ { - "internalType": "address", - "name": "_logic", - "type": "address" - }, + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "snapshotMaxExchangeRate", + "outputs": [ { - "internalType": "address", - "name": "admin_", - "type": "address" - }, + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "snapshotTimestamp", + "outputs": [ { - "internalType": "bytes", - "name": "_data", - "type": "bytes" + "internalType": "uint256", + "name": "", + "type": "uint256" } ], - "stateMutability": "payable", - "type": "constructor" + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "updateSnapshot", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" } ], - "transactionHash": "0x5a3d7e4cddbc9d56d948b48994621658e0c142df816f204c0cee0a7a4e22a624", + "transactionHash": "0x0c5d2f3267fc5853acb9b8d56a9151ddfb9d94302d93fb847aa405ebf43b6f57", "receipt": { "to": null, - "from": "0xFEA1c651A47FE29dB9b1bf3cC1f224d8D9CFF68C", - "contractAddress": "0x92E7F73B0d57902fDC453E8aef990EdEe827b0BF", - "transactionIndex": 87, - "gasUsed": "622245", - "logsBloom": "0x00000000000400000000000000000000400000000000000000000000000000000000000000000000000080000000000000000000000000004000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000040000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000100020000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0xdc07bf1b700baa0db77bdef1863ee8d06c356e199c113bd02cde8b3a7de248df", - "transactionHash": "0x5a3d7e4cddbc9d56d948b48994621658e0c142df816f204c0cee0a7a4e22a624", - "logs": [ - { - "transactionIndex": 87, - "blockNumber": 5113338, - "transactionHash": "0x5a3d7e4cddbc9d56d948b48994621658e0c142df816f204c0cee0a7a4e22a624", - "address": "0x92E7F73B0d57902fDC453E8aef990EdEe827b0BF", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x000000000000000000000000ef0f74fabc69f32f9b73419726eefa70f4e8d10f" - ], - "data": "0x", - "logIndex": 168, - "blockHash": "0xdc07bf1b700baa0db77bdef1863ee8d06c356e199c113bd02cde8b3a7de248df" - }, - { - "transactionIndex": 87, - "blockNumber": 5113338, - "transactionHash": "0x5a3d7e4cddbc9d56d948b48994621658e0c142df816f204c0cee0a7a4e22a624", - "address": "0x92E7F73B0d57902fDC453E8aef990EdEe827b0BF", - "topics": ["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"], - "data": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001435866babd91311b1355cf3af488cca36db68e", - "logIndex": 169, - "blockHash": "0xdc07bf1b700baa0db77bdef1863ee8d06c356e199c113bd02cde8b3a7de248df" - } - ], - "blockNumber": 5113338, - "cumulativeGasUsed": "11407642", + "from": "0x464779C41C5f1Be598853C1F87bCC7087Ea75f28", + "contractAddress": "0xA33f06dB4c0DD8E41BA3d2C8917a27e6B9200662", + "transactionIndex": 146, + "gasUsed": "860646", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0xb61c3e00ef491e523d466d4d6f4865f55359f44e33bd2e63cabaf41d6b9fe1ed", + "transactionHash": "0x0c5d2f3267fc5853acb9b8d56a9151ddfb9d94302d93fb847aa405ebf43b6f57", + "logs": [], + "blockNumber": 8660254, + "cumulativeGasUsed": "14786656", "status": 1, "byzantium": true }, - "args": ["0xEf0F74FaBC69f32F9b73419726eeFa70F4E8d10F", "0x01435866babd91311b1355cf3af488cca36db68e", "0x"], - "numDeployments": 1, - "solcInputHash": "0e89febeebc7444140de8e67c9067d2c", - "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_logic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"implementation_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \\\"admin cannot fallback to proxy target\\\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\",\"kind\":\"dev\",\"methods\":{\"admin()\":{\"details\":\"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\"},\"constructor\":{\"details\":\"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\"},\"implementation()\":{\"details\":\"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\"},\"upgradeTo(address)\":{\"details\":\"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\"},\"upgradeToAndCall(address,bytes)\":{\"details\":\"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol\":\"OptimizedTransparentUpgradeableProxy\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x93b4e21c931252739a1ec13ea31d3d35a5c068be3163ccab83e4d70c40355f03\",\"license\":\"MIT\"},\"solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializating the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256(\\\"eip1967.proxy.implementation\\\")) - 1));\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n\",\"keccak256\":\"0x6309f9f39dc6f4f45a24f296543867aa358e32946cd6b2874627a996d606b3a0\",\"license\":\"MIT\"},\"solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967Upgrade {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view virtual returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Emitted when the beacon is upgraded.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(Address.isContract(IBeacon(newBeacon).implementation()), \\\"ERC1967: beacon implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(\\n address newBeacon,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x17668652127feebed0ce8d9431ef95ccc8c4292f03e3b8cf06c6ca16af396633\",\"license\":\"MIT\"},\"solc_0.8/openzeppelin/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internall call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overriden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xd5d1fd16e9faff7fcb3a52e02a8d49156f42a38a03f07b5f1810c21c2149a8ab\",\"license\":\"MIT\"},\"solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"solc_0.8/openzeppelin/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n }\\n}\\n\",\"keccak256\":\"0x3777e696b62134e6177440dbe6e6601c0c156a443f57167194b67e75527439de\",\"license\":\"MIT\"},\"solc_0.8/openzeppelin/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/StorageSlot.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xfe1b7a9aa2a530a9e705b220e26cd584e2fbdc9602a3a1066032b12816b46aca\",\"license\":\"MIT\"},\"solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/transparent/TransparentUpgradeableProxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../openzeppelin/proxy/ERC1967/ERC1967Proxy.sol\\\";\\n\\n/**\\n * @dev This contract implements a proxy that is upgradeable by an admin.\\n *\\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\\n * clashing], which can potentially be used in an attack, this contract uses the\\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\\n * things that go hand in hand:\\n *\\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\\n * that call matches one of the admin functions exposed by the proxy itself.\\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\\n * \\\"admin cannot fallback to proxy target\\\".\\n *\\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\\n * the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due\\n * to sudden errors when trying to call a function from the proxy implementation.\\n *\\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\\n */\\ncontract OptimizedTransparentUpgradeableProxy is ERC1967Proxy {\\n address internal immutable _ADMIN;\\n\\n /**\\n * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\\n * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\\n */\\n constructor(\\n address _logic,\\n address admin_,\\n bytes memory _data\\n ) payable ERC1967Proxy(_logic, _data) {\\n assert(_ADMIN_SLOT == bytes32(uint256(keccak256(\\\"eip1967.proxy.admin\\\")) - 1));\\n _ADMIN = admin_;\\n\\n // still store it to work with EIP-1967\\n bytes32 slot = _ADMIN_SLOT;\\n // solhint-disable-next-line no-inline-assembly\\n assembly {\\n sstore(slot, admin_)\\n }\\n emit AdminChanged(address(0), admin_);\\n }\\n\\n /**\\n * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\\n */\\n modifier ifAdmin() {\\n if (msg.sender == _getAdmin()) {\\n _;\\n } else {\\n _fallback();\\n }\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n */\\n function admin() external ifAdmin returns (address admin_) {\\n admin_ = _getAdmin();\\n }\\n\\n /**\\n * @dev Returns the current implementation.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\\n */\\n function implementation() external ifAdmin returns (address implementation_) {\\n implementation_ = _implementation();\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\\n */\\n function upgradeTo(address newImplementation) external ifAdmin {\\n _upgradeToAndCall(newImplementation, bytes(\\\"\\\"), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\\n * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\\n * proxied contract.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\\n */\\n function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {\\n _upgradeToAndCall(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _admin() internal view virtual returns (address) {\\n return _getAdmin();\\n }\\n\\n /**\\n * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.\\n */\\n function _beforeFallback() internal virtual override {\\n require(msg.sender != _getAdmin(), \\\"TransparentUpgradeableProxy: admin cannot fallback to proxy target\\\");\\n super._beforeFallback();\\n }\\n\\n function _getAdmin() internal view virtual override returns (address) {\\n return _ADMIN;\\n }\\n}\\n\",\"keccak256\":\"0xa30117644e27fa5b49e162aae2f62b36c1aca02f801b8c594d46e2024963a534\",\"license\":\"MIT\"}},\"version\":1}", - "bytecode": "0x60a060405260405162000f5f38038062000f5f83398101604081905262000026916200044a565b82816200005560017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd6200052a565b60008051602062000f188339815191521462000075576200007562000550565b62000083828260006200013c565b50620000b3905060017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61046200052a565b60008051602062000ef883398151915214620000d357620000d362000550565b6001600160a01b038216608081905260008051602062000ef88339815191528381556040805160008152602081019390935290917f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a150505050620005b9565b620001478362000179565b600082511180620001555750805b156200017457620001728383620001bb60201b620002a91760201c565b505b505050565b6200018481620001ea565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060620001e3838360405180606001604052806027815260200162000f3860279139620002b2565b9392505050565b62000200816200039860201b620002d51760201c565b620002685760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806200029160008051602062000f1883398151915260001b620003a760201b620002411760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606001600160a01b0384163b6200031c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016200025f565b600080856001600160a01b03168560405162000339919062000566565b600060405180830381855af49150503d806000811462000376576040519150601f19603f3d011682016040523d82523d6000602084013e6200037b565b606091505b5090925090506200038e828286620003aa565b9695505050505050565b6001600160a01b03163b151590565b90565b60608315620003bb575081620001e3565b825115620003cc5782518084602001fd5b8160405162461bcd60e51b81526004016200025f919062000584565b80516001600160a01b03811681146200040057600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620004385781810151838201526020016200041e565b83811115620001725750506000910152565b6000806000606084860312156200046057600080fd5b6200046b84620003e8565b92506200047b60208501620003e8565b60408501519092506001600160401b03808211156200049957600080fd5b818601915086601f830112620004ae57600080fd5b815181811115620004c357620004c362000405565b604051601f8201601f19908116603f01168101908382118183101715620004ee57620004ee62000405565b816040528281528960208487010111156200050857600080fd5b6200051b8360208301602088016200041b565b80955050505050509250925092565b6000828210156200054b57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b600082516200057a8184602087016200041b565b9190910192915050565b6020815260008251806020840152620005a58160408501602087016200041b565b601f01601f19169190910160400192915050565b608051610900620005f86000396000818161011201528181610176015281816102060152818161025e01528181610287015261030901526109006000f3fe6080604052600436106100435760003560e01c80633659cfe61461005a5780634f1ef2861461007a5780635c60da1b1461008d578063f851a440146100cb57610052565b36610052576100506100e0565b005b6100506100e0565b34801561006657600080fd5b5061005061007536600461076c565b6100fa565b610050610088366004610787565b61015e565b34801561009957600080fd5b506100a26101ec565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100d757600080fd5b506100a2610244565b6100e86102f1565b6100f86100f36103e2565b610422565b565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614156101565761015381604051806020016040528060008152506000610446565b50565b6101536100e0565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614156101e4576101df8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610446915050565b505050565b6101df6100e0565b60003373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161415610239576102346103e2565b905090565b6102416100e0565b90565b60003373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016141561023957507f000000000000000000000000000000000000000000000000000000000000000090565b60606102ce83836040518060600160405280602781526020016108a460279139610471565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614156100f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b60006102347f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b3660008037600080366000845af43d6000803e808015610441573d6000f35b3d6000fd5b61044f83610599565b60008251118061045c5750805b156101df5761046b83836102a9565b50505050565b606073ffffffffffffffffffffffffffffffffffffffff84163b610517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e7472616374000000000000000000000000000000000000000000000000000060648201526084016103d9565b6000808573ffffffffffffffffffffffffffffffffffffffff168560405161053f9190610836565b600060405180830381855af49150503d806000811461057a576040519150601f19603f3d011682016040523d82523d6000602084013e61057f565b606091505b509150915061058f8282866105e6565b9695505050505050565b6105a281610639565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606083156105f55750816102ce565b8251156106055782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d99190610852565b73ffffffffffffffffffffffffffffffffffffffff81163b6106dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103d9565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461076757600080fd5b919050565b60006020828403121561077e57600080fd5b6102ce82610743565b60008060006040848603121561079c57600080fd5b6107a584610743565b9250602084013567ffffffffffffffff808211156107c257600080fd5b818601915086601f8301126107d657600080fd5b8135818111156107e557600080fd5b8760208285010111156107f757600080fd5b6020830194508093505050509250925092565b60005b8381101561082557818101518382015260200161080d565b8381111561046b5750506000910152565b6000825161084881846020870161080a565b9190910192915050565b602081526000825180602084015261087181604085016020870161080a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206f70214c51cdd41c05ba0ffeb72b309ca3c8be178fd6e73c12162330799984f364736f6c634300080a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564", - "deployedBytecode": "0x6080604052600436106100435760003560e01c80633659cfe61461005a5780634f1ef2861461007a5780635c60da1b1461008d578063f851a440146100cb57610052565b36610052576100506100e0565b005b6100506100e0565b34801561006657600080fd5b5061005061007536600461076c565b6100fa565b610050610088366004610787565b61015e565b34801561009957600080fd5b506100a26101ec565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100d757600080fd5b506100a2610244565b6100e86102f1565b6100f86100f36103e2565b610422565b565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614156101565761015381604051806020016040528060008152506000610446565b50565b6101536100e0565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614156101e4576101df8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610446915050565b505050565b6101df6100e0565b60003373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161415610239576102346103e2565b905090565b6102416100e0565b90565b60003373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016141561023957507f000000000000000000000000000000000000000000000000000000000000000090565b60606102ce83836040518060600160405280602781526020016108a460279139610471565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614156100f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b60006102347f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b3660008037600080366000845af43d6000803e808015610441573d6000f35b3d6000fd5b61044f83610599565b60008251118061045c5750805b156101df5761046b83836102a9565b50505050565b606073ffffffffffffffffffffffffffffffffffffffff84163b610517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e7472616374000000000000000000000000000000000000000000000000000060648201526084016103d9565b6000808573ffffffffffffffffffffffffffffffffffffffff168560405161053f9190610836565b600060405180830381855af49150503d806000811461057a576040519150601f19603f3d011682016040523d82523d6000602084013e61057f565b606091505b509150915061058f8282866105e6565b9695505050505050565b6105a281610639565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606083156105f55750816102ce565b8251156106055782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d99190610852565b73ffffffffffffffffffffffffffffffffffffffff81163b6106dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103d9565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461076757600080fd5b919050565b60006020828403121561077e57600080fd5b6102ce82610743565b60008060006040848603121561079c57600080fd5b6107a584610743565b9250602084013567ffffffffffffffff808211156107c257600080fd5b818601915086601f8301126107d657600080fd5b8135818111156107e557600080fd5b8760208285010111156107f757600080fd5b6020830194508093505050509250925092565b60005b8381101561082557818101518382015260200161080d565b8381111561046b5750506000910152565b6000825161084881846020870161080a565b9190910192915050565b602081526000825180602084015261087181604085016020870161080a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206f70214c51cdd41c05ba0ffeb72b309ca3c8be178fd6e73c12162330799984f364736f6c634300080a0033", - "implementation": "0xEf0F74FaBC69f32F9b73419726eeFa70F4E8d10F", + "args": [ + "0xF5465B70Af90AEb26Aa13b1000a8CbEA53a5f4cf", + "0x9b87ea90fdb55e1a0f17fbeddcf7eb0ac4d50493", + "0x7b79995e5f793A07Bc00c21412e50Ecae098E7f9", + "0x8000eca36201dddf5805Aa4BeFD73d1EB4D23264", + "67000000000000000", + 2592000, + "1005500000000000000", + 1751268360, + "0xbf705C00578d43B6147ab4eaE04DBBEd1ccCdc96", + "5500000000000000" + ], + "numDeployments": 3, + "solcInputHash": "46c846e585260eef9ba6b1c48d9e2bf9", + "metadata": "{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"stETH\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"wstETH\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"underlyingToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resilientOracle\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"annualGrowthRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotInterval\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSnapshotMaxExchangeRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSnapshotTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"accessControlManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotGap\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidGrowthRate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialSnapshot\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSnapshotMaxExchangeRate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"calledContract\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"methodSignature\",\"type\":\"string\"}],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldGrowthRatePerSecond\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newGrowthRatePerSecond\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldSnapshotInterval\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSnapshotInterval\",\"type\":\"uint256\"}],\"name\":\"GrowthRateUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldSnapshotGap\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newSnapshotGap\",\"type\":\"uint256\"}],\"name\":\"SnapshotGapUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maxExchangeRate\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"SnapshotUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ACCESS_CONTROL_MANAGER\",\"outputs\":[{\"internalType\":\"contract IAccessControlManagerV8\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CORRELATED_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RESILIENT_ORACLE\",\"outputs\":[{\"internalType\":\"contract ResilientOracleInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"STETH\",\"outputs\":[{\"internalType\":\"contract IStETH\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UNDERLYING_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaxAllowedExchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUnderlyingAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"growthRatePerSecond\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isCapped\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_annualGrowthRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotInterval\",\"type\":\"uint256\"}],\"name\":\"setGrowthRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_snapshotMaxExchangeRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotTimestamp\",\"type\":\"uint256\"}],\"name\":\"setSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_snapshotGap\",\"type\":\"uint256\"}],\"name\":\"setSnapshotGap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotGap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotInterval\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotMaxExchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Venus\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"The underlyingToken must be correlated so that 1 underlyingToken is equal to 1 stETH, because getUnderlyingAmount() implicitly assumes that\"},\"getMaxAllowedExchangeRate()\":{\"returns\":{\"_0\":\"maxExchangeRate Maximum allowed exchange rate\"}},\"getPrice(address)\":{\"custom:error\":\"InvalidTokenAddress error is thrown if the token address is invalid\",\"params\":{\"asset\":\"Address of the token\"},\"returns\":{\"_0\":\"price The price of the token in scaled decimal places. It can be capped to a maximum value taking into account the growth rate\"}},\"getUnderlyingAmount()\":{\"returns\":{\"_0\":\"amount Amount of underlyingToken\"}},\"isCapped()\":{\"returns\":{\"_0\":\"isCapped Boolean indicating if the price is capped\"}},\"setGrowthRate(uint256,uint256)\":{\"custom:error\":\"InvalidGrowthRate error is thrown if the growth rate is invalid\",\"custom:event\":\"Emits GrowthRateUpdated event on successful update of the growth rate\",\"params\":{\"_annualGrowthRate\":\"The annual growth rate to set\",\"_snapshotInterval\":\"The snapshot interval to set\"}},\"setSnapshot(uint256,uint256)\":{\"custom:event\":\"Emits SnapshotUpdated event on successful update of the snapshot\",\"params\":{\"_snapshotMaxExchangeRate\":\"The exchange rate to set\",\"_snapshotTimestamp\":\"The timestamp to set\"}},\"setSnapshotGap(uint256)\":{\"custom:event\":\"Emits SnapshotGapUpdated event on successful update of the snapshot gap\",\"params\":{\"_snapshotGap\":\"The snapshot gap to set\"}},\"updateSnapshot()\":{\"custom:error\":\"InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero\",\"custom:event\":\"Emits SnapshotUpdated event on successful update of the snapshot\"}},\"title\":\"WstETHOracleV2\",\"version\":1},\"userdoc\":{\"errors\":{\"InvalidGrowthRate()\":[{\"notice\":\"Thrown if the growth rate is invalid\"}],\"InvalidInitialSnapshot()\":[{\"notice\":\"Thrown if the initial snapshot is invalid\"}],\"InvalidSnapshotMaxExchangeRate()\":[{\"notice\":\"Thrown if the max snapshot exchange rate is invalid\"}],\"InvalidTokenAddress()\":[{\"notice\":\"Thrown if the token address is invalid\"}],\"Unauthorized(address,address,string)\":[{\"notice\":\"@notice Thrown when the action is prohibited by AccessControlManager\"}],\"ZeroAddressNotAllowed()\":[{\"notice\":\"Thrown if the supplied address is a zero address where it is not allowed\"}]},\"events\":{\"GrowthRateUpdated(uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted when the growth rate is updated\"},\"SnapshotGapUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the snapshot gap is updated\"},\"SnapshotUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the snapshot is updated\"}},\"kind\":\"user\",\"methods\":{\"ACCESS_CONTROL_MANAGER()\":{\"notice\":\"Address of the AccessControlManager contract\"},\"CORRELATED_TOKEN()\":{\"notice\":\"Address of the correlated token\"},\"RESILIENT_ORACLE()\":{\"notice\":\"Address of Resilient Oracle\"},\"STETH()\":{\"notice\":\"Address of stETH\"},\"UNDERLYING_TOKEN()\":{\"notice\":\"Address of the underlying token\"},\"constructor\":{\"notice\":\"Constructor for the implementation contract.\"},\"getMaxAllowedExchangeRate()\":{\"notice\":\"Gets the maximum allowed exchange rate for token\"},\"getPrice(address)\":{\"notice\":\"Fetches the price of the token\"},\"getUnderlyingAmount()\":{\"notice\":\"Gets the amount of underlyingToken for 1 wstETH, assuming that 1 underlyingToken is equivalent to 1 stETH\"},\"isCapped()\":{\"notice\":\"Returns if the price is capped\"},\"setGrowthRate(uint256,uint256)\":{\"notice\":\"Sets the growth rate and snapshot interval\"},\"setSnapshot(uint256,uint256)\":{\"notice\":\"Directly sets the snapshot exchange rate and timestamp\"},\"setSnapshotGap(uint256)\":{\"notice\":\"Sets the snapshot gap\"},\"snapshotGap()\":{\"notice\":\"Gap to add when updating the snapshot\"},\"snapshotInterval()\":{\"notice\":\"Snapshot update interval\"},\"snapshotMaxExchangeRate()\":{\"notice\":\"Last stored snapshot maximum exchange rate\"},\"snapshotTimestamp()\":{\"notice\":\"Last stored snapshot timestamp\"},\"updateSnapshot()\":{\"notice\":\"Updates the snapshot price and timestamp\"}},\"notice\":\"This oracle fetches the price of wstETH\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracles/WstETHOracleV2.sol\":\"WstETHOracleV2\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev External interface of AccessControl declared to support ERC165 detection.\\n */\\ninterface IAccessControl {\\n /**\\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\\n *\\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\\n * {RoleAdminChanged} not being emitted signaling this.\\n *\\n * _Available since v3.1._\\n */\\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\\n\\n /**\\n * @dev Emitted when `account` is granted `role`.\\n *\\n * `sender` is the account that originated the contract call, an admin role\\n * bearer except when using {AccessControl-_setupRole}.\\n */\\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Emitted when `account` is revoked `role`.\\n *\\n * `sender` is the account that originated the contract call:\\n * - if using `revokeRole`, it is the admin role bearer\\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\\n */\\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Returns `true` if `account` has been granted `role`.\\n */\\n function hasRole(bytes32 role, address account) external view returns (bool);\\n\\n /**\\n * @dev Returns the admin role that controls `role`. See {grantRole} and\\n * {revokeRole}.\\n *\\n * To change a role's admin, use {AccessControl-_setRoleAdmin}.\\n */\\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function grantRole(bytes32 role, address account) external;\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function revokeRole(bytes32 role, address account) external;\\n\\n /**\\n * @dev Revokes `role` from the calling account.\\n *\\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n * purpose is to provide a mechanism for accounts to lose their privileges\\n * if they are compromised (such as when a trusted device is misplaced).\\n *\\n * If the calling account had been granted `role`, emits a {RoleRevoked}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must be `account`.\\n */\\n function renounceRole(bytes32 role, address account) external;\\n}\\n\",\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n *\\n * _Available since v4.1._\\n */\\ninterface IERC20Metadata is IERC20 {\\n /**\\n * @dev Returns the name of the token.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the symbol of the token.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the decimals places of the token.\\n */\\n function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\"},\"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\nimport \\\"@openzeppelin/contracts/access/IAccessControl.sol\\\";\\n\\n/**\\n * @title IAccessControlManagerV8\\n * @author Venus\\n * @notice Interface implemented by the `AccessControlManagerV8` contract.\\n */\\ninterface IAccessControlManagerV8 is IAccessControl {\\n function giveCallPermission(address contractAddress, string calldata functionSig, address accountToPermit) external;\\n\\n function revokeCallPermission(\\n address contractAddress,\\n string calldata functionSig,\\n address accountToRevoke\\n ) external;\\n\\n function isAllowedToCall(address account, string calldata functionSig) external view returns (bool);\\n\\n function hasPermission(\\n address account,\\n address contractAddress,\\n string calldata functionSig\\n ) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xaa29b098440d0b3a131c5ecdf25ce548790c1b5ac7bf9b5c0264b6af6f7a1e0b\",\"license\":\"BSD-3-Clause\"},\"@venusprotocol/solidity-utilities/contracts/constants.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\n/// @dev Base unit for computations, usually used in scaling (multiplications, divisions)\\nuint256 constant EXP_SCALE = 1e18;\\n\\n/// @dev A unit (literal one) in EXP_SCALE, usually used in additions/subtractions\\nuint256 constant MANTISSA_ONE = EXP_SCALE;\\n\\n/// @dev The approximate number of seconds per year\\nuint256 constant SECONDS_PER_YEAR = 31_536_000;\\n\",\"keccak256\":\"0x14de93ead464da249af31bea0e3bcfb62ec693bea3475fb4d90f055ac81dc5eb\",\"license\":\"BSD-3-Clause\"},\"@venusprotocol/solidity-utilities/contracts/validators.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.25;\\n\\n/// @notice Thrown if the supplied address is a zero address where it is not allowed\\nerror ZeroAddressNotAllowed();\\n\\n/// @notice Thrown if the supplied value is 0 where it is not allowed\\nerror ZeroValueNotAllowed();\\n\\n/// @notice Checks if the provided address is nonzero, reverts otherwise\\n/// @param address_ Address to check\\n/// @custom:error ZeroAddressNotAllowed is thrown if the provided address is a zero address\\nfunction ensureNonzeroAddress(address address_) pure {\\n if (address_ == address(0)) {\\n revert ZeroAddressNotAllowed();\\n }\\n}\\n\\n/// @notice Checks if the provided value is nonzero, reverts otherwise\\n/// @param value_ Value to check\\n/// @custom:error ZeroValueNotAllowed is thrown if the provided value is 0\\nfunction ensureNonzeroValue(uint256 value_) pure {\\n if (value_ == 0) {\\n revert ZeroValueNotAllowed();\\n }\\n}\\n\",\"keccak256\":\"0xdb88e14d50dd21889ca3329d755673d022c47e8da005b6a545c7f69c2c4b7b86\",\"license\":\"BSD-3-Clause\"},\"contracts/interfaces/ICappedOracle.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.25;\\n\\ninterface ICappedOracle {\\n function updateSnapshot() external;\\n}\\n\",\"keccak256\":\"0xad239e65b5e92b3486418c5ccca120247702251f9724cd96657c3cfdc7fedc31\",\"license\":\"BSD-3-Clause\"},\"contracts/interfaces/IStETH.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\ninterface IStETH {\\n function getPooledEthByShares(uint256 _sharesAmount) external view returns (uint256);\\n function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0x9e7ee12d63a84081722469719e046d6791a087f33ab40804ff1ff40ab859d4d3\",\"license\":\"BSD-3-Clause\"},\"contracts/interfaces/OracleInterface.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\ninterface OracleInterface {\\n function getPrice(address asset) external view returns (uint256);\\n}\\n\\ninterface ResilientOracleInterface is OracleInterface {\\n function updatePrice(address vToken) external;\\n\\n function updateAssetPrice(address asset) external;\\n\\n function getUnderlyingPrice(address vToken) external view returns (uint256);\\n}\\n\\ninterface BoundValidatorInterface {\\n function validatePriceWithAnchorPrice(\\n address asset,\\n uint256 reporterPrice,\\n uint256 anchorPrice\\n ) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\"},\"contracts/oracles/WstETHOracleV2.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.25;\\n\\nimport { IStETH } from \\\"../interfaces/IStETH.sol\\\";\\nimport { CorrelatedTokenOracle } from \\\"./common/CorrelatedTokenOracle.sol\\\";\\nimport { EXP_SCALE } from \\\"@venusprotocol/solidity-utilities/contracts/constants.sol\\\";\\nimport { ensureNonzeroAddress } from \\\"@venusprotocol/solidity-utilities/contracts/validators.sol\\\";\\n\\n/**\\n * @title WstETHOracleV2\\n * @author Venus\\n * @notice This oracle fetches the price of wstETH\\n */\\ncontract WstETHOracleV2 is CorrelatedTokenOracle {\\n /// @notice Address of stETH\\n IStETH public immutable STETH;\\n\\n /// @notice Constructor for the implementation contract.\\n /// @dev The underlyingToken must be correlated so that 1 underlyingToken is equal to 1 stETH, because\\n /// getUnderlyingAmount() implicitly assumes that\\n constructor(\\n address stETH,\\n address wstETH,\\n address underlyingToken,\\n address resilientOracle,\\n uint256 annualGrowthRate,\\n uint256 _snapshotInterval,\\n uint256 initialSnapshotMaxExchangeRate,\\n uint256 initialSnapshotTimestamp,\\n address accessControlManager,\\n uint256 _snapshotGap\\n )\\n CorrelatedTokenOracle(\\n wstETH,\\n underlyingToken,\\n resilientOracle,\\n annualGrowthRate,\\n _snapshotInterval,\\n initialSnapshotMaxExchangeRate,\\n initialSnapshotTimestamp,\\n accessControlManager,\\n _snapshotGap\\n )\\n {\\n ensureNonzeroAddress(stETH);\\n STETH = IStETH(stETH);\\n }\\n\\n /**\\n * @notice Gets the amount of underlyingToken for 1 wstETH, assuming that 1 underlyingToken is equivalent to 1 stETH\\n * @return amount Amount of underlyingToken\\n */\\n function getUnderlyingAmount() public view override returns (uint256) {\\n return STETH.getPooledEthByShares(EXP_SCALE);\\n }\\n}\\n\",\"keccak256\":\"0xafa20a802d782e7dbc09351314e7ced484e3685b10a4b7d4e2bf10e57b534806\",\"license\":\"BSD-3-Clause\"},\"contracts/oracles/common/CorrelatedTokenOracle.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.25;\\n\\nimport { OracleInterface, ResilientOracleInterface } from \\\"../../interfaces/OracleInterface.sol\\\";\\nimport { ensureNonzeroAddress } from \\\"@venusprotocol/solidity-utilities/contracts/validators.sol\\\";\\nimport { SECONDS_PER_YEAR } from \\\"@venusprotocol/solidity-utilities/contracts/constants.sol\\\";\\nimport { IERC20Metadata } from \\\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\\\";\\nimport { ICappedOracle } from \\\"../../interfaces/ICappedOracle.sol\\\";\\nimport { IAccessControlManagerV8 } from \\\"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol\\\";\\n\\n/**\\n * @title CorrelatedTokenOracle\\n * @notice This oracle fetches the price of a token that is correlated to another token.\\n */\\nabstract contract CorrelatedTokenOracle is OracleInterface, ICappedOracle {\\n /// @notice Address of the correlated token\\n address public immutable CORRELATED_TOKEN;\\n\\n /// @notice Address of the underlying token\\n address public immutable UNDERLYING_TOKEN;\\n\\n /// @notice Address of Resilient Oracle\\n ResilientOracleInterface public immutable RESILIENT_ORACLE;\\n\\n /// @notice Address of the AccessControlManager contract\\n IAccessControlManagerV8 public immutable ACCESS_CONTROL_MANAGER;\\n\\n //// @notice Growth rate percentage in seconds. Ex: 1e18 is 100%\\n uint256 public growthRatePerSecond;\\n\\n /// @notice Snapshot update interval\\n uint256 public snapshotInterval;\\n\\n /// @notice Last stored snapshot maximum exchange rate\\n uint256 public snapshotMaxExchangeRate;\\n\\n /// @notice Last stored snapshot timestamp\\n uint256 public snapshotTimestamp;\\n\\n /// @notice Gap to add when updating the snapshot\\n uint256 public snapshotGap;\\n\\n /// @notice Emitted when the snapshot is updated\\n event SnapshotUpdated(uint256 indexed maxExchangeRate, uint256 indexed timestamp);\\n\\n /// @notice Emitted when the growth rate is updated\\n event GrowthRateUpdated(\\n uint256 indexed oldGrowthRatePerSecond,\\n uint256 indexed newGrowthRatePerSecond,\\n uint256 indexed oldSnapshotInterval,\\n uint256 newSnapshotInterval\\n );\\n\\n /// @notice Emitted when the snapshot gap is updated\\n event SnapshotGapUpdated(uint256 indexed oldSnapshotGap, uint256 indexed newSnapshotGap);\\n\\n /// @notice Thrown if the token address is invalid\\n error InvalidTokenAddress();\\n\\n /// @notice Thrown if the growth rate is invalid\\n error InvalidGrowthRate();\\n\\n /// @notice Thrown if the initial snapshot is invalid\\n error InvalidInitialSnapshot();\\n\\n /// @notice Thrown if the max snapshot exchange rate is invalid\\n error InvalidSnapshotMaxExchangeRate();\\n\\n /// @notice @notice Thrown when the action is prohibited by AccessControlManager\\n error Unauthorized(address sender, address calledContract, string methodSignature);\\n\\n /**\\n * @notice Constructor for the implementation contract.\\n * @custom:error InvalidGrowthRate error is thrown if the growth rate is invalid\\n * @custom:error InvalidInitialSnapshot error is thrown if the initial snapshot values are invalid\\n */\\n constructor(\\n address _correlatedToken,\\n address _underlyingToken,\\n address _resilientOracle,\\n uint256 _annualGrowthRate,\\n uint256 _snapshotInterval,\\n uint256 _initialSnapshotMaxExchangeRate,\\n uint256 _initialSnapshotTimestamp,\\n address _accessControlManager,\\n uint256 _snapshotGap\\n ) {\\n growthRatePerSecond = _annualGrowthRate / SECONDS_PER_YEAR;\\n\\n if ((growthRatePerSecond == 0 && _snapshotInterval > 0) || (growthRatePerSecond > 0 && _snapshotInterval == 0))\\n revert InvalidGrowthRate();\\n\\n if ((_initialSnapshotMaxExchangeRate == 0 || _initialSnapshotTimestamp == 0) && _snapshotInterval > 0) {\\n revert InvalidInitialSnapshot();\\n }\\n\\n ensureNonzeroAddress(_correlatedToken);\\n ensureNonzeroAddress(_underlyingToken);\\n ensureNonzeroAddress(_resilientOracle);\\n ensureNonzeroAddress(_accessControlManager);\\n\\n CORRELATED_TOKEN = _correlatedToken;\\n UNDERLYING_TOKEN = _underlyingToken;\\n RESILIENT_ORACLE = ResilientOracleInterface(_resilientOracle);\\n snapshotInterval = _snapshotInterval;\\n\\n snapshotMaxExchangeRate = _initialSnapshotMaxExchangeRate;\\n snapshotTimestamp = _initialSnapshotTimestamp;\\n snapshotGap = _snapshotGap;\\n\\n ACCESS_CONTROL_MANAGER = IAccessControlManagerV8(_accessControlManager);\\n }\\n\\n /**\\n * @notice Directly sets the snapshot exchange rate and timestamp\\n * @param _snapshotMaxExchangeRate The exchange rate to set\\n * @param _snapshotTimestamp The timestamp to set\\n * @custom:event Emits SnapshotUpdated event on successful update of the snapshot\\n */\\n function setSnapshot(uint256 _snapshotMaxExchangeRate, uint256 _snapshotTimestamp) external {\\n _checkAccessAllowed(\\\"setSnapshot(uint256,uint256)\\\");\\n\\n snapshotMaxExchangeRate = _snapshotMaxExchangeRate;\\n snapshotTimestamp = _snapshotTimestamp;\\n\\n emit SnapshotUpdated(snapshotMaxExchangeRate, snapshotTimestamp);\\n }\\n\\n /**\\n * @notice Sets the growth rate and snapshot interval\\n * @param _annualGrowthRate The annual growth rate to set\\n * @param _snapshotInterval The snapshot interval to set\\n * @custom:error InvalidGrowthRate error is thrown if the growth rate is invalid\\n * @custom:event Emits GrowthRateUpdated event on successful update of the growth rate\\n */\\n function setGrowthRate(uint256 _annualGrowthRate, uint256 _snapshotInterval) external {\\n _checkAccessAllowed(\\\"setGrowthRate(uint256,uint256)\\\");\\n uint256 oldGrowthRatePerSecond = growthRatePerSecond;\\n\\n growthRatePerSecond = _annualGrowthRate / SECONDS_PER_YEAR;\\n\\n if ((growthRatePerSecond == 0 && _snapshotInterval > 0) || (growthRatePerSecond > 0 && _snapshotInterval == 0))\\n revert InvalidGrowthRate();\\n\\n emit GrowthRateUpdated(oldGrowthRatePerSecond, growthRatePerSecond, snapshotInterval, _snapshotInterval);\\n\\n snapshotInterval = _snapshotInterval;\\n }\\n\\n /**\\n * @notice Sets the snapshot gap\\n * @param _snapshotGap The snapshot gap to set\\n * @custom:event Emits SnapshotGapUpdated event on successful update of the snapshot gap\\n */\\n function setSnapshotGap(uint256 _snapshotGap) external {\\n _checkAccessAllowed(\\\"setSnapshotGap(uint256)\\\");\\n\\n emit SnapshotGapUpdated(snapshotGap, _snapshotGap);\\n\\n snapshotGap = _snapshotGap;\\n }\\n\\n /**\\n * @notice Returns if the price is capped\\n * @return isCapped Boolean indicating if the price is capped\\n */\\n function isCapped() external view virtual returns (bool) {\\n if (snapshotInterval == 0) {\\n return false;\\n }\\n\\n uint256 maxAllowedExchangeRate = getMaxAllowedExchangeRate();\\n if (maxAllowedExchangeRate == 0) {\\n return false;\\n }\\n\\n uint256 exchangeRate = getUnderlyingAmount();\\n\\n return exchangeRate > maxAllowedExchangeRate;\\n }\\n\\n /**\\n * @notice Updates the snapshot price and timestamp\\n * @custom:event Emits SnapshotUpdated event on successful update of the snapshot\\n * @custom:error InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero\\n */\\n function updateSnapshot() public override {\\n if (block.timestamp - snapshotTimestamp < snapshotInterval || snapshotInterval == 0) return;\\n\\n uint256 exchangeRate = getUnderlyingAmount();\\n uint256 maxAllowedExchangeRate = getMaxAllowedExchangeRate();\\n\\n snapshotMaxExchangeRate =\\n (exchangeRate > maxAllowedExchangeRate ? maxAllowedExchangeRate : exchangeRate) +\\n snapshotGap;\\n snapshotTimestamp = block.timestamp;\\n\\n if (snapshotMaxExchangeRate == 0) revert InvalidSnapshotMaxExchangeRate();\\n\\n RESILIENT_ORACLE.updateAssetPrice(UNDERLYING_TOKEN);\\n emit SnapshotUpdated(snapshotMaxExchangeRate, snapshotTimestamp);\\n }\\n\\n /**\\n * @notice Fetches the price of the token\\n * @param asset Address of the token\\n * @return price The price of the token in scaled decimal places. It can be capped\\n * to a maximum value taking into account the growth rate\\n * @custom:error InvalidTokenAddress error is thrown if the token address is invalid\\n */\\n function getPrice(address asset) public view override returns (uint256) {\\n if (asset != CORRELATED_TOKEN) revert InvalidTokenAddress();\\n\\n uint256 exchangeRate = getUnderlyingAmount();\\n\\n if (snapshotInterval == 0) {\\n return _calculatePrice(exchangeRate);\\n }\\n\\n uint256 maxAllowedExchangeRate = getMaxAllowedExchangeRate();\\n\\n uint256 finalExchangeRate = (exchangeRate > maxAllowedExchangeRate && maxAllowedExchangeRate != 0)\\n ? maxAllowedExchangeRate\\n : exchangeRate;\\n\\n return _calculatePrice(finalExchangeRate);\\n }\\n\\n /**\\n * @notice Gets the maximum allowed exchange rate for token\\n * @return maxExchangeRate Maximum allowed exchange rate\\n */\\n function getMaxAllowedExchangeRate() public view returns (uint256) {\\n uint256 timeElapsed = block.timestamp - snapshotTimestamp;\\n uint256 maxExchangeRate = snapshotMaxExchangeRate +\\n (snapshotMaxExchangeRate * growthRatePerSecond * timeElapsed) /\\n 1e18;\\n return maxExchangeRate;\\n }\\n\\n /**\\n * @notice Gets the underlying amount for correlated token\\n * @return underlyingAmount Amount of underlying token\\n */\\n function getUnderlyingAmount() public view virtual returns (uint256);\\n\\n /**\\n * @notice Fetches price of the token based on an underlying exchange rate\\n * @param exchangeRate The underlying exchange rate to use\\n * @return price The price of the token in scaled decimal places\\n */\\n function _calculatePrice(uint256 exchangeRate) internal view returns (uint256) {\\n uint256 underlyingUSDPrice = RESILIENT_ORACLE.getPrice(UNDERLYING_TOKEN);\\n\\n IERC20Metadata token = IERC20Metadata(CORRELATED_TOKEN);\\n uint256 decimals = token.decimals();\\n\\n return (exchangeRate * underlyingUSDPrice) / (10 ** decimals);\\n }\\n\\n /**\\n * @notice Reverts if the call is not allowed by AccessControlManager\\n * @param signature Method signature\\n * @custom:error Unauthorized error is thrown if the call is not allowed\\n */\\n function _checkAccessAllowed(string memory signature) internal view {\\n bool isAllowedToCall = ACCESS_CONTROL_MANAGER.isAllowedToCall(msg.sender, signature);\\n\\n if (!isAllowedToCall) {\\n revert Unauthorized(msg.sender, address(this), signature);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x808b444fa4d1d440dc43de290f1eb59a64646ce9085028b286fa30346305872e\",\"license\":\"BSD-3-Clause\"}},\"version\":1}", + "bytecode": "0x610120604052348015610010575f80fd5b50604051610f0c380380610f0c83398101604081905261002f9161017d565b8888888888888888886100466301e133808761020e565b5f81905515801561005657505f85115b8061006a57505f805411801561006a575084155b15610088576040516353b7e64560e11b815260040160405180910390fd5b831580610093575082155b801561009e57505f85115b156100bc5760405163b8a5589b60e01b815260040160405180910390fd5b6100c589610138565b6100ce88610138565b6100d787610138565b6100e082610138565b6001600160a01b0398891660805296881660a05294871660c052600192909255600255600355506004919091551660e05261011a8a610138565b5050506001600160a01b03909616610100525061022d945050505050565b6001600160a01b03811661015f576040516342bcdf7f60e11b815260040160405180910390fd5b50565b80516001600160a01b0381168114610178575f80fd5b919050565b5f805f805f805f805f806101408b8d031215610197575f80fd5b6101a08b610162565b99506101ae60208c01610162565b98506101bc60408c01610162565b97506101ca60608c01610162565b965060808b0151955060a08b0151945060c08b0151935060e08b015192506101f56101008c01610162565b91506101208b015190509295989b9194979a5092959850565b5f8261022857634e487b7160e01b5f52601260045260245ffd5b500490565b60805160a05160c05160e05161010051610c6a6102a25f395f818161028b01526106c001525f818161019101526108f301525f818161024c0152818161059c01526107c601525f818161013601528181610574015261079a01525f8181610209015281816102b001526108340152610c6a5ff3fe608060405234801561000f575f80fd5b5060043610610111575f3560e01c8063692404261161009e578063a4edcd4c1161006e578063a4edcd4c14610247578063abb856131461026e578063ac5a693e14610276578063bdf13af21461027e578063e00bfe5014610286575f80fd5b806369240426146101fc57806369818a35146102045780637fc4e4a01461022b5780639c43eb541461023e575f80fd5b806345be2dc7116100e457806345be2dc71461018c5780635213f9c8146101b3578063596efe6f146101c8578063643d813d146101d1578063671528d4146101e4575f80fd5b806307d0413c1461011557806329db1be6146101315780634169d2451461017057806341976e0914610179575b5f80fd5b61011e60015481565b6040519081526020015b60405180910390f35b6101587f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610128565b61011e60045481565b61011e61018736600461099c565b6102ad565b6101587f000000000000000000000000000000000000000000000000000000000000000081565b6101c66101c13660046109c2565b61035e565b005b61011e60025481565b6101c66101df3660046109d9565b6103cf565b6101ec6104a5565b6040519015158152602001610128565b6101c66104e0565b6101587f000000000000000000000000000000000000000000000000000000000000000081565b6101c66102393660046109d9565b610629565b61011e60035481565b6101587f000000000000000000000000000000000000000000000000000000000000000081565b61011e6106a1565b61011e5f5481565b61011e610736565b6101587f000000000000000000000000000000000000000000000000000000000000000081565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161461030057604051630f58058360e11b815260040160405180910390fd5b5f6103096106a1565b90506001545f036103245761031d81610783565b9392505050565b5f61032d610736565b90505f818311801561033e57508115155b610348578261034a565b815b905061035581610783565b95945050505050565b61039c6040518060400160405280601781526020017f736574536e617073686f744761702875696e74323536290000000000000000008152506108da565b6004546040518291907feb3716d3f8388c182853c1dc98b18931f3a600bbab31f2ff48631f6412e4997f905f90a3600455565b61040d6040518060400160405280601e81526020017f73657447726f777468526174652875696e743235362c75696e743235362900008152506108da565b5f5461041d6301e1338084610a0d565b5f81905515801561042d57505f82115b8061044157505f8054118015610441575081155b1561045f576040516353b7e64560e11b815260040160405180910390fd5b6001545f54827fa65cbeb0e28a8803a912daac67c472c160aa01e2c988755fa424f290321de6088560405161049691815260200190565b60405180910390a45060015550565b5f6001545f036104b457505f90565b5f6104bd610736565b9050805f036104cd575f91505090565b5f6104d66106a1565b9190911192915050565b6001546003546104f09042610a2c565b10806104fc5750600154155b1561050357565b5f61050c6106a1565b90505f610517610736565b9050600454818311610529578261052b565b815b6105359190610a45565b6002819055426003555f0361055d57604051635f18388760e01b815260040160405180910390fd5b60405163b62cad6960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063b62cad69906024015f604051808303815f87803b1580156105dd575f80fd5b505af11580156105ef573d5f803e3d5ffd5b505050506003546002547f2c8c8fcb8c77a0ca21dcc3ab8fc0ade761557e76b1240cb40ebbef9fcee00f7d60405160405180910390a35050565b6106676040518060400160405280601c81526020017f736574536e617073686f742875696e743235362c75696e7432353629000000008152506108da565b60028290556003819055604051819083907f2c8c8fcb8c77a0ca21dcc3ab8fc0ade761557e76b1240cb40ebbef9fcee00f7d905f90a35050565b604051630f451f7160e31b8152670de0b6b3a764000060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637a28fb8890602401602060405180830381865afa15801561070d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107319190610a58565b905090565b5f80600354426107469190610a2c565b90505f670de0b6b3a7640000825f546002546107629190610a6f565b61076c9190610a6f565b6107769190610a0d565b60025461031d9190610a45565b6040516341976e0960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f9182917f000000000000000000000000000000000000000000000000000000000000000016906341976e0990602401602060405180830381865afa15801561080b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061082f9190610a58565b90505f7f000000000000000000000000000000000000000000000000000000000000000090505f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610892573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108b69190610a86565b60ff1690506108c681600a610b86565b6108d08487610a6f565b6103559190610a0d565b6040516318c5e8ab60e01b81525f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906318c5e8ab9061092a9033908690600401610bbf565b602060405180830381865afa158015610945573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109699190610bea565b90508061099857333083604051634a3fa29360e01b815260040161098f93929190610c09565b60405180910390fd5b5050565b5f602082840312156109ac575f80fd5b81356001600160a01b038116811461031d575f80fd5b5f602082840312156109d2575f80fd5b5035919050565b5f80604083850312156109ea575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b5f82610a2757634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115610a3f57610a3f6109f9565b92915050565b80820180821115610a3f57610a3f6109f9565b5f60208284031215610a68575f80fd5b5051919050565b8082028115828204841417610a3f57610a3f6109f9565b5f60208284031215610a96575f80fd5b815160ff8116811461031d575f80fd5b600181815b80851115610ae057815f1904821115610ac657610ac66109f9565b80851615610ad357918102915b93841c9390800290610aab565b509250929050565b5f82610af657506001610a3f565b81610b0257505f610a3f565b8160018114610b185760028114610b2257610b3e565b6001915050610a3f565b60ff841115610b3357610b336109f9565b50506001821b610a3f565b5060208310610133831016604e8410600b8410161715610b61575081810a610a3f565b610b6b8383610aa6565b805f1904821115610b7e57610b7e6109f9565b029392505050565b5f61031d8383610ae8565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6001600160a01b03831681526040602082018190525f90610be290830184610b91565b949350505050565b5f60208284031215610bfa575f80fd5b8151801515811461031d575f80fd5b6001600160a01b038481168252831660208201526060604082018190525f9061035590830184610b9156fea264697066735822122022c446218af0aec324997e3d37ad189048cd4415dfdbeae289215ff36289569b64736f6c63430008190033", + "deployedBytecode": "0x608060405234801561000f575f80fd5b5060043610610111575f3560e01c8063692404261161009e578063a4edcd4c1161006e578063a4edcd4c14610247578063abb856131461026e578063ac5a693e14610276578063bdf13af21461027e578063e00bfe5014610286575f80fd5b806369240426146101fc57806369818a35146102045780637fc4e4a01461022b5780639c43eb541461023e575f80fd5b806345be2dc7116100e457806345be2dc71461018c5780635213f9c8146101b3578063596efe6f146101c8578063643d813d146101d1578063671528d4146101e4575f80fd5b806307d0413c1461011557806329db1be6146101315780634169d2451461017057806341976e0914610179575b5f80fd5b61011e60015481565b6040519081526020015b60405180910390f35b6101587f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610128565b61011e60045481565b61011e61018736600461099c565b6102ad565b6101587f000000000000000000000000000000000000000000000000000000000000000081565b6101c66101c13660046109c2565b61035e565b005b61011e60025481565b6101c66101df3660046109d9565b6103cf565b6101ec6104a5565b6040519015158152602001610128565b6101c66104e0565b6101587f000000000000000000000000000000000000000000000000000000000000000081565b6101c66102393660046109d9565b610629565b61011e60035481565b6101587f000000000000000000000000000000000000000000000000000000000000000081565b61011e6106a1565b61011e5f5481565b61011e610736565b6101587f000000000000000000000000000000000000000000000000000000000000000081565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161461030057604051630f58058360e11b815260040160405180910390fd5b5f6103096106a1565b90506001545f036103245761031d81610783565b9392505050565b5f61032d610736565b90505f818311801561033e57508115155b610348578261034a565b815b905061035581610783565b95945050505050565b61039c6040518060400160405280601781526020017f736574536e617073686f744761702875696e74323536290000000000000000008152506108da565b6004546040518291907feb3716d3f8388c182853c1dc98b18931f3a600bbab31f2ff48631f6412e4997f905f90a3600455565b61040d6040518060400160405280601e81526020017f73657447726f777468526174652875696e743235362c75696e743235362900008152506108da565b5f5461041d6301e1338084610a0d565b5f81905515801561042d57505f82115b8061044157505f8054118015610441575081155b1561045f576040516353b7e64560e11b815260040160405180910390fd5b6001545f54827fa65cbeb0e28a8803a912daac67c472c160aa01e2c988755fa424f290321de6088560405161049691815260200190565b60405180910390a45060015550565b5f6001545f036104b457505f90565b5f6104bd610736565b9050805f036104cd575f91505090565b5f6104d66106a1565b9190911192915050565b6001546003546104f09042610a2c565b10806104fc5750600154155b1561050357565b5f61050c6106a1565b90505f610517610736565b9050600454818311610529578261052b565b815b6105359190610a45565b6002819055426003555f0361055d57604051635f18388760e01b815260040160405180910390fd5b60405163b62cad6960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063b62cad69906024015f604051808303815f87803b1580156105dd575f80fd5b505af11580156105ef573d5f803e3d5ffd5b505050506003546002547f2c8c8fcb8c77a0ca21dcc3ab8fc0ade761557e76b1240cb40ebbef9fcee00f7d60405160405180910390a35050565b6106676040518060400160405280601c81526020017f736574536e617073686f742875696e743235362c75696e7432353629000000008152506108da565b60028290556003819055604051819083907f2c8c8fcb8c77a0ca21dcc3ab8fc0ade761557e76b1240cb40ebbef9fcee00f7d905f90a35050565b604051630f451f7160e31b8152670de0b6b3a764000060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637a28fb8890602401602060405180830381865afa15801561070d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107319190610a58565b905090565b5f80600354426107469190610a2c565b90505f670de0b6b3a7640000825f546002546107629190610a6f565b61076c9190610a6f565b6107769190610a0d565b60025461031d9190610a45565b6040516341976e0960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f9182917f000000000000000000000000000000000000000000000000000000000000000016906341976e0990602401602060405180830381865afa15801561080b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061082f9190610a58565b90505f7f000000000000000000000000000000000000000000000000000000000000000090505f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610892573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108b69190610a86565b60ff1690506108c681600a610b86565b6108d08487610a6f565b6103559190610a0d565b6040516318c5e8ab60e01b81525f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906318c5e8ab9061092a9033908690600401610bbf565b602060405180830381865afa158015610945573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109699190610bea565b90508061099857333083604051634a3fa29360e01b815260040161098f93929190610c09565b60405180910390fd5b5050565b5f602082840312156109ac575f80fd5b81356001600160a01b038116811461031d575f80fd5b5f602082840312156109d2575f80fd5b5035919050565b5f80604083850312156109ea575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b5f82610a2757634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115610a3f57610a3f6109f9565b92915050565b80820180821115610a3f57610a3f6109f9565b5f60208284031215610a68575f80fd5b5051919050565b8082028115828204841417610a3f57610a3f6109f9565b5f60208284031215610a96575f80fd5b815160ff8116811461031d575f80fd5b600181815b80851115610ae057815f1904821115610ac657610ac66109f9565b80851615610ad357918102915b93841c9390800290610aab565b509250929050565b5f82610af657506001610a3f565b81610b0257505f610a3f565b8160018114610b185760028114610b2257610b3e565b6001915050610a3f565b60ff841115610b3357610b336109f9565b50506001821b610a3f565b5060208310610133831016604e8410600b8410161715610b61575081810a610a3f565b610b6b8383610aa6565b805f1904821115610b7e57610b7e6109f9565b029392505050565b5f61031d8383610ae8565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6001600160a01b03831681526040602082018190525f90610be290830184610b91565b949350505050565b5f60208284031215610bfa575f80fd5b8151801515811461031d575f80fd5b6001600160a01b038481168252831660208201526060604082018190525f9061035590830184610b9156fea264697066735822122022c446218af0aec324997e3d37ad189048cd4415dfdbeae289215ff36289569b64736f6c63430008190033", "devdoc": { - "details": "This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \"admin cannot fallback to proxy target\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.", + "author": "Venus", "kind": "dev", "methods": { - "admin()": { - "details": "Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`" - }, "constructor": { - "details": "Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}." + "details": "The underlyingToken must be correlated so that 1 underlyingToken is equal to 1 stETH, because getUnderlyingAmount() implicitly assumes that" + }, + "getMaxAllowedExchangeRate()": { + "returns": { + "_0": "maxExchangeRate Maximum allowed exchange rate" + } + }, + "getPrice(address)": { + "custom:error": "InvalidTokenAddress error is thrown if the token address is invalid", + "params": { + "asset": "Address of the token" + }, + "returns": { + "_0": "price The price of the token in scaled decimal places. It can be capped to a maximum value taking into account the growth rate" + } + }, + "getUnderlyingAmount()": { + "returns": { + "_0": "amount Amount of underlyingToken" + } }, - "implementation()": { - "details": "Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`" + "isCapped()": { + "returns": { + "_0": "isCapped Boolean indicating if the price is capped" + } }, - "upgradeTo(address)": { - "details": "Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}." + "setGrowthRate(uint256,uint256)": { + "custom:error": "InvalidGrowthRate error is thrown if the growth rate is invalid", + "custom:event": "Emits GrowthRateUpdated event on successful update of the growth rate", + "params": { + "_annualGrowthRate": "The annual growth rate to set", + "_snapshotInterval": "The snapshot interval to set" + } }, - "upgradeToAndCall(address,bytes)": { - "details": "Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}." + "setSnapshot(uint256,uint256)": { + "custom:event": "Emits SnapshotUpdated event on successful update of the snapshot", + "params": { + "_snapshotMaxExchangeRate": "The exchange rate to set", + "_snapshotTimestamp": "The timestamp to set" + } + }, + "setSnapshotGap(uint256)": { + "custom:event": "Emits SnapshotGapUpdated event on successful update of the snapshot gap", + "params": { + "_snapshotGap": "The snapshot gap to set" + } + }, + "updateSnapshot()": { + "custom:error": "InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero", + "custom:event": "Emits SnapshotUpdated event on successful update of the snapshot" } }, + "title": "WstETHOracleV2", "version": 1 }, "userdoc": { + "errors": { + "InvalidGrowthRate()": [ + { + "notice": "Thrown if the growth rate is invalid" + } + ], + "InvalidInitialSnapshot()": [ + { + "notice": "Thrown if the initial snapshot is invalid" + } + ], + "InvalidSnapshotMaxExchangeRate()": [ + { + "notice": "Thrown if the max snapshot exchange rate is invalid" + } + ], + "InvalidTokenAddress()": [ + { + "notice": "Thrown if the token address is invalid" + } + ], + "Unauthorized(address,address,string)": [ + { + "notice": "@notice Thrown when the action is prohibited by AccessControlManager" + } + ], + "ZeroAddressNotAllowed()": [ + { + "notice": "Thrown if the supplied address is a zero address where it is not allowed" + } + ] + }, + "events": { + "GrowthRateUpdated(uint256,uint256,uint256,uint256)": { + "notice": "Emitted when the growth rate is updated" + }, + "SnapshotGapUpdated(uint256,uint256)": { + "notice": "Emitted when the snapshot gap is updated" + }, + "SnapshotUpdated(uint256,uint256)": { + "notice": "Emitted when the snapshot is updated" + } + }, "kind": "user", - "methods": {}, + "methods": { + "ACCESS_CONTROL_MANAGER()": { + "notice": "Address of the AccessControlManager contract" + }, + "CORRELATED_TOKEN()": { + "notice": "Address of the correlated token" + }, + "RESILIENT_ORACLE()": { + "notice": "Address of Resilient Oracle" + }, + "STETH()": { + "notice": "Address of stETH" + }, + "UNDERLYING_TOKEN()": { + "notice": "Address of the underlying token" + }, + "constructor": { + "notice": "Constructor for the implementation contract." + }, + "getMaxAllowedExchangeRate()": { + "notice": "Gets the maximum allowed exchange rate for token" + }, + "getPrice(address)": { + "notice": "Fetches the price of the token" + }, + "getUnderlyingAmount()": { + "notice": "Gets the amount of underlyingToken for 1 wstETH, assuming that 1 underlyingToken is equivalent to 1 stETH" + }, + "isCapped()": { + "notice": "Returns if the price is capped" + }, + "setGrowthRate(uint256,uint256)": { + "notice": "Sets the growth rate and snapshot interval" + }, + "setSnapshot(uint256,uint256)": { + "notice": "Directly sets the snapshot exchange rate and timestamp" + }, + "setSnapshotGap(uint256)": { + "notice": "Sets the snapshot gap" + }, + "snapshotGap()": { + "notice": "Gap to add when updating the snapshot" + }, + "snapshotInterval()": { + "notice": "Snapshot update interval" + }, + "snapshotMaxExchangeRate()": { + "notice": "Last stored snapshot maximum exchange rate" + }, + "snapshotTimestamp()": { + "notice": "Last stored snapshot timestamp" + }, + "updateSnapshot()": { + "notice": "Updates the snapshot price and timestamp" + } + }, + "notice": "This oracle fetches the price of wstETH", "version": 1 }, "storageLayout": { - "storage": [], - "types": null + "storage": [ + { + "astId": 451, + "contract": "contracts/oracles/WstETHOracleV2.sol:WstETHOracleV2", + "label": "growthRatePerSecond", + "offset": 0, + "slot": "0", + "type": "t_uint256" + }, + { + "astId": 454, + "contract": "contracts/oracles/WstETHOracleV2.sol:WstETHOracleV2", + "label": "snapshotInterval", + "offset": 0, + "slot": "1", + "type": "t_uint256" + }, + { + "astId": 457, + "contract": "contracts/oracles/WstETHOracleV2.sol:WstETHOracleV2", + "label": "snapshotMaxExchangeRate", + "offset": 0, + "slot": "2", + "type": "t_uint256" + }, + { + "astId": 460, + "contract": "contracts/oracles/WstETHOracleV2.sol:WstETHOracleV2", + "label": "snapshotTimestamp", + "offset": 0, + "slot": "3", + "type": "t_uint256" + }, + { + "astId": 463, + "contract": "contracts/oracles/WstETHOracleV2.sol:WstETHOracleV2", + "label": "snapshotGap", + "offset": 0, + "slot": "4", + "type": "t_uint256" + } + ], + "types": { + "t_uint256": { + "encoding": "inplace", + "label": "uint256", + "numberOfBytes": "32" + } + } } } diff --git a/deployments/sepolia/WstETHOracle_Implementation.json b/deployments/sepolia/WstETHOracle_Implementation.json deleted file mode 100644 index ed4160ec..00000000 --- a/deployments/sepolia/WstETHOracle_Implementation.json +++ /dev/null @@ -1,203 +0,0 @@ -{ - "address": "0xEf0F74FaBC69f32F9b73419726eeFa70F4E8d10F", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "wstETHAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "wETHAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "stETHAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "resilientOracleAddress", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [], - "name": "ZeroAddressNotAllowed", - "type": "error" - }, - { - "inputs": [], - "name": "RESILIENT_ORACLE", - "outputs": [ - { - "internalType": "contract OracleInterface", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "STETH", - "outputs": [ - { - "internalType": "contract IStETH", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "WETH_ADDRESS", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "WSTETH_ADDRESS", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - } - ], - "name": "getPrice", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "transactionHash": "0x4fdfa9dd995dc6824392f36e561df521d19c1d963bd021dd2287773b00dc7058", - "receipt": { - "to": null, - "from": "0xFEA1c651A47FE29dB9b1bf3cC1f224d8D9CFF68C", - "contractAddress": "0xEf0F74FaBC69f32F9b73419726eeFa70F4E8d10F", - "transactionIndex": 159, - "gasUsed": "274333", - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x6a16c78476cac92e69f1146366dacb084cff7484847ccdf1e082cba89cf963cc", - "transactionHash": "0x4fdfa9dd995dc6824392f36e561df521d19c1d963bd021dd2287773b00dc7058", - "logs": [], - "blockNumber": 5113337, - "cumulativeGasUsed": "21061401", - "status": 1, - "byzantium": true - }, - "args": [ - "0x9b87ea90fdb55e1a0f17fbeddcf7eb0ac4d50493", - "0x700868CAbb60e90d77B6588ce072d9859ec8E281", - "0xF5465B70Af90AEb26Aa13b1000a8CbEA53a5f4cf", - "0x8000eca36201dddf5805Aa4BeFD73d1EB4D23264" - ], - "numDeployments": 1, - "solcInputHash": "d7071d7f42106bbbe692dda5807a1305", - "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"wstETHAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"wETHAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"stETHAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resilientOracleAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESILIENT_ORACLE\",\"outputs\":[{\"internalType\":\"contract OracleInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"STETH\",\"outputs\":[{\"internalType\":\"contract IStETH\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WETH_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WSTETH_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Venus\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"getPrice(address)\":{\"params\":{\"asset\":\"Address of wstETH\"},\"returns\":{\"_0\":\"wstETH Price in USD scaled by 1e18\"}}},\"stateVariables\":{\"RESILIENT_ORACLE\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable\"},\"STETH\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable\"},\"WETH_ADDRESS\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable\"},\"WSTETH_ADDRESS\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable\"}},\"title\":\"WstETHOracle\",\"version\":1},\"userdoc\":{\"errors\":{\"ZeroAddressNotAllowed()\":[{\"notice\":\"Thrown if the supplied address is a zero address where it is not allowed\"}]},\"kind\":\"user\",\"methods\":{\"RESILIENT_ORACLE()\":{\"notice\":\"Address of Resilient Oracle\"},\"STETH()\":{\"notice\":\"Address of stETH\"},\"WETH_ADDRESS()\":{\"notice\":\"Address of WETH\"},\"WSTETH_ADDRESS()\":{\"notice\":\"Address of wstETH\"},\"constructor\":{\"notice\":\"Constructor for the implementation contract.\"},\"getPrice(address)\":{\"notice\":\"Gets the price of wstETH asset\"}},\"notice\":\"This oracle fetches the price of wstETH asset\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracles/WstETHOracle.sol\":\"WstETHOracle\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@venusprotocol/solidity-utilities/contracts/constants.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.13;\\n\\n/// @dev Base unit for computations, usually used in scaling (multiplications, divisions)\\nuint256 constant EXP_SCALE = 1e18;\\n\\n/// @dev A unit (literal one) in EXP_SCALE, usually used in additions/subtractions\\nuint256 constant MANTISSA_ONE = EXP_SCALE;\\n\\n/// @dev The approximate number of seconds per year\\nuint256 constant SECONDS_PER_YEAR = 31_536_000;\\n\",\"keccak256\":\"0x0464dd1b882ea2925e06e967c025a232c824e9e4c7aee7b97cc255d040594a59\",\"license\":\"BSD-3-Clause\"},\"@venusprotocol/solidity-utilities/contracts/validators.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.13;\\n\\n/// @notice Thrown if the supplied address is a zero address where it is not allowed\\nerror ZeroAddressNotAllowed();\\n\\n/// @notice Thrown if the supplied value is 0 where it is not allowed\\nerror ZeroValueNotAllowed();\\n\\n/// @notice Checks if the provided address is nonzero, reverts otherwise\\n/// @param address_ Address to check\\n/// @custom:error ZeroAddressNotAllowed is thrown if the provided address is a zero address\\nfunction ensureNonzeroAddress(address address_) pure {\\n if (address_ == address(0)) {\\n revert ZeroAddressNotAllowed();\\n }\\n}\\n\\n/// @notice Checks if the provided value is nonzero, reverts otherwise\\n/// @param value_ Value to check\\n/// @custom:error ZeroValueNotAllowed is thrown if the provided value is 0\\nfunction ensureNonzeroValue(uint256 value_) pure {\\n if (value_ == 0) {\\n revert ZeroValueNotAllowed();\\n }\\n}\\n\",\"keccak256\":\"0xd55726634a83a862a9cef9d34c41694d3d0fea86cdbc57d6674af066792194b1\",\"license\":\"BSD-3-Clause\"},\"contracts/interfaces/IStETH.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.13;\\n\\ninterface IStETH {\\n function getPooledEthByShares(uint256 _sharesAmount) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0xc298a8004674ce23b9c3b8217285c3c3f926ee3148e58d0dd3863dc7ba9e13e6\",\"license\":\"BSD-3-Clause\"},\"contracts/interfaces/OracleInterface.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.13;\\n\\ninterface OracleInterface {\\n function getPrice(address asset) external view returns (uint256);\\n}\\n\\ninterface ResilientOracleInterface is OracleInterface {\\n function updatePrice(address vToken) external;\\n\\n function updateAssetPrice(address asset) external;\\n\\n function getUnderlyingPrice(address vToken) external view returns (uint256);\\n}\\n\\ninterface TwapInterface is OracleInterface {\\n function updateTwap(address asset) external returns (uint256);\\n}\\n\\ninterface BoundValidatorInterface {\\n function validatePriceWithAnchorPrice(\\n address asset,\\n uint256 reporterPrice,\\n uint256 anchorPrice\\n ) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x40031b19684ca0c912e794d08c2c0b0d8be77d3c1bdc937830a0658eff899650\",\"license\":\"BSD-3-Clause\"},\"contracts/oracles/WstETHOracle.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.13;\\n\\nimport { OracleInterface } from \\\"../interfaces/OracleInterface.sol\\\";\\nimport { IStETH } from \\\"../interfaces/IStETH.sol\\\";\\nimport { ensureNonzeroAddress } from \\\"@venusprotocol/solidity-utilities/contracts/validators.sol\\\";\\nimport { EXP_SCALE } from \\\"@venusprotocol/solidity-utilities/contracts/constants.sol\\\";\\n\\n/**\\n * @title WstETHOracle\\n * @author Venus\\n * @notice This oracle fetches the price of wstETH asset\\n */\\ncontract WstETHOracle is OracleInterface {\\n /// @notice Address of stETH\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\\n IStETH public immutable STETH;\\n\\n /// @notice Address of wstETH\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\\n address public immutable WSTETH_ADDRESS;\\n\\n /// @notice Address of WETH\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\\n address public immutable WETH_ADDRESS;\\n\\n /// @notice Address of Resilient Oracle\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\\n OracleInterface public immutable RESILIENT_ORACLE;\\n\\n /// @notice Constructor for the implementation contract.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor(address wstETHAddress, address wETHAddress, address stETHAddress, address resilientOracleAddress) {\\n ensureNonzeroAddress(wstETHAddress);\\n ensureNonzeroAddress(wETHAddress);\\n ensureNonzeroAddress(stETHAddress);\\n ensureNonzeroAddress(resilientOracleAddress);\\n WSTETH_ADDRESS = wstETHAddress;\\n WETH_ADDRESS = wETHAddress;\\n STETH = IStETH(stETHAddress);\\n RESILIENT_ORACLE = OracleInterface(resilientOracleAddress);\\n }\\n\\n /**\\n * @notice Gets the price of wstETH asset\\n * @param asset Address of wstETH\\n * @return wstETH Price in USD scaled by 1e18\\n */\\n function getPrice(address asset) public view returns (uint256) {\\n if (asset != WSTETH_ADDRESS) revert(\\\"wrong wstETH address\\\");\\n\\n // get stETH amount for 1 wstETH scaled by 1e18\\n uint256 stETHAmount = STETH.getPooledEthByShares(1 ether);\\n\\n // price is scaled 1e18 (oracle returns 36 - asset decimal scale)\\n uint256 wethUSDPrice = RESILIENT_ORACLE.getPrice(WETH_ADDRESS);\\n\\n // stETHAmount (for 1 wstETH) * wethUSDPrice (assuming 1stETH = 1 WETH) / 1e18\\n return (stETHAmount * wethUSDPrice) / EXP_SCALE;\\n }\\n}\\n\",\"keccak256\":\"0x27d0bee44b9f5568b77a463ccec06e8221c18f98245cd8ef641ba07857a9a3fd\",\"license\":\"BSD-3-Clause\"}},\"version\":1}", - "bytecode": "0x61010060405234801561001157600080fd5b5060405161054e38038061054e833981016040819052610030916100bc565b61003984610076565b61004283610076565b61004b82610076565b61005481610076565b6001600160a01b0393841660a05291831660c05282166080521660e052610110565b6001600160a01b03811661009d576040516342bcdf7f60e11b815260040160405180910390fd5b50565b80516001600160a01b03811681146100b757600080fd5b919050565b600080600080608085870312156100d257600080fd5b6100db856100a0565b93506100e9602086016100a0565b92506100f7604086016100a0565b9150610105606086016100a0565b905092959194509250565b60805160a05160c05160e0516103ec6101626000396000818160ed015261028c0152600081816061015261025e01526000818160a5015261013a01526000818161011401526101d401526103ec6000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063040141e51461005c57806336e6372f146100a057806341976e09146100c7578063a4edcd4c146100e8578063e00bfe501461010f575b600080fd5b6100837f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100837f000000000000000000000000000000000000000000000000000000000000000081565b6100da6100d536600461031e565b610136565b604051908152602001610097565b6100837f000000000000000000000000000000000000000000000000000000000000000081565b6100837f000000000000000000000000000000000000000000000000000000000000000081565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316146101b45760405162461bcd60e51b815260206004820152601460248201527377726f6e6720777374455448206164647265737360601b604482015260640160405180910390fd5b604051630f451f7160e31b8152670de0b6b3a764000060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637a28fb8890602401602060405180830381865afa158015610223573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610247919061034e565b6040516341976e0960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301529192506000917f000000000000000000000000000000000000000000000000000000000000000016906341976e0990602401602060405180830381865afa1580156102d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f7919061034e565b9050670de0b6b3a764000061030c8284610367565b6103169190610394565b949350505050565b60006020828403121561033057600080fd5b81356001600160a01b038116811461034757600080fd5b9392505050565b60006020828403121561036057600080fd5b5051919050565b600081600019048311821515161561038f57634e487b7160e01b600052601160045260246000fd5b500290565b6000826103b157634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220a8f9a8f1a8608adeecb9b55d75b5323708d1dff1cb19eef13af1bd4ea11a34ab64736f6c634300080d0033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c8063040141e51461005c57806336e6372f146100a057806341976e09146100c7578063a4edcd4c146100e8578063e00bfe501461010f575b600080fd5b6100837f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100837f000000000000000000000000000000000000000000000000000000000000000081565b6100da6100d536600461031e565b610136565b604051908152602001610097565b6100837f000000000000000000000000000000000000000000000000000000000000000081565b6100837f000000000000000000000000000000000000000000000000000000000000000081565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316146101b45760405162461bcd60e51b815260206004820152601460248201527377726f6e6720777374455448206164647265737360601b604482015260640160405180910390fd5b604051630f451f7160e31b8152670de0b6b3a764000060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637a28fb8890602401602060405180830381865afa158015610223573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610247919061034e565b6040516341976e0960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301529192506000917f000000000000000000000000000000000000000000000000000000000000000016906341976e0990602401602060405180830381865afa1580156102d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f7919061034e565b9050670de0b6b3a764000061030c8284610367565b6103169190610394565b949350505050565b60006020828403121561033057600080fd5b81356001600160a01b038116811461034757600080fd5b9392505050565b60006020828403121561036057600080fd5b5051919050565b600081600019048311821515161561038f57634e487b7160e01b600052601160045260246000fd5b500290565b6000826103b157634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220a8f9a8f1a8608adeecb9b55d75b5323708d1dff1cb19eef13af1bd4ea11a34ab64736f6c634300080d0033", - "devdoc": { - "author": "Venus", - "kind": "dev", - "methods": { - "constructor": { - "custom:oz-upgrades-unsafe-allow": "constructor" - }, - "getPrice(address)": { - "params": { - "asset": "Address of wstETH" - }, - "returns": { - "_0": "wstETH Price in USD scaled by 1e18" - } - } - }, - "stateVariables": { - "RESILIENT_ORACLE": { - "custom:oz-upgrades-unsafe-allow": "state-variable-immutable" - }, - "STETH": { - "custom:oz-upgrades-unsafe-allow": "state-variable-immutable" - }, - "WETH_ADDRESS": { - "custom:oz-upgrades-unsafe-allow": "state-variable-immutable" - }, - "WSTETH_ADDRESS": { - "custom:oz-upgrades-unsafe-allow": "state-variable-immutable" - } - }, - "title": "WstETHOracle", - "version": 1 - }, - "userdoc": { - "errors": { - "ZeroAddressNotAllowed()": [ - { - "notice": "Thrown if the supplied address is a zero address where it is not allowed" - } - ] - }, - "kind": "user", - "methods": { - "RESILIENT_ORACLE()": { - "notice": "Address of Resilient Oracle" - }, - "STETH()": { - "notice": "Address of stETH" - }, - "WETH_ADDRESS()": { - "notice": "Address of WETH" - }, - "WSTETH_ADDRESS()": { - "notice": "Address of wstETH" - }, - "constructor": { - "notice": "Constructor for the implementation contract." - }, - "getPrice(address)": { - "notice": "Gets the price of wstETH asset" - } - }, - "notice": "This oracle fetches the price of wstETH asset", - "version": 1 - }, - "storageLayout": { - "storage": [], - "types": null - } -} diff --git a/deployments/sepolia/WstETHOracle_Proxy.json b/deployments/sepolia/WstETHOracle_Proxy.json deleted file mode 100644 index e17b02ec..00000000 --- a/deployments/sepolia/WstETHOracle_Proxy.json +++ /dev/null @@ -1,213 +0,0 @@ -{ - "address": "0x92E7F73B0d57902fDC453E8aef990EdEe827b0BF", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "admin_", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "stateMutability": "payable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "beacon", - "type": "address" - } - ], - "name": "BeaconUpgraded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "stateMutability": "payable", - "type": "fallback" - }, - { - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "admin_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "implementation_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "stateMutability": "payable", - "type": "receive" - } - ], - "transactionHash": "0x5a3d7e4cddbc9d56d948b48994621658e0c142df816f204c0cee0a7a4e22a624", - "receipt": { - "to": null, - "from": "0xFEA1c651A47FE29dB9b1bf3cC1f224d8D9CFF68C", - "contractAddress": "0x92E7F73B0d57902fDC453E8aef990EdEe827b0BF", - "transactionIndex": 87, - "gasUsed": "622245", - "logsBloom": "0x00000000000400000000000000000000400000000000000000000000000000000000000000000000000080000000000000000000000000004000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000040000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000100020000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0xdc07bf1b700baa0db77bdef1863ee8d06c356e199c113bd02cde8b3a7de248df", - "transactionHash": "0x5a3d7e4cddbc9d56d948b48994621658e0c142df816f204c0cee0a7a4e22a624", - "logs": [ - { - "transactionIndex": 87, - "blockNumber": 5113338, - "transactionHash": "0x5a3d7e4cddbc9d56d948b48994621658e0c142df816f204c0cee0a7a4e22a624", - "address": "0x92E7F73B0d57902fDC453E8aef990EdEe827b0BF", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x000000000000000000000000ef0f74fabc69f32f9b73419726eefa70f4e8d10f" - ], - "data": "0x", - "logIndex": 168, - "blockHash": "0xdc07bf1b700baa0db77bdef1863ee8d06c356e199c113bd02cde8b3a7de248df" - }, - { - "transactionIndex": 87, - "blockNumber": 5113338, - "transactionHash": "0x5a3d7e4cddbc9d56d948b48994621658e0c142df816f204c0cee0a7a4e22a624", - "address": "0x92E7F73B0d57902fDC453E8aef990EdEe827b0BF", - "topics": ["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"], - "data": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001435866babd91311b1355cf3af488cca36db68e", - "logIndex": 169, - "blockHash": "0xdc07bf1b700baa0db77bdef1863ee8d06c356e199c113bd02cde8b3a7de248df" - } - ], - "blockNumber": 5113338, - "cumulativeGasUsed": "11407642", - "status": 1, - "byzantium": true - }, - "args": ["0xEf0F74FaBC69f32F9b73419726eeFa70F4E8d10F", "0x01435866babd91311b1355cf3af488cca36db68e", "0x"], - "numDeployments": 1, - "solcInputHash": "0e89febeebc7444140de8e67c9067d2c", - "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_logic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"implementation_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \\\"admin cannot fallback to proxy target\\\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\",\"kind\":\"dev\",\"methods\":{\"admin()\":{\"details\":\"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\"},\"constructor\":{\"details\":\"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\"},\"implementation()\":{\"details\":\"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\"},\"upgradeTo(address)\":{\"details\":\"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\"},\"upgradeToAndCall(address,bytes)\":{\"details\":\"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol\":\"OptimizedTransparentUpgradeableProxy\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x93b4e21c931252739a1ec13ea31d3d35a5c068be3163ccab83e4d70c40355f03\",\"license\":\"MIT\"},\"solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializating the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256(\\\"eip1967.proxy.implementation\\\")) - 1));\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n\",\"keccak256\":\"0x6309f9f39dc6f4f45a24f296543867aa358e32946cd6b2874627a996d606b3a0\",\"license\":\"MIT\"},\"solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967Upgrade {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view virtual returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Emitted when the beacon is upgraded.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(Address.isContract(IBeacon(newBeacon).implementation()), \\\"ERC1967: beacon implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(\\n address newBeacon,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x17668652127feebed0ce8d9431ef95ccc8c4292f03e3b8cf06c6ca16af396633\",\"license\":\"MIT\"},\"solc_0.8/openzeppelin/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internall call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overriden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xd5d1fd16e9faff7fcb3a52e02a8d49156f42a38a03f07b5f1810c21c2149a8ab\",\"license\":\"MIT\"},\"solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"solc_0.8/openzeppelin/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n }\\n}\\n\",\"keccak256\":\"0x3777e696b62134e6177440dbe6e6601c0c156a443f57167194b67e75527439de\",\"license\":\"MIT\"},\"solc_0.8/openzeppelin/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/StorageSlot.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xfe1b7a9aa2a530a9e705b220e26cd584e2fbdc9602a3a1066032b12816b46aca\",\"license\":\"MIT\"},\"solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/transparent/TransparentUpgradeableProxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../openzeppelin/proxy/ERC1967/ERC1967Proxy.sol\\\";\\n\\n/**\\n * @dev This contract implements a proxy that is upgradeable by an admin.\\n *\\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\\n * clashing], which can potentially be used in an attack, this contract uses the\\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\\n * things that go hand in hand:\\n *\\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\\n * that call matches one of the admin functions exposed by the proxy itself.\\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\\n * \\\"admin cannot fallback to proxy target\\\".\\n *\\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\\n * the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due\\n * to sudden errors when trying to call a function from the proxy implementation.\\n *\\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\\n */\\ncontract OptimizedTransparentUpgradeableProxy is ERC1967Proxy {\\n address internal immutable _ADMIN;\\n\\n /**\\n * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\\n * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\\n */\\n constructor(\\n address _logic,\\n address admin_,\\n bytes memory _data\\n ) payable ERC1967Proxy(_logic, _data) {\\n assert(_ADMIN_SLOT == bytes32(uint256(keccak256(\\\"eip1967.proxy.admin\\\")) - 1));\\n _ADMIN = admin_;\\n\\n // still store it to work with EIP-1967\\n bytes32 slot = _ADMIN_SLOT;\\n // solhint-disable-next-line no-inline-assembly\\n assembly {\\n sstore(slot, admin_)\\n }\\n emit AdminChanged(address(0), admin_);\\n }\\n\\n /**\\n * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\\n */\\n modifier ifAdmin() {\\n if (msg.sender == _getAdmin()) {\\n _;\\n } else {\\n _fallback();\\n }\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n */\\n function admin() external ifAdmin returns (address admin_) {\\n admin_ = _getAdmin();\\n }\\n\\n /**\\n * @dev Returns the current implementation.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\\n */\\n function implementation() external ifAdmin returns (address implementation_) {\\n implementation_ = _implementation();\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\\n */\\n function upgradeTo(address newImplementation) external ifAdmin {\\n _upgradeToAndCall(newImplementation, bytes(\\\"\\\"), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\\n * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\\n * proxied contract.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\\n */\\n function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {\\n _upgradeToAndCall(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _admin() internal view virtual returns (address) {\\n return _getAdmin();\\n }\\n\\n /**\\n * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.\\n */\\n function _beforeFallback() internal virtual override {\\n require(msg.sender != _getAdmin(), \\\"TransparentUpgradeableProxy: admin cannot fallback to proxy target\\\");\\n super._beforeFallback();\\n }\\n\\n function _getAdmin() internal view virtual override returns (address) {\\n return _ADMIN;\\n }\\n}\\n\",\"keccak256\":\"0xa30117644e27fa5b49e162aae2f62b36c1aca02f801b8c594d46e2024963a534\",\"license\":\"MIT\"}},\"version\":1}", - "bytecode": "0x60a060405260405162000f5f38038062000f5f83398101604081905262000026916200044a565b82816200005560017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd6200052a565b60008051602062000f188339815191521462000075576200007562000550565b62000083828260006200013c565b50620000b3905060017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61046200052a565b60008051602062000ef883398151915214620000d357620000d362000550565b6001600160a01b038216608081905260008051602062000ef88339815191528381556040805160008152602081019390935290917f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a150505050620005b9565b620001478362000179565b600082511180620001555750805b156200017457620001728383620001bb60201b620002a91760201c565b505b505050565b6200018481620001ea565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060620001e3838360405180606001604052806027815260200162000f3860279139620002b2565b9392505050565b62000200816200039860201b620002d51760201c565b620002685760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806200029160008051602062000f1883398151915260001b620003a760201b620002411760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606001600160a01b0384163b6200031c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016200025f565b600080856001600160a01b03168560405162000339919062000566565b600060405180830381855af49150503d806000811462000376576040519150601f19603f3d011682016040523d82523d6000602084013e6200037b565b606091505b5090925090506200038e828286620003aa565b9695505050505050565b6001600160a01b03163b151590565b90565b60608315620003bb575081620001e3565b825115620003cc5782518084602001fd5b8160405162461bcd60e51b81526004016200025f919062000584565b80516001600160a01b03811681146200040057600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620004385781810151838201526020016200041e565b83811115620001725750506000910152565b6000806000606084860312156200046057600080fd5b6200046b84620003e8565b92506200047b60208501620003e8565b60408501519092506001600160401b03808211156200049957600080fd5b818601915086601f830112620004ae57600080fd5b815181811115620004c357620004c362000405565b604051601f8201601f19908116603f01168101908382118183101715620004ee57620004ee62000405565b816040528281528960208487010111156200050857600080fd5b6200051b8360208301602088016200041b565b80955050505050509250925092565b6000828210156200054b57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b600082516200057a8184602087016200041b565b9190910192915050565b6020815260008251806020840152620005a58160408501602087016200041b565b601f01601f19169190910160400192915050565b608051610900620005f86000396000818161011201528181610176015281816102060152818161025e01528181610287015261030901526109006000f3fe6080604052600436106100435760003560e01c80633659cfe61461005a5780634f1ef2861461007a5780635c60da1b1461008d578063f851a440146100cb57610052565b36610052576100506100e0565b005b6100506100e0565b34801561006657600080fd5b5061005061007536600461076c565b6100fa565b610050610088366004610787565b61015e565b34801561009957600080fd5b506100a26101ec565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100d757600080fd5b506100a2610244565b6100e86102f1565b6100f86100f36103e2565b610422565b565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614156101565761015381604051806020016040528060008152506000610446565b50565b6101536100e0565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614156101e4576101df8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610446915050565b505050565b6101df6100e0565b60003373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161415610239576102346103e2565b905090565b6102416100e0565b90565b60003373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016141561023957507f000000000000000000000000000000000000000000000000000000000000000090565b60606102ce83836040518060600160405280602781526020016108a460279139610471565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614156100f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b60006102347f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b3660008037600080366000845af43d6000803e808015610441573d6000f35b3d6000fd5b61044f83610599565b60008251118061045c5750805b156101df5761046b83836102a9565b50505050565b606073ffffffffffffffffffffffffffffffffffffffff84163b610517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e7472616374000000000000000000000000000000000000000000000000000060648201526084016103d9565b6000808573ffffffffffffffffffffffffffffffffffffffff168560405161053f9190610836565b600060405180830381855af49150503d806000811461057a576040519150601f19603f3d011682016040523d82523d6000602084013e61057f565b606091505b509150915061058f8282866105e6565b9695505050505050565b6105a281610639565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606083156105f55750816102ce565b8251156106055782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d99190610852565b73ffffffffffffffffffffffffffffffffffffffff81163b6106dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103d9565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461076757600080fd5b919050565b60006020828403121561077e57600080fd5b6102ce82610743565b60008060006040848603121561079c57600080fd5b6107a584610743565b9250602084013567ffffffffffffffff808211156107c257600080fd5b818601915086601f8301126107d657600080fd5b8135818111156107e557600080fd5b8760208285010111156107f757600080fd5b6020830194508093505050509250925092565b60005b8381101561082557818101518382015260200161080d565b8381111561046b5750506000910152565b6000825161084881846020870161080a565b9190910192915050565b602081526000825180602084015261087181604085016020870161080a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206f70214c51cdd41c05ba0ffeb72b309ca3c8be178fd6e73c12162330799984f364736f6c634300080a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564", - "deployedBytecode": "0x6080604052600436106100435760003560e01c80633659cfe61461005a5780634f1ef2861461007a5780635c60da1b1461008d578063f851a440146100cb57610052565b36610052576100506100e0565b005b6100506100e0565b34801561006657600080fd5b5061005061007536600461076c565b6100fa565b610050610088366004610787565b61015e565b34801561009957600080fd5b506100a26101ec565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100d757600080fd5b506100a2610244565b6100e86102f1565b6100f86100f36103e2565b610422565b565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614156101565761015381604051806020016040528060008152506000610446565b50565b6101536100e0565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614156101e4576101df8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610446915050565b505050565b6101df6100e0565b60003373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161415610239576102346103e2565b905090565b6102416100e0565b90565b60003373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016141561023957507f000000000000000000000000000000000000000000000000000000000000000090565b60606102ce83836040518060600160405280602781526020016108a460279139610471565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614156100f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b60006102347f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b3660008037600080366000845af43d6000803e808015610441573d6000f35b3d6000fd5b61044f83610599565b60008251118061045c5750805b156101df5761046b83836102a9565b50505050565b606073ffffffffffffffffffffffffffffffffffffffff84163b610517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e7472616374000000000000000000000000000000000000000000000000000060648201526084016103d9565b6000808573ffffffffffffffffffffffffffffffffffffffff168560405161053f9190610836565b600060405180830381855af49150503d806000811461057a576040519150601f19603f3d011682016040523d82523d6000602084013e61057f565b606091505b509150915061058f8282866105e6565b9695505050505050565b6105a281610639565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606083156105f55750816102ce565b8251156106055782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d99190610852565b73ffffffffffffffffffffffffffffffffffffffff81163b6106dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103d9565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461076757600080fd5b919050565b60006020828403121561077e57600080fd5b6102ce82610743565b60008060006040848603121561079c57600080fd5b6107a584610743565b9250602084013567ffffffffffffffff808211156107c257600080fd5b818601915086601f8301126107d657600080fd5b8135818111156107e557600080fd5b8760208285010111156107f757600080fd5b6020830194508093505050509250925092565b60005b8381101561082557818101518382015260200161080d565b8381111561046b5750506000910152565b6000825161084881846020870161080a565b9190910192915050565b602081526000825180602084015261087181604085016020870161080a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206f70214c51cdd41c05ba0ffeb72b309ca3c8be178fd6e73c12162330799984f364736f6c634300080a0033", - "devdoc": { - "details": "This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \"admin cannot fallback to proxy target\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.", - "kind": "dev", - "methods": { - "admin()": { - "details": "Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`" - }, - "constructor": { - "details": "Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}." - }, - "implementation()": { - "details": "Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`" - }, - "upgradeTo(address)": { - "details": "Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}." - }, - "upgradeToAndCall(address,bytes)": { - "details": "Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}." - } - }, - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": {}, - "version": 1 - }, - "storageLayout": { - "storage": [], - "types": null - } -} diff --git a/deployments/sepolia/solcInputs/46c846e585260eef9ba6b1c48d9e2bf9.json b/deployments/sepolia/solcInputs/46c846e585260eef9ba6b1c48d9e2bf9.json new file mode 100644 index 00000000..506046f2 --- /dev/null +++ b/deployments/sepolia/solcInputs/46c846e585260eef9ba6b1c48d9e2bf9.json @@ -0,0 +1,67 @@ +{ + "language": "Solidity", + "sources": { + "@openzeppelin/contracts/access/IAccessControl.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev External interface of AccessControl declared to support ERC165 detection.\n */\ninterface IAccessControl {\n /**\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n *\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n * {RoleAdminChanged} not being emitted signaling this.\n *\n * _Available since v3.1._\n */\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\n\n /**\n * @dev Emitted when `account` is granted `role`.\n *\n * `sender` is the account that originated the contract call, an admin role\n * bearer except when using {AccessControl-_setupRole}.\n */\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\n\n /**\n * @dev Emitted when `account` is revoked `role`.\n *\n * `sender` is the account that originated the contract call:\n * - if using `revokeRole`, it is the admin role bearer\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\n */\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\n\n /**\n * @dev Returns `true` if `account` has been granted `role`.\n */\n function hasRole(bytes32 role, address account) external view returns (bool);\n\n /**\n * @dev Returns the admin role that controls `role`. See {grantRole} and\n * {revokeRole}.\n *\n * To change a role's admin, use {AccessControl-_setRoleAdmin}.\n */\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\n\n /**\n * @dev Grants `role` to `account`.\n *\n * If `account` had not been already granted `role`, emits a {RoleGranted}\n * event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function grantRole(bytes32 role, address account) external;\n\n /**\n * @dev Revokes `role` from `account`.\n *\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function revokeRole(bytes32 role, address account) external;\n\n /**\n * @dev Revokes `role` from the calling account.\n *\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\n * purpose is to provide a mechanism for accounts to lose their privileges\n * if they are compromised (such as when a trusted device is misplaced).\n *\n * If the calling account had been granted `role`, emits a {RoleRevoked}\n * event.\n *\n * Requirements:\n *\n * - the caller must be `account`.\n */\n function renounceRole(bytes32 role, address account) external;\n}\n" + }, + "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC20.sol\";\n\n/**\n * @dev Interface for the optional metadata functions from the ERC20 standard.\n *\n * _Available since v4.1._\n */\ninterface IERC20Metadata is IERC20 {\n /**\n * @dev Returns the name of the token.\n */\n function name() external view returns (string memory);\n\n /**\n * @dev Returns the symbol of the token.\n */\n function symbol() external view returns (string memory);\n\n /**\n * @dev Returns the decimals places of the token.\n */\n function decimals() external view returns (uint8);\n}\n" + }, + "@openzeppelin/contracts/token/ERC20/IERC20.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n /**\n * @dev Returns the amount of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address to, uint256 amount) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 amount) external returns (bool);\n\n /**\n * @dev Moves `amount` tokens from `from` to `to` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\n}\n" + }, + "@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\nimport \"@openzeppelin/contracts/access/IAccessControl.sol\";\n\n/**\n * @title IAccessControlManagerV8\n * @author Venus\n * @notice Interface implemented by the `AccessControlManagerV8` contract.\n */\ninterface IAccessControlManagerV8 is IAccessControl {\n function giveCallPermission(address contractAddress, string calldata functionSig, address accountToPermit) external;\n\n function revokeCallPermission(\n address contractAddress,\n string calldata functionSig,\n address accountToRevoke\n ) external;\n\n function isAllowedToCall(address account, string calldata functionSig) external view returns (bool);\n\n function hasPermission(\n address account,\n address contractAddress,\n string calldata functionSig\n ) external view returns (bool);\n}\n" + }, + "@venusprotocol/solidity-utilities/contracts/constants.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\n/// @dev Base unit for computations, usually used in scaling (multiplications, divisions)\nuint256 constant EXP_SCALE = 1e18;\n\n/// @dev A unit (literal one) in EXP_SCALE, usually used in additions/subtractions\nuint256 constant MANTISSA_ONE = EXP_SCALE;\n\n/// @dev The approximate number of seconds per year\nuint256 constant SECONDS_PER_YEAR = 31_536_000;\n" + }, + "@venusprotocol/solidity-utilities/contracts/validators.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\n/// @notice Thrown if the supplied address is a zero address where it is not allowed\nerror ZeroAddressNotAllowed();\n\n/// @notice Thrown if the supplied value is 0 where it is not allowed\nerror ZeroValueNotAllowed();\n\n/// @notice Checks if the provided address is nonzero, reverts otherwise\n/// @param address_ Address to check\n/// @custom:error ZeroAddressNotAllowed is thrown if the provided address is a zero address\nfunction ensureNonzeroAddress(address address_) pure {\n if (address_ == address(0)) {\n revert ZeroAddressNotAllowed();\n }\n}\n\n/// @notice Checks if the provided value is nonzero, reverts otherwise\n/// @param value_ Value to check\n/// @custom:error ZeroValueNotAllowed is thrown if the provided value is 0\nfunction ensureNonzeroValue(uint256 value_) pure {\n if (value_ == 0) {\n revert ZeroValueNotAllowed();\n }\n}\n" + }, + "contracts/interfaces/ICappedOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface ICappedOracle {\n function updateSnapshot() external;\n}\n" + }, + "contracts/interfaces/IStETH.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\ninterface IStETH {\n function getPooledEthByShares(uint256 _sharesAmount) external view returns (uint256);\n function decimals() external view returns (uint8);\n}\n" + }, + "contracts/interfaces/OracleInterface.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\ninterface OracleInterface {\n function getPrice(address asset) external view returns (uint256);\n}\n\ninterface ResilientOracleInterface is OracleInterface {\n function updatePrice(address vToken) external;\n\n function updateAssetPrice(address asset) external;\n\n function getUnderlyingPrice(address vToken) external view returns (uint256);\n}\n\ninterface BoundValidatorInterface {\n function validatePriceWithAnchorPrice(\n address asset,\n uint256 reporterPrice,\n uint256 anchorPrice\n ) external view returns (bool);\n}\n" + }, + "contracts/oracles/common/CorrelatedTokenOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { OracleInterface, ResilientOracleInterface } from \"../../interfaces/OracleInterface.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\nimport { SECONDS_PER_YEAR } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\nimport { IERC20Metadata } from \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\";\nimport { ICappedOracle } from \"../../interfaces/ICappedOracle.sol\";\nimport { IAccessControlManagerV8 } from \"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol\";\n\n/**\n * @title CorrelatedTokenOracle\n * @notice This oracle fetches the price of a token that is correlated to another token.\n */\nabstract contract CorrelatedTokenOracle is OracleInterface, ICappedOracle {\n /// @notice Address of the correlated token\n address public immutable CORRELATED_TOKEN;\n\n /// @notice Address of the underlying token\n address public immutable UNDERLYING_TOKEN;\n\n /// @notice Address of Resilient Oracle\n ResilientOracleInterface public immutable RESILIENT_ORACLE;\n\n /// @notice Address of the AccessControlManager contract\n IAccessControlManagerV8 public immutable ACCESS_CONTROL_MANAGER;\n\n //// @notice Growth rate percentage in seconds. Ex: 1e18 is 100%\n uint256 public growthRatePerSecond;\n\n /// @notice Snapshot update interval\n uint256 public snapshotInterval;\n\n /// @notice Last stored snapshot maximum exchange rate\n uint256 public snapshotMaxExchangeRate;\n\n /// @notice Last stored snapshot timestamp\n uint256 public snapshotTimestamp;\n\n /// @notice Gap to add when updating the snapshot\n uint256 public snapshotGap;\n\n /// @notice Emitted when the snapshot is updated\n event SnapshotUpdated(uint256 indexed maxExchangeRate, uint256 indexed timestamp);\n\n /// @notice Emitted when the growth rate is updated\n event GrowthRateUpdated(\n uint256 indexed oldGrowthRatePerSecond,\n uint256 indexed newGrowthRatePerSecond,\n uint256 indexed oldSnapshotInterval,\n uint256 newSnapshotInterval\n );\n\n /// @notice Emitted when the snapshot gap is updated\n event SnapshotGapUpdated(uint256 indexed oldSnapshotGap, uint256 indexed newSnapshotGap);\n\n /// @notice Thrown if the token address is invalid\n error InvalidTokenAddress();\n\n /// @notice Thrown if the growth rate is invalid\n error InvalidGrowthRate();\n\n /// @notice Thrown if the initial snapshot is invalid\n error InvalidInitialSnapshot();\n\n /// @notice Thrown if the max snapshot exchange rate is invalid\n error InvalidSnapshotMaxExchangeRate();\n\n /// @notice @notice Thrown when the action is prohibited by AccessControlManager\n error Unauthorized(address sender, address calledContract, string methodSignature);\n\n /**\n * @notice Constructor for the implementation contract.\n * @custom:error InvalidGrowthRate error is thrown if the growth rate is invalid\n * @custom:error InvalidInitialSnapshot error is thrown if the initial snapshot values are invalid\n */\n constructor(\n address _correlatedToken,\n address _underlyingToken,\n address _resilientOracle,\n uint256 _annualGrowthRate,\n uint256 _snapshotInterval,\n uint256 _initialSnapshotMaxExchangeRate,\n uint256 _initialSnapshotTimestamp,\n address _accessControlManager,\n uint256 _snapshotGap\n ) {\n growthRatePerSecond = _annualGrowthRate / SECONDS_PER_YEAR;\n\n if ((growthRatePerSecond == 0 && _snapshotInterval > 0) || (growthRatePerSecond > 0 && _snapshotInterval == 0))\n revert InvalidGrowthRate();\n\n if ((_initialSnapshotMaxExchangeRate == 0 || _initialSnapshotTimestamp == 0) && _snapshotInterval > 0) {\n revert InvalidInitialSnapshot();\n }\n\n ensureNonzeroAddress(_correlatedToken);\n ensureNonzeroAddress(_underlyingToken);\n ensureNonzeroAddress(_resilientOracle);\n ensureNonzeroAddress(_accessControlManager);\n\n CORRELATED_TOKEN = _correlatedToken;\n UNDERLYING_TOKEN = _underlyingToken;\n RESILIENT_ORACLE = ResilientOracleInterface(_resilientOracle);\n snapshotInterval = _snapshotInterval;\n\n snapshotMaxExchangeRate = _initialSnapshotMaxExchangeRate;\n snapshotTimestamp = _initialSnapshotTimestamp;\n snapshotGap = _snapshotGap;\n\n ACCESS_CONTROL_MANAGER = IAccessControlManagerV8(_accessControlManager);\n }\n\n /**\n * @notice Directly sets the snapshot exchange rate and timestamp\n * @param _snapshotMaxExchangeRate The exchange rate to set\n * @param _snapshotTimestamp The timestamp to set\n * @custom:event Emits SnapshotUpdated event on successful update of the snapshot\n */\n function setSnapshot(uint256 _snapshotMaxExchangeRate, uint256 _snapshotTimestamp) external {\n _checkAccessAllowed(\"setSnapshot(uint256,uint256)\");\n\n snapshotMaxExchangeRate = _snapshotMaxExchangeRate;\n snapshotTimestamp = _snapshotTimestamp;\n\n emit SnapshotUpdated(snapshotMaxExchangeRate, snapshotTimestamp);\n }\n\n /**\n * @notice Sets the growth rate and snapshot interval\n * @param _annualGrowthRate The annual growth rate to set\n * @param _snapshotInterval The snapshot interval to set\n * @custom:error InvalidGrowthRate error is thrown if the growth rate is invalid\n * @custom:event Emits GrowthRateUpdated event on successful update of the growth rate\n */\n function setGrowthRate(uint256 _annualGrowthRate, uint256 _snapshotInterval) external {\n _checkAccessAllowed(\"setGrowthRate(uint256,uint256)\");\n uint256 oldGrowthRatePerSecond = growthRatePerSecond;\n\n growthRatePerSecond = _annualGrowthRate / SECONDS_PER_YEAR;\n\n if ((growthRatePerSecond == 0 && _snapshotInterval > 0) || (growthRatePerSecond > 0 && _snapshotInterval == 0))\n revert InvalidGrowthRate();\n\n emit GrowthRateUpdated(oldGrowthRatePerSecond, growthRatePerSecond, snapshotInterval, _snapshotInterval);\n\n snapshotInterval = _snapshotInterval;\n }\n\n /**\n * @notice Sets the snapshot gap\n * @param _snapshotGap The snapshot gap to set\n * @custom:event Emits SnapshotGapUpdated event on successful update of the snapshot gap\n */\n function setSnapshotGap(uint256 _snapshotGap) external {\n _checkAccessAllowed(\"setSnapshotGap(uint256)\");\n\n emit SnapshotGapUpdated(snapshotGap, _snapshotGap);\n\n snapshotGap = _snapshotGap;\n }\n\n /**\n * @notice Returns if the price is capped\n * @return isCapped Boolean indicating if the price is capped\n */\n function isCapped() external view virtual returns (bool) {\n if (snapshotInterval == 0) {\n return false;\n }\n\n uint256 maxAllowedExchangeRate = getMaxAllowedExchangeRate();\n if (maxAllowedExchangeRate == 0) {\n return false;\n }\n\n uint256 exchangeRate = getUnderlyingAmount();\n\n return exchangeRate > maxAllowedExchangeRate;\n }\n\n /**\n * @notice Updates the snapshot price and timestamp\n * @custom:event Emits SnapshotUpdated event on successful update of the snapshot\n * @custom:error InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero\n */\n function updateSnapshot() public override {\n if (block.timestamp - snapshotTimestamp < snapshotInterval || snapshotInterval == 0) return;\n\n uint256 exchangeRate = getUnderlyingAmount();\n uint256 maxAllowedExchangeRate = getMaxAllowedExchangeRate();\n\n snapshotMaxExchangeRate =\n (exchangeRate > maxAllowedExchangeRate ? maxAllowedExchangeRate : exchangeRate) +\n snapshotGap;\n snapshotTimestamp = block.timestamp;\n\n if (snapshotMaxExchangeRate == 0) revert InvalidSnapshotMaxExchangeRate();\n\n RESILIENT_ORACLE.updateAssetPrice(UNDERLYING_TOKEN);\n emit SnapshotUpdated(snapshotMaxExchangeRate, snapshotTimestamp);\n }\n\n /**\n * @notice Fetches the price of the token\n * @param asset Address of the token\n * @return price The price of the token in scaled decimal places. It can be capped\n * to a maximum value taking into account the growth rate\n * @custom:error InvalidTokenAddress error is thrown if the token address is invalid\n */\n function getPrice(address asset) public view override returns (uint256) {\n if (asset != CORRELATED_TOKEN) revert InvalidTokenAddress();\n\n uint256 exchangeRate = getUnderlyingAmount();\n\n if (snapshotInterval == 0) {\n return _calculatePrice(exchangeRate);\n }\n\n uint256 maxAllowedExchangeRate = getMaxAllowedExchangeRate();\n\n uint256 finalExchangeRate = (exchangeRate > maxAllowedExchangeRate && maxAllowedExchangeRate != 0)\n ? maxAllowedExchangeRate\n : exchangeRate;\n\n return _calculatePrice(finalExchangeRate);\n }\n\n /**\n * @notice Gets the maximum allowed exchange rate for token\n * @return maxExchangeRate Maximum allowed exchange rate\n */\n function getMaxAllowedExchangeRate() public view returns (uint256) {\n uint256 timeElapsed = block.timestamp - snapshotTimestamp;\n uint256 maxExchangeRate = snapshotMaxExchangeRate +\n (snapshotMaxExchangeRate * growthRatePerSecond * timeElapsed) /\n 1e18;\n return maxExchangeRate;\n }\n\n /**\n * @notice Gets the underlying amount for correlated token\n * @return underlyingAmount Amount of underlying token\n */\n function getUnderlyingAmount() public view virtual returns (uint256);\n\n /**\n * @notice Fetches price of the token based on an underlying exchange rate\n * @param exchangeRate The underlying exchange rate to use\n * @return price The price of the token in scaled decimal places\n */\n function _calculatePrice(uint256 exchangeRate) internal view returns (uint256) {\n uint256 underlyingUSDPrice = RESILIENT_ORACLE.getPrice(UNDERLYING_TOKEN);\n\n IERC20Metadata token = IERC20Metadata(CORRELATED_TOKEN);\n uint256 decimals = token.decimals();\n\n return (exchangeRate * underlyingUSDPrice) / (10 ** decimals);\n }\n\n /**\n * @notice Reverts if the call is not allowed by AccessControlManager\n * @param signature Method signature\n * @custom:error Unauthorized error is thrown if the call is not allowed\n */\n function _checkAccessAllowed(string memory signature) internal view {\n bool isAllowedToCall = ACCESS_CONTROL_MANAGER.isAllowedToCall(msg.sender, signature);\n\n if (!isAllowedToCall) {\n revert Unauthorized(msg.sender, address(this), signature);\n }\n }\n}\n" + }, + "contracts/oracles/WstETHOracleV2.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { IStETH } from \"../interfaces/IStETH.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\nimport { EXP_SCALE } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\n\n/**\n * @title WstETHOracleV2\n * @author Venus\n * @notice This oracle fetches the price of wstETH\n */\ncontract WstETHOracleV2 is CorrelatedTokenOracle {\n /// @notice Address of stETH\n IStETH public immutable STETH;\n\n /// @notice Constructor for the implementation contract.\n /// @dev The underlyingToken must be correlated so that 1 underlyingToken is equal to 1 stETH, because\n /// getUnderlyingAmount() implicitly assumes that\n constructor(\n address stETH,\n address wstETH,\n address underlyingToken,\n address resilientOracle,\n uint256 annualGrowthRate,\n uint256 _snapshotInterval,\n uint256 initialSnapshotMaxExchangeRate,\n uint256 initialSnapshotTimestamp,\n address accessControlManager,\n uint256 _snapshotGap\n )\n CorrelatedTokenOracle(\n wstETH,\n underlyingToken,\n resilientOracle,\n annualGrowthRate,\n _snapshotInterval,\n initialSnapshotMaxExchangeRate,\n initialSnapshotTimestamp,\n accessControlManager,\n _snapshotGap\n )\n {\n ensureNonzeroAddress(stETH);\n STETH = IStETH(stETH);\n }\n\n /**\n * @notice Gets the amount of underlyingToken for 1 wstETH, assuming that 1 underlyingToken is equivalent to 1 stETH\n * @return amount Amount of underlyingToken\n */\n function getUnderlyingAmount() public view override returns (uint256) {\n return STETH.getPooledEthByShares(EXP_SCALE);\n }\n}\n" + } + }, + "settings": { + "optimizer": { + "enabled": true, + "runs": 200, + "details": { + "yul": true + } + }, + "evmVersion": "cancun", + "outputSelection": { + "*": { + "*": [ + "storageLayout", + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "evm.gasEstimates" + ], + "": ["ast"] + } + }, + "metadata": { + "useLiteralContent": true + } + } +} diff --git a/deployments/sepolia_addresses.json b/deployments/sepolia_addresses.json index d50a179b..8227b192 100644 --- a/deployments/sepolia_addresses.json +++ b/deployments/sepolia_addresses.json @@ -33,9 +33,6 @@ "SFrxETHOracle_Proxy": "0x61EB836afA467677e6b403D504fe69D6940e7996", "WeETHAccountantOracle_weETHs": "0x660c6d8C5FDDC4F47C749E0f7e03634513f23e0e", "WeETHOracle": "0xf3ebD2A722c2039E6f66179Ad7F9f1462B14D8e0", - "WstETHOracle": "0x92E7F73B0d57902fDC453E8aef990EdEe827b0BF", - "WstETHOracle_Implementation": "0xEf0F74FaBC69f32F9b73419726eeFa70F4E8d10F", - "WstETHOracle_Proxy": "0x92E7F73B0d57902fDC453E8aef990EdEe827b0BF", "eBTCAccountantOracle": "0x51Fa73926Cd9456A94221b70428aa94F009a5b81", "ezETHOneJumpChainlinkOracle": "0x50196dfad5030ED54190F75e5F9d88600A4CA0B4", "ezETHOneJumpRedStoneOracle": "0x987010fD82FDCe099174aC605B88E1cc35019ef4", From 549f763fa34f4b0e708f9be6aa8649dcaae8a8cc Mon Sep 17 00:00:00 2001 From: web3rover Date: Mon, 30 Jun 2025 12:57:46 +0530 Subject: [PATCH 09/24] fix: removed proxy --- ...tETHOracle_Equivalence_Implementation.json | 229 ------------------ .../WstETHOracle_Equivalence_Proxy.json | 213 ---------------- ...HOracle_NonEquivalence_Implementation.json | 229 ------------------ .../WstETHOracle_NonEquivalence_Proxy.json | 213 ---------------- 4 files changed, 884 deletions(-) delete mode 100644 deployments/ethereum/WstETHOracle_Equivalence_Implementation.json delete mode 100644 deployments/ethereum/WstETHOracle_Equivalence_Proxy.json delete mode 100644 deployments/ethereum/WstETHOracle_NonEquivalence_Implementation.json delete mode 100644 deployments/ethereum/WstETHOracle_NonEquivalence_Proxy.json diff --git a/deployments/ethereum/WstETHOracle_Equivalence_Implementation.json b/deployments/ethereum/WstETHOracle_Equivalence_Implementation.json deleted file mode 100644 index 34c3721e..00000000 --- a/deployments/ethereum/WstETHOracle_Equivalence_Implementation.json +++ /dev/null @@ -1,229 +0,0 @@ -{ - "address": "0x4e70615332550CE81e12891772eB950411Bb05A2", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "wstETHAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "wETHAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "stETHAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "resilientOracleAddress", - "type": "address" - }, - { - "internalType": "bool", - "name": "assumeEquivalence", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [], - "name": "ZeroAddressNotAllowed", - "type": "error" - }, - { - "inputs": [], - "name": "ASSUME_STETH_ETH_EQUIVALENCE", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "RESILIENT_ORACLE", - "outputs": [ - { - "internalType": "contract OracleInterface", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "STETH", - "outputs": [ - { - "internalType": "contract IStETH", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "WETH_ADDRESS", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "WSTETH_ADDRESS", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - } - ], - "name": "getPrice", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "transactionHash": "0xb15c040b577518bbff1380ea5ed7b0bc786e20b757091f6470d308cbc724a170", - "receipt": { - "to": null, - "from": "0x1bb5A9f786a6BA418E8059a877689486A14497a2", - "contractAddress": "0x4e70615332550CE81e12891772eB950411Bb05A2", - "transactionIndex": 47, - "gasUsed": "307696", - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x09280897229413b55727fff47079a6e135c9f6afef538c6c58763d36485d08dd", - "transactionHash": "0xb15c040b577518bbff1380ea5ed7b0bc786e20b757091f6470d308cbc724a170", - "logs": [], - "blockNumber": 19276104, - "cumulativeGasUsed": "6941812", - "status": 1, - "byzantium": true - }, - "args": [ - "0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0", - "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", - "0xae7ab96520de3a18e5e111b5eaab095312d7fe84", - "0xd2ce3fb018805ef92b8C5976cb31F84b4E295F94", - true - ], - "numDeployments": 1, - "solcInputHash": "643c04e89f008dea200654c141acbf47", - "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"wstETHAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"wETHAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"stETHAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resilientOracleAddress\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"assumeEquivalence\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ASSUME_STETH_ETH_EQUIVALENCE\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RESILIENT_ORACLE\",\"outputs\":[{\"internalType\":\"contract OracleInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"STETH\",\"outputs\":[{\"internalType\":\"contract IStETH\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WETH_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WSTETH_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Venus\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"getPrice(address)\":{\"details\":\"Depending on the equivalence flag price is either based on assumption that 1 stETH = 1 ETH or the price of stETH/USD (secondary market price) is obtained from the oracle\",\"params\":{\"asset\":\"Address of wstETH\"},\"returns\":{\"_0\":\"wstETH Price in USD scaled by 1e18\"}}},\"stateVariables\":{\"ASSUME_STETH_ETH_EQUIVALENCE\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable\"},\"RESILIENT_ORACLE\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable\"},\"STETH\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable\"},\"WETH_ADDRESS\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable\"},\"WSTETH_ADDRESS\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable\"}},\"title\":\"WstETHOracle\",\"version\":1},\"userdoc\":{\"errors\":{\"ZeroAddressNotAllowed()\":[{\"notice\":\"Thrown if the supplied address is a zero address where it is not allowed\"}]},\"kind\":\"user\",\"methods\":{\"ASSUME_STETH_ETH_EQUIVALENCE()\":{\"notice\":\"A flag assuming 1:1 price equivalence between stETH/ETH\"},\"RESILIENT_ORACLE()\":{\"notice\":\"Address of Resilient Oracle\"},\"STETH()\":{\"notice\":\"Address of stETH\"},\"WETH_ADDRESS()\":{\"notice\":\"Address of WETH\"},\"WSTETH_ADDRESS()\":{\"notice\":\"Address of wstETH\"},\"constructor\":{\"notice\":\"Constructor for the implementation contract.\"},\"getPrice(address)\":{\"notice\":\"Gets the USD price of wstETH asset\"}},\"notice\":\"Depending on the equivalence flag price is either based on assumption that 1 stETH = 1 ETH or the price of stETH/USD (secondary market price) is obtained from the oracle.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracles/WstETHOracle.sol\":\"WstETHOracle\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@venusprotocol/solidity-utilities/contracts/constants.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.13;\\n\\n/// @dev Base unit for computations, usually used in scaling (multiplications, divisions)\\nuint256 constant EXP_SCALE = 1e18;\\n\\n/// @dev A unit (literal one) in EXP_SCALE, usually used in additions/subtractions\\nuint256 constant MANTISSA_ONE = EXP_SCALE;\\n\\n/// @dev The approximate number of seconds per year\\nuint256 constant SECONDS_PER_YEAR = 31_536_000;\\n\",\"keccak256\":\"0x0464dd1b882ea2925e06e967c025a232c824e9e4c7aee7b97cc255d040594a59\",\"license\":\"BSD-3-Clause\"},\"@venusprotocol/solidity-utilities/contracts/validators.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.13;\\n\\n/// @notice Thrown if the supplied address is a zero address where it is not allowed\\nerror ZeroAddressNotAllowed();\\n\\n/// @notice Thrown if the supplied value is 0 where it is not allowed\\nerror ZeroValueNotAllowed();\\n\\n/// @notice Checks if the provided address is nonzero, reverts otherwise\\n/// @param address_ Address to check\\n/// @custom:error ZeroAddressNotAllowed is thrown if the provided address is a zero address\\nfunction ensureNonzeroAddress(address address_) pure {\\n if (address_ == address(0)) {\\n revert ZeroAddressNotAllowed();\\n }\\n}\\n\\n/// @notice Checks if the provided value is nonzero, reverts otherwise\\n/// @param value_ Value to check\\n/// @custom:error ZeroValueNotAllowed is thrown if the provided value is 0\\nfunction ensureNonzeroValue(uint256 value_) pure {\\n if (value_ == 0) {\\n revert ZeroValueNotAllowed();\\n }\\n}\\n\",\"keccak256\":\"0xd55726634a83a862a9cef9d34c41694d3d0fea86cdbc57d6674af066792194b1\",\"license\":\"BSD-3-Clause\"},\"contracts/interfaces/IStETH.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.13;\\n\\ninterface IStETH {\\n function getPooledEthByShares(uint256 _sharesAmount) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0xc298a8004674ce23b9c3b8217285c3c3f926ee3148e58d0dd3863dc7ba9e13e6\",\"license\":\"BSD-3-Clause\"},\"contracts/interfaces/OracleInterface.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.13;\\n\\ninterface OracleInterface {\\n function getPrice(address asset) external view returns (uint256);\\n}\\n\\ninterface ResilientOracleInterface is OracleInterface {\\n function updatePrice(address vToken) external;\\n\\n function updateAssetPrice(address asset) external;\\n\\n function getUnderlyingPrice(address vToken) external view returns (uint256);\\n}\\n\\ninterface TwapInterface is OracleInterface {\\n function updateTwap(address asset) external returns (uint256);\\n}\\n\\ninterface BoundValidatorInterface {\\n function validatePriceWithAnchorPrice(\\n address asset,\\n uint256 reporterPrice,\\n uint256 anchorPrice\\n ) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x40031b19684ca0c912e794d08c2c0b0d8be77d3c1bdc937830a0658eff899650\",\"license\":\"BSD-3-Clause\"},\"contracts/oracles/WstETHOracle.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.13;\\n\\nimport { OracleInterface } from \\\"../interfaces/OracleInterface.sol\\\";\\nimport { IStETH } from \\\"../interfaces/IStETH.sol\\\";\\nimport { ensureNonzeroAddress } from \\\"@venusprotocol/solidity-utilities/contracts/validators.sol\\\";\\nimport { EXP_SCALE } from \\\"@venusprotocol/solidity-utilities/contracts/constants.sol\\\";\\n\\n/**\\n * @title WstETHOracle\\n * @author Venus\\n * @notice Depending on the equivalence flag price is either based on assumption that 1 stETH = 1 ETH\\n * or the price of stETH/USD (secondary market price) is obtained from the oracle.\\n */\\ncontract WstETHOracle is OracleInterface {\\n /// @notice A flag assuming 1:1 price equivalence between stETH/ETH\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\\n bool public immutable ASSUME_STETH_ETH_EQUIVALENCE;\\n\\n /// @notice Address of stETH\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\\n IStETH public immutable STETH;\\n\\n /// @notice Address of wstETH\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\\n address public immutable WSTETH_ADDRESS;\\n\\n /// @notice Address of WETH\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\\n address public immutable WETH_ADDRESS;\\n\\n /// @notice Address of Resilient Oracle\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\\n OracleInterface public immutable RESILIENT_ORACLE;\\n\\n /// @notice Constructor for the implementation contract.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor(\\n address wstETHAddress,\\n address wETHAddress,\\n address stETHAddress,\\n address resilientOracleAddress,\\n bool assumeEquivalence\\n ) {\\n ensureNonzeroAddress(wstETHAddress);\\n ensureNonzeroAddress(wETHAddress);\\n ensureNonzeroAddress(stETHAddress);\\n ensureNonzeroAddress(resilientOracleAddress);\\n WSTETH_ADDRESS = wstETHAddress;\\n WETH_ADDRESS = wETHAddress;\\n STETH = IStETH(stETHAddress);\\n RESILIENT_ORACLE = OracleInterface(resilientOracleAddress);\\n ASSUME_STETH_ETH_EQUIVALENCE = assumeEquivalence;\\n }\\n\\n /**\\n * @notice Gets the USD price of wstETH asset\\n * @dev Depending on the equivalence flag price is either based on assumption that 1 stETH = 1 ETH\\n * or the price of stETH/USD (secondary market price) is obtained from the oracle\\n * @param asset Address of wstETH\\n * @return wstETH Price in USD scaled by 1e18\\n */\\n function getPrice(address asset) public view returns (uint256) {\\n if (asset != WSTETH_ADDRESS) revert(\\\"wrong wstETH address\\\");\\n\\n // get stETH amount for 1 wstETH scaled by 1e18\\n uint256 stETHAmount = STETH.getPooledEthByShares(1 ether);\\n\\n // price is scaled 1e18 (oracle returns 36 - asset decimal scale)\\n uint256 stETHUSDPrice = RESILIENT_ORACLE.getPrice(ASSUME_STETH_ETH_EQUIVALENCE ? WETH_ADDRESS : address(STETH));\\n\\n // stETHAmount (for 1 wstETH) * stETHUSDPrice / 1e18\\n return (stETHAmount * stETHUSDPrice) / EXP_SCALE;\\n }\\n}\\n\",\"keccak256\":\"0x43e6363cca2563e9e8dc3ec0197001b1fb9c2a8ab8eb76414758d4b185df6aec\",\"license\":\"BSD-3-Clause\"}},\"version\":1}", - "bytecode": "0x61012060405234801561001157600080fd5b50604051610624380380610624833981016040819052610030916100c5565b6100398561007f565b6100428461007f565b61004b8361007f565b6100548261007f565b6001600160a01b0394851660c05292841660e05290831660a052909116610100521515608052610133565b6001600160a01b0381166100a6576040516342bcdf7f60e11b815260040160405180910390fd5b50565b80516001600160a01b03811681146100c057600080fd5b919050565b600080600080600060a086880312156100dd57600080fd5b6100e6866100a9565b94506100f4602087016100a9565b9350610102604087016100a9565b9250610110606087016100a9565b91506080860151801515811461012557600080fd5b809150509295509295909350565b60805160a05160c05160e0516101005161048661019e6000396000818160f8015261028f015260008181606c015261030901526000818160b0015261017c01526000818161011f0152818161021601526102e301526000818161014601526102be01526104866000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c8063040141e51461006757806336e6372f146100ab57806341976e09146100d2578063a4edcd4c146100f3578063e00bfe501461011a578063ed0142b714610141575b600080fd5b61008e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61008e7f000000000000000000000000000000000000000000000000000000000000000081565b6100e56100e03660046103b8565b610178565b6040519081526020016100a2565b61008e7f000000000000000000000000000000000000000000000000000000000000000081565b61008e7f000000000000000000000000000000000000000000000000000000000000000081565b6101687f000000000000000000000000000000000000000000000000000000000000000081565b60405190151581526020016100a2565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316146101f65760405162461bcd60e51b815260206004820152601460248201527377726f6e6720777374455448206164647265737360601b604482015260640160405180910390fd5b604051630f451f7160e31b8152670de0b6b3a764000060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637a28fb8890602401602060405180830381865afa158015610265573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028991906103e8565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166341976e097f0000000000000000000000000000000000000000000000000000000000000000610307577f0000000000000000000000000000000000000000000000000000000000000000610329565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801561036d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039191906103e8565b9050670de0b6b3a76400006103a68284610401565b6103b0919061042e565b949350505050565b6000602082840312156103ca57600080fd5b81356001600160a01b03811681146103e157600080fd5b9392505050565b6000602082840312156103fa57600080fd5b5051919050565b600081600019048311821515161561042957634e487b7160e01b600052601160045260246000fd5b500290565b60008261044b57634e487b7160e01b600052601260045260246000fd5b50049056fea264697066735822122065ae659d958b7601c08793974dff6c2a473b0d61fc2cd816dbddf7f8b0cbfbb664736f6c634300080d0033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c8063040141e51461006757806336e6372f146100ab57806341976e09146100d2578063a4edcd4c146100f3578063e00bfe501461011a578063ed0142b714610141575b600080fd5b61008e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61008e7f000000000000000000000000000000000000000000000000000000000000000081565b6100e56100e03660046103b8565b610178565b6040519081526020016100a2565b61008e7f000000000000000000000000000000000000000000000000000000000000000081565b61008e7f000000000000000000000000000000000000000000000000000000000000000081565b6101687f000000000000000000000000000000000000000000000000000000000000000081565b60405190151581526020016100a2565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316146101f65760405162461bcd60e51b815260206004820152601460248201527377726f6e6720777374455448206164647265737360601b604482015260640160405180910390fd5b604051630f451f7160e31b8152670de0b6b3a764000060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637a28fb8890602401602060405180830381865afa158015610265573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028991906103e8565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166341976e097f0000000000000000000000000000000000000000000000000000000000000000610307577f0000000000000000000000000000000000000000000000000000000000000000610329565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801561036d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039191906103e8565b9050670de0b6b3a76400006103a68284610401565b6103b0919061042e565b949350505050565b6000602082840312156103ca57600080fd5b81356001600160a01b03811681146103e157600080fd5b9392505050565b6000602082840312156103fa57600080fd5b5051919050565b600081600019048311821515161561042957634e487b7160e01b600052601160045260246000fd5b500290565b60008261044b57634e487b7160e01b600052601260045260246000fd5b50049056fea264697066735822122065ae659d958b7601c08793974dff6c2a473b0d61fc2cd816dbddf7f8b0cbfbb664736f6c634300080d0033", - "devdoc": { - "author": "Venus", - "kind": "dev", - "methods": { - "constructor": { - "custom:oz-upgrades-unsafe-allow": "constructor" - }, - "getPrice(address)": { - "details": "Depending on the equivalence flag price is either based on assumption that 1 stETH = 1 ETH or the price of stETH/USD (secondary market price) is obtained from the oracle", - "params": { - "asset": "Address of wstETH" - }, - "returns": { - "_0": "wstETH Price in USD scaled by 1e18" - } - } - }, - "stateVariables": { - "ASSUME_STETH_ETH_EQUIVALENCE": { - "custom:oz-upgrades-unsafe-allow": "state-variable-immutable" - }, - "RESILIENT_ORACLE": { - "custom:oz-upgrades-unsafe-allow": "state-variable-immutable" - }, - "STETH": { - "custom:oz-upgrades-unsafe-allow": "state-variable-immutable" - }, - "WETH_ADDRESS": { - "custom:oz-upgrades-unsafe-allow": "state-variable-immutable" - }, - "WSTETH_ADDRESS": { - "custom:oz-upgrades-unsafe-allow": "state-variable-immutable" - } - }, - "title": "WstETHOracle", - "version": 1 - }, - "userdoc": { - "errors": { - "ZeroAddressNotAllowed()": [ - { - "notice": "Thrown if the supplied address is a zero address where it is not allowed" - } - ] - }, - "kind": "user", - "methods": { - "ASSUME_STETH_ETH_EQUIVALENCE()": { - "notice": "A flag assuming 1:1 price equivalence between stETH/ETH" - }, - "RESILIENT_ORACLE()": { - "notice": "Address of Resilient Oracle" - }, - "STETH()": { - "notice": "Address of stETH" - }, - "WETH_ADDRESS()": { - "notice": "Address of WETH" - }, - "WSTETH_ADDRESS()": { - "notice": "Address of wstETH" - }, - "constructor": { - "notice": "Constructor for the implementation contract." - }, - "getPrice(address)": { - "notice": "Gets the USD price of wstETH asset" - } - }, - "notice": "Depending on the equivalence flag price is either based on assumption that 1 stETH = 1 ETH or the price of stETH/USD (secondary market price) is obtained from the oracle.", - "version": 1 - }, - "storageLayout": { - "storage": [], - "types": null - } -} diff --git a/deployments/ethereum/WstETHOracle_Equivalence_Proxy.json b/deployments/ethereum/WstETHOracle_Equivalence_Proxy.json deleted file mode 100644 index 805976c5..00000000 --- a/deployments/ethereum/WstETHOracle_Equivalence_Proxy.json +++ /dev/null @@ -1,213 +0,0 @@ -{ - "address": "0xd8B43165a6cdA057DBd3Fcd4745E88FC475398c5", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "admin_", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "stateMutability": "payable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "beacon", - "type": "address" - } - ], - "name": "BeaconUpgraded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "stateMutability": "payable", - "type": "fallback" - }, - { - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "admin_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "implementation_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "stateMutability": "payable", - "type": "receive" - } - ], - "transactionHash": "0xc1ec093e4f459de11f515b1fd9cb35d397f9a674da9d7b6a6780ef87af7c6d4d", - "receipt": { - "to": null, - "from": "0x1bb5A9f786a6BA418E8059a877689486A14497a2", - "contractAddress": "0xd8B43165a6cdA057DBd3Fcd4745E88FC475398c5", - "transactionIndex": 101, - "gasUsed": "622245", - "logsBloom": "0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000404000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000008000000000020000000000400000000000000000000000000000000000000000000000000000000000000000000000100000000000000", - "blockHash": "0x1439f9894570bd92ae5f3c33e6f3cefcc8ab8879a538312e08cff08b95b9023e", - "transactionHash": "0xc1ec093e4f459de11f515b1fd9cb35d397f9a674da9d7b6a6780ef87af7c6d4d", - "logs": [ - { - "transactionIndex": 101, - "blockNumber": 19276128, - "transactionHash": "0xc1ec093e4f459de11f515b1fd9cb35d397f9a674da9d7b6a6780ef87af7c6d4d", - "address": "0xd8B43165a6cdA057DBd3Fcd4745E88FC475398c5", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000004e70615332550ce81e12891772eb950411bb05a2" - ], - "data": "0x", - "logIndex": 89, - "blockHash": "0x1439f9894570bd92ae5f3c33e6f3cefcc8ab8879a538312e08cff08b95b9023e" - }, - { - "transactionIndex": 101, - "blockNumber": 19276128, - "transactionHash": "0xc1ec093e4f459de11f515b1fd9cb35d397f9a674da9d7b6a6780ef87af7c6d4d", - "address": "0xd8B43165a6cdA057DBd3Fcd4745E88FC475398c5", - "topics": ["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000567e4cc5e085d09f66f836fa8279f38b4e5866b9", - "logIndex": 90, - "blockHash": "0x1439f9894570bd92ae5f3c33e6f3cefcc8ab8879a538312e08cff08b95b9023e" - } - ], - "blockNumber": 19276128, - "cumulativeGasUsed": "5389879", - "status": 1, - "byzantium": true - }, - "args": ["0x4e70615332550CE81e12891772eB950411Bb05A2", "0x567e4cc5e085d09f66f836fa8279f38b4e5866b9", "0x"], - "numDeployments": 1, - "solcInputHash": "0e89febeebc7444140de8e67c9067d2c", - "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_logic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"implementation_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \\\"admin cannot fallback to proxy target\\\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\",\"kind\":\"dev\",\"methods\":{\"admin()\":{\"details\":\"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\"},\"constructor\":{\"details\":\"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\"},\"implementation()\":{\"details\":\"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\"},\"upgradeTo(address)\":{\"details\":\"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\"},\"upgradeToAndCall(address,bytes)\":{\"details\":\"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol\":\"OptimizedTransparentUpgradeableProxy\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x93b4e21c931252739a1ec13ea31d3d35a5c068be3163ccab83e4d70c40355f03\",\"license\":\"MIT\"},\"solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializating the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256(\\\"eip1967.proxy.implementation\\\")) - 1));\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n\",\"keccak256\":\"0x6309f9f39dc6f4f45a24f296543867aa358e32946cd6b2874627a996d606b3a0\",\"license\":\"MIT\"},\"solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967Upgrade {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view virtual returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Emitted when the beacon is upgraded.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(Address.isContract(IBeacon(newBeacon).implementation()), \\\"ERC1967: beacon implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(\\n address newBeacon,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x17668652127feebed0ce8d9431ef95ccc8c4292f03e3b8cf06c6ca16af396633\",\"license\":\"MIT\"},\"solc_0.8/openzeppelin/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internall call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overriden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xd5d1fd16e9faff7fcb3a52e02a8d49156f42a38a03f07b5f1810c21c2149a8ab\",\"license\":\"MIT\"},\"solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"solc_0.8/openzeppelin/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n }\\n}\\n\",\"keccak256\":\"0x3777e696b62134e6177440dbe6e6601c0c156a443f57167194b67e75527439de\",\"license\":\"MIT\"},\"solc_0.8/openzeppelin/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/StorageSlot.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xfe1b7a9aa2a530a9e705b220e26cd584e2fbdc9602a3a1066032b12816b46aca\",\"license\":\"MIT\"},\"solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/transparent/TransparentUpgradeableProxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../openzeppelin/proxy/ERC1967/ERC1967Proxy.sol\\\";\\n\\n/**\\n * @dev This contract implements a proxy that is upgradeable by an admin.\\n *\\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\\n * clashing], which can potentially be used in an attack, this contract uses the\\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\\n * things that go hand in hand:\\n *\\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\\n * that call matches one of the admin functions exposed by the proxy itself.\\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\\n * \\\"admin cannot fallback to proxy target\\\".\\n *\\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\\n * the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due\\n * to sudden errors when trying to call a function from the proxy implementation.\\n *\\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\\n */\\ncontract OptimizedTransparentUpgradeableProxy is ERC1967Proxy {\\n address internal immutable _ADMIN;\\n\\n /**\\n * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\\n * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\\n */\\n constructor(\\n address _logic,\\n address admin_,\\n bytes memory _data\\n ) payable ERC1967Proxy(_logic, _data) {\\n assert(_ADMIN_SLOT == bytes32(uint256(keccak256(\\\"eip1967.proxy.admin\\\")) - 1));\\n _ADMIN = admin_;\\n\\n // still store it to work with EIP-1967\\n bytes32 slot = _ADMIN_SLOT;\\n // solhint-disable-next-line no-inline-assembly\\n assembly {\\n sstore(slot, admin_)\\n }\\n emit AdminChanged(address(0), admin_);\\n }\\n\\n /**\\n * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\\n */\\n modifier ifAdmin() {\\n if (msg.sender == _getAdmin()) {\\n _;\\n } else {\\n _fallback();\\n }\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n */\\n function admin() external ifAdmin returns (address admin_) {\\n admin_ = _getAdmin();\\n }\\n\\n /**\\n * @dev Returns the current implementation.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\\n */\\n function implementation() external ifAdmin returns (address implementation_) {\\n implementation_ = _implementation();\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\\n */\\n function upgradeTo(address newImplementation) external ifAdmin {\\n _upgradeToAndCall(newImplementation, bytes(\\\"\\\"), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\\n * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\\n * proxied contract.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\\n */\\n function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {\\n _upgradeToAndCall(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _admin() internal view virtual returns (address) {\\n return _getAdmin();\\n }\\n\\n /**\\n * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.\\n */\\n function _beforeFallback() internal virtual override {\\n require(msg.sender != _getAdmin(), \\\"TransparentUpgradeableProxy: admin cannot fallback to proxy target\\\");\\n super._beforeFallback();\\n }\\n\\n function _getAdmin() internal view virtual override returns (address) {\\n return _ADMIN;\\n }\\n}\\n\",\"keccak256\":\"0xa30117644e27fa5b49e162aae2f62b36c1aca02f801b8c594d46e2024963a534\",\"license\":\"MIT\"}},\"version\":1}", - "bytecode": "0x60a060405260405162000f5f38038062000f5f83398101604081905262000026916200044a565b82816200005560017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd6200052a565b60008051602062000f188339815191521462000075576200007562000550565b62000083828260006200013c565b50620000b3905060017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61046200052a565b60008051602062000ef883398151915214620000d357620000d362000550565b6001600160a01b038216608081905260008051602062000ef88339815191528381556040805160008152602081019390935290917f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a150505050620005b9565b620001478362000179565b600082511180620001555750805b156200017457620001728383620001bb60201b620002a91760201c565b505b505050565b6200018481620001ea565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060620001e3838360405180606001604052806027815260200162000f3860279139620002b2565b9392505050565b62000200816200039860201b620002d51760201c565b620002685760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806200029160008051602062000f1883398151915260001b620003a760201b620002411760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606001600160a01b0384163b6200031c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016200025f565b600080856001600160a01b03168560405162000339919062000566565b600060405180830381855af49150503d806000811462000376576040519150601f19603f3d011682016040523d82523d6000602084013e6200037b565b606091505b5090925090506200038e828286620003aa565b9695505050505050565b6001600160a01b03163b151590565b90565b60608315620003bb575081620001e3565b825115620003cc5782518084602001fd5b8160405162461bcd60e51b81526004016200025f919062000584565b80516001600160a01b03811681146200040057600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620004385781810151838201526020016200041e565b83811115620001725750506000910152565b6000806000606084860312156200046057600080fd5b6200046b84620003e8565b92506200047b60208501620003e8565b60408501519092506001600160401b03808211156200049957600080fd5b818601915086601f830112620004ae57600080fd5b815181811115620004c357620004c362000405565b604051601f8201601f19908116603f01168101908382118183101715620004ee57620004ee62000405565b816040528281528960208487010111156200050857600080fd5b6200051b8360208301602088016200041b565b80955050505050509250925092565b6000828210156200054b57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b600082516200057a8184602087016200041b565b9190910192915050565b6020815260008251806020840152620005a58160408501602087016200041b565b601f01601f19169190910160400192915050565b608051610900620005f86000396000818161011201528181610176015281816102060152818161025e01528181610287015261030901526109006000f3fe6080604052600436106100435760003560e01c80633659cfe61461005a5780634f1ef2861461007a5780635c60da1b1461008d578063f851a440146100cb57610052565b36610052576100506100e0565b005b6100506100e0565b34801561006657600080fd5b5061005061007536600461076c565b6100fa565b610050610088366004610787565b61015e565b34801561009957600080fd5b506100a26101ec565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100d757600080fd5b506100a2610244565b6100e86102f1565b6100f86100f36103e2565b610422565b565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614156101565761015381604051806020016040528060008152506000610446565b50565b6101536100e0565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614156101e4576101df8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610446915050565b505050565b6101df6100e0565b60003373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161415610239576102346103e2565b905090565b6102416100e0565b90565b60003373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016141561023957507f000000000000000000000000000000000000000000000000000000000000000090565b60606102ce83836040518060600160405280602781526020016108a460279139610471565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614156100f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b60006102347f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b3660008037600080366000845af43d6000803e808015610441573d6000f35b3d6000fd5b61044f83610599565b60008251118061045c5750805b156101df5761046b83836102a9565b50505050565b606073ffffffffffffffffffffffffffffffffffffffff84163b610517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e7472616374000000000000000000000000000000000000000000000000000060648201526084016103d9565b6000808573ffffffffffffffffffffffffffffffffffffffff168560405161053f9190610836565b600060405180830381855af49150503d806000811461057a576040519150601f19603f3d011682016040523d82523d6000602084013e61057f565b606091505b509150915061058f8282866105e6565b9695505050505050565b6105a281610639565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606083156105f55750816102ce565b8251156106055782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d99190610852565b73ffffffffffffffffffffffffffffffffffffffff81163b6106dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103d9565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461076757600080fd5b919050565b60006020828403121561077e57600080fd5b6102ce82610743565b60008060006040848603121561079c57600080fd5b6107a584610743565b9250602084013567ffffffffffffffff808211156107c257600080fd5b818601915086601f8301126107d657600080fd5b8135818111156107e557600080fd5b8760208285010111156107f757600080fd5b6020830194508093505050509250925092565b60005b8381101561082557818101518382015260200161080d565b8381111561046b5750506000910152565b6000825161084881846020870161080a565b9190910192915050565b602081526000825180602084015261087181604085016020870161080a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206f70214c51cdd41c05ba0ffeb72b309ca3c8be178fd6e73c12162330799984f364736f6c634300080a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564", - "deployedBytecode": "0x6080604052600436106100435760003560e01c80633659cfe61461005a5780634f1ef2861461007a5780635c60da1b1461008d578063f851a440146100cb57610052565b36610052576100506100e0565b005b6100506100e0565b34801561006657600080fd5b5061005061007536600461076c565b6100fa565b610050610088366004610787565b61015e565b34801561009957600080fd5b506100a26101ec565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100d757600080fd5b506100a2610244565b6100e86102f1565b6100f86100f36103e2565b610422565b565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614156101565761015381604051806020016040528060008152506000610446565b50565b6101536100e0565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614156101e4576101df8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610446915050565b505050565b6101df6100e0565b60003373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161415610239576102346103e2565b905090565b6102416100e0565b90565b60003373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016141561023957507f000000000000000000000000000000000000000000000000000000000000000090565b60606102ce83836040518060600160405280602781526020016108a460279139610471565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614156100f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b60006102347f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b3660008037600080366000845af43d6000803e808015610441573d6000f35b3d6000fd5b61044f83610599565b60008251118061045c5750805b156101df5761046b83836102a9565b50505050565b606073ffffffffffffffffffffffffffffffffffffffff84163b610517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e7472616374000000000000000000000000000000000000000000000000000060648201526084016103d9565b6000808573ffffffffffffffffffffffffffffffffffffffff168560405161053f9190610836565b600060405180830381855af49150503d806000811461057a576040519150601f19603f3d011682016040523d82523d6000602084013e61057f565b606091505b509150915061058f8282866105e6565b9695505050505050565b6105a281610639565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606083156105f55750816102ce565b8251156106055782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d99190610852565b73ffffffffffffffffffffffffffffffffffffffff81163b6106dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103d9565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461076757600080fd5b919050565b60006020828403121561077e57600080fd5b6102ce82610743565b60008060006040848603121561079c57600080fd5b6107a584610743565b9250602084013567ffffffffffffffff808211156107c257600080fd5b818601915086601f8301126107d657600080fd5b8135818111156107e557600080fd5b8760208285010111156107f757600080fd5b6020830194508093505050509250925092565b60005b8381101561082557818101518382015260200161080d565b8381111561046b5750506000910152565b6000825161084881846020870161080a565b9190910192915050565b602081526000825180602084015261087181604085016020870161080a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206f70214c51cdd41c05ba0ffeb72b309ca3c8be178fd6e73c12162330799984f364736f6c634300080a0033", - "devdoc": { - "details": "This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \"admin cannot fallback to proxy target\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.", - "kind": "dev", - "methods": { - "admin()": { - "details": "Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`" - }, - "constructor": { - "details": "Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}." - }, - "implementation()": { - "details": "Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`" - }, - "upgradeTo(address)": { - "details": "Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}." - }, - "upgradeToAndCall(address,bytes)": { - "details": "Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}." - } - }, - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": {}, - "version": 1 - }, - "storageLayout": { - "storage": [], - "types": null - } -} diff --git a/deployments/ethereum/WstETHOracle_NonEquivalence_Implementation.json b/deployments/ethereum/WstETHOracle_NonEquivalence_Implementation.json deleted file mode 100644 index b8821cdf..00000000 --- a/deployments/ethereum/WstETHOracle_NonEquivalence_Implementation.json +++ /dev/null @@ -1,229 +0,0 @@ -{ - "address": "0x24D3D52332834ddE93692D9ede4679FE920d2afC", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "wstETHAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "wETHAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "stETHAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "resilientOracleAddress", - "type": "address" - }, - { - "internalType": "bool", - "name": "assumeEquivalence", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [], - "name": "ZeroAddressNotAllowed", - "type": "error" - }, - { - "inputs": [], - "name": "ASSUME_STETH_ETH_EQUIVALENCE", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "RESILIENT_ORACLE", - "outputs": [ - { - "internalType": "contract OracleInterface", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "STETH", - "outputs": [ - { - "internalType": "contract IStETH", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "WETH_ADDRESS", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "WSTETH_ADDRESS", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - } - ], - "name": "getPrice", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "transactionHash": "0x2457bc83c867e0eccefd679fadc594954edfda01cee1af5092bed3436f89bce2", - "receipt": { - "to": null, - "from": "0x1bb5A9f786a6BA418E8059a877689486A14497a2", - "contractAddress": "0x24D3D52332834ddE93692D9ede4679FE920d2afC", - "transactionIndex": 80, - "gasUsed": "307684", - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0xbee13d8c7b12d3e5a723dbdf1ce4e18153ba79895bb4520d76c6450bad3791bb", - "transactionHash": "0x2457bc83c867e0eccefd679fadc594954edfda01cee1af5092bed3436f89bce2", - "logs": [], - "blockNumber": 19276130, - "cumulativeGasUsed": "7483339", - "status": 1, - "byzantium": true - }, - "args": [ - "0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0", - "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", - "0xae7ab96520de3a18e5e111b5eaab095312d7fe84", - "0xd2ce3fb018805ef92b8C5976cb31F84b4E295F94", - false - ], - "numDeployments": 1, - "solcInputHash": "643c04e89f008dea200654c141acbf47", - "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"wstETHAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"wETHAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"stETHAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resilientOracleAddress\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"assumeEquivalence\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ASSUME_STETH_ETH_EQUIVALENCE\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RESILIENT_ORACLE\",\"outputs\":[{\"internalType\":\"contract OracleInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"STETH\",\"outputs\":[{\"internalType\":\"contract IStETH\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WETH_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WSTETH_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Venus\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"getPrice(address)\":{\"details\":\"Depending on the equivalence flag price is either based on assumption that 1 stETH = 1 ETH or the price of stETH/USD (secondary market price) is obtained from the oracle\",\"params\":{\"asset\":\"Address of wstETH\"},\"returns\":{\"_0\":\"wstETH Price in USD scaled by 1e18\"}}},\"stateVariables\":{\"ASSUME_STETH_ETH_EQUIVALENCE\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable\"},\"RESILIENT_ORACLE\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable\"},\"STETH\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable\"},\"WETH_ADDRESS\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable\"},\"WSTETH_ADDRESS\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable\"}},\"title\":\"WstETHOracle\",\"version\":1},\"userdoc\":{\"errors\":{\"ZeroAddressNotAllowed()\":[{\"notice\":\"Thrown if the supplied address is a zero address where it is not allowed\"}]},\"kind\":\"user\",\"methods\":{\"ASSUME_STETH_ETH_EQUIVALENCE()\":{\"notice\":\"A flag assuming 1:1 price equivalence between stETH/ETH\"},\"RESILIENT_ORACLE()\":{\"notice\":\"Address of Resilient Oracle\"},\"STETH()\":{\"notice\":\"Address of stETH\"},\"WETH_ADDRESS()\":{\"notice\":\"Address of WETH\"},\"WSTETH_ADDRESS()\":{\"notice\":\"Address of wstETH\"},\"constructor\":{\"notice\":\"Constructor for the implementation contract.\"},\"getPrice(address)\":{\"notice\":\"Gets the USD price of wstETH asset\"}},\"notice\":\"Depending on the equivalence flag price is either based on assumption that 1 stETH = 1 ETH or the price of stETH/USD (secondary market price) is obtained from the oracle.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracles/WstETHOracle.sol\":\"WstETHOracle\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@venusprotocol/solidity-utilities/contracts/constants.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.13;\\n\\n/// @dev Base unit for computations, usually used in scaling (multiplications, divisions)\\nuint256 constant EXP_SCALE = 1e18;\\n\\n/// @dev A unit (literal one) in EXP_SCALE, usually used in additions/subtractions\\nuint256 constant MANTISSA_ONE = EXP_SCALE;\\n\\n/// @dev The approximate number of seconds per year\\nuint256 constant SECONDS_PER_YEAR = 31_536_000;\\n\",\"keccak256\":\"0x0464dd1b882ea2925e06e967c025a232c824e9e4c7aee7b97cc255d040594a59\",\"license\":\"BSD-3-Clause\"},\"@venusprotocol/solidity-utilities/contracts/validators.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.13;\\n\\n/// @notice Thrown if the supplied address is a zero address where it is not allowed\\nerror ZeroAddressNotAllowed();\\n\\n/// @notice Thrown if the supplied value is 0 where it is not allowed\\nerror ZeroValueNotAllowed();\\n\\n/// @notice Checks if the provided address is nonzero, reverts otherwise\\n/// @param address_ Address to check\\n/// @custom:error ZeroAddressNotAllowed is thrown if the provided address is a zero address\\nfunction ensureNonzeroAddress(address address_) pure {\\n if (address_ == address(0)) {\\n revert ZeroAddressNotAllowed();\\n }\\n}\\n\\n/// @notice Checks if the provided value is nonzero, reverts otherwise\\n/// @param value_ Value to check\\n/// @custom:error ZeroValueNotAllowed is thrown if the provided value is 0\\nfunction ensureNonzeroValue(uint256 value_) pure {\\n if (value_ == 0) {\\n revert ZeroValueNotAllowed();\\n }\\n}\\n\",\"keccak256\":\"0xd55726634a83a862a9cef9d34c41694d3d0fea86cdbc57d6674af066792194b1\",\"license\":\"BSD-3-Clause\"},\"contracts/interfaces/IStETH.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.13;\\n\\ninterface IStETH {\\n function getPooledEthByShares(uint256 _sharesAmount) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0xc298a8004674ce23b9c3b8217285c3c3f926ee3148e58d0dd3863dc7ba9e13e6\",\"license\":\"BSD-3-Clause\"},\"contracts/interfaces/OracleInterface.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.13;\\n\\ninterface OracleInterface {\\n function getPrice(address asset) external view returns (uint256);\\n}\\n\\ninterface ResilientOracleInterface is OracleInterface {\\n function updatePrice(address vToken) external;\\n\\n function updateAssetPrice(address asset) external;\\n\\n function getUnderlyingPrice(address vToken) external view returns (uint256);\\n}\\n\\ninterface TwapInterface is OracleInterface {\\n function updateTwap(address asset) external returns (uint256);\\n}\\n\\ninterface BoundValidatorInterface {\\n function validatePriceWithAnchorPrice(\\n address asset,\\n uint256 reporterPrice,\\n uint256 anchorPrice\\n ) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x40031b19684ca0c912e794d08c2c0b0d8be77d3c1bdc937830a0658eff899650\",\"license\":\"BSD-3-Clause\"},\"contracts/oracles/WstETHOracle.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.13;\\n\\nimport { OracleInterface } from \\\"../interfaces/OracleInterface.sol\\\";\\nimport { IStETH } from \\\"../interfaces/IStETH.sol\\\";\\nimport { ensureNonzeroAddress } from \\\"@venusprotocol/solidity-utilities/contracts/validators.sol\\\";\\nimport { EXP_SCALE } from \\\"@venusprotocol/solidity-utilities/contracts/constants.sol\\\";\\n\\n/**\\n * @title WstETHOracle\\n * @author Venus\\n * @notice Depending on the equivalence flag price is either based on assumption that 1 stETH = 1 ETH\\n * or the price of stETH/USD (secondary market price) is obtained from the oracle.\\n */\\ncontract WstETHOracle is OracleInterface {\\n /// @notice A flag assuming 1:1 price equivalence between stETH/ETH\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\\n bool public immutable ASSUME_STETH_ETH_EQUIVALENCE;\\n\\n /// @notice Address of stETH\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\\n IStETH public immutable STETH;\\n\\n /// @notice Address of wstETH\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\\n address public immutable WSTETH_ADDRESS;\\n\\n /// @notice Address of WETH\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\\n address public immutable WETH_ADDRESS;\\n\\n /// @notice Address of Resilient Oracle\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\\n OracleInterface public immutable RESILIENT_ORACLE;\\n\\n /// @notice Constructor for the implementation contract.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor(\\n address wstETHAddress,\\n address wETHAddress,\\n address stETHAddress,\\n address resilientOracleAddress,\\n bool assumeEquivalence\\n ) {\\n ensureNonzeroAddress(wstETHAddress);\\n ensureNonzeroAddress(wETHAddress);\\n ensureNonzeroAddress(stETHAddress);\\n ensureNonzeroAddress(resilientOracleAddress);\\n WSTETH_ADDRESS = wstETHAddress;\\n WETH_ADDRESS = wETHAddress;\\n STETH = IStETH(stETHAddress);\\n RESILIENT_ORACLE = OracleInterface(resilientOracleAddress);\\n ASSUME_STETH_ETH_EQUIVALENCE = assumeEquivalence;\\n }\\n\\n /**\\n * @notice Gets the USD price of wstETH asset\\n * @dev Depending on the equivalence flag price is either based on assumption that 1 stETH = 1 ETH\\n * or the price of stETH/USD (secondary market price) is obtained from the oracle\\n * @param asset Address of wstETH\\n * @return wstETH Price in USD scaled by 1e18\\n */\\n function getPrice(address asset) public view returns (uint256) {\\n if (asset != WSTETH_ADDRESS) revert(\\\"wrong wstETH address\\\");\\n\\n // get stETH amount for 1 wstETH scaled by 1e18\\n uint256 stETHAmount = STETH.getPooledEthByShares(1 ether);\\n\\n // price is scaled 1e18 (oracle returns 36 - asset decimal scale)\\n uint256 stETHUSDPrice = RESILIENT_ORACLE.getPrice(ASSUME_STETH_ETH_EQUIVALENCE ? WETH_ADDRESS : address(STETH));\\n\\n // stETHAmount (for 1 wstETH) * stETHUSDPrice / 1e18\\n return (stETHAmount * stETHUSDPrice) / EXP_SCALE;\\n }\\n}\\n\",\"keccak256\":\"0x43e6363cca2563e9e8dc3ec0197001b1fb9c2a8ab8eb76414758d4b185df6aec\",\"license\":\"BSD-3-Clause\"}},\"version\":1}", - "bytecode": "0x61012060405234801561001157600080fd5b50604051610624380380610624833981016040819052610030916100c5565b6100398561007f565b6100428461007f565b61004b8361007f565b6100548261007f565b6001600160a01b0394851660c05292841660e05290831660a052909116610100521515608052610133565b6001600160a01b0381166100a6576040516342bcdf7f60e11b815260040160405180910390fd5b50565b80516001600160a01b03811681146100c057600080fd5b919050565b600080600080600060a086880312156100dd57600080fd5b6100e6866100a9565b94506100f4602087016100a9565b9350610102604087016100a9565b9250610110606087016100a9565b91506080860151801515811461012557600080fd5b809150509295509295909350565b60805160a05160c05160e0516101005161048661019e6000396000818160f8015261028f015260008181606c015261030901526000818160b0015261017c01526000818161011f0152818161021601526102e301526000818161014601526102be01526104866000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c8063040141e51461006757806336e6372f146100ab57806341976e09146100d2578063a4edcd4c146100f3578063e00bfe501461011a578063ed0142b714610141575b600080fd5b61008e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61008e7f000000000000000000000000000000000000000000000000000000000000000081565b6100e56100e03660046103b8565b610178565b6040519081526020016100a2565b61008e7f000000000000000000000000000000000000000000000000000000000000000081565b61008e7f000000000000000000000000000000000000000000000000000000000000000081565b6101687f000000000000000000000000000000000000000000000000000000000000000081565b60405190151581526020016100a2565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316146101f65760405162461bcd60e51b815260206004820152601460248201527377726f6e6720777374455448206164647265737360601b604482015260640160405180910390fd5b604051630f451f7160e31b8152670de0b6b3a764000060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637a28fb8890602401602060405180830381865afa158015610265573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028991906103e8565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166341976e097f0000000000000000000000000000000000000000000000000000000000000000610307577f0000000000000000000000000000000000000000000000000000000000000000610329565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801561036d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039191906103e8565b9050670de0b6b3a76400006103a68284610401565b6103b0919061042e565b949350505050565b6000602082840312156103ca57600080fd5b81356001600160a01b03811681146103e157600080fd5b9392505050565b6000602082840312156103fa57600080fd5b5051919050565b600081600019048311821515161561042957634e487b7160e01b600052601160045260246000fd5b500290565b60008261044b57634e487b7160e01b600052601260045260246000fd5b50049056fea264697066735822122065ae659d958b7601c08793974dff6c2a473b0d61fc2cd816dbddf7f8b0cbfbb664736f6c634300080d0033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c8063040141e51461006757806336e6372f146100ab57806341976e09146100d2578063a4edcd4c146100f3578063e00bfe501461011a578063ed0142b714610141575b600080fd5b61008e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61008e7f000000000000000000000000000000000000000000000000000000000000000081565b6100e56100e03660046103b8565b610178565b6040519081526020016100a2565b61008e7f000000000000000000000000000000000000000000000000000000000000000081565b61008e7f000000000000000000000000000000000000000000000000000000000000000081565b6101687f000000000000000000000000000000000000000000000000000000000000000081565b60405190151581526020016100a2565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316146101f65760405162461bcd60e51b815260206004820152601460248201527377726f6e6720777374455448206164647265737360601b604482015260640160405180910390fd5b604051630f451f7160e31b8152670de0b6b3a764000060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637a28fb8890602401602060405180830381865afa158015610265573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028991906103e8565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166341976e097f0000000000000000000000000000000000000000000000000000000000000000610307577f0000000000000000000000000000000000000000000000000000000000000000610329565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801561036d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039191906103e8565b9050670de0b6b3a76400006103a68284610401565b6103b0919061042e565b949350505050565b6000602082840312156103ca57600080fd5b81356001600160a01b03811681146103e157600080fd5b9392505050565b6000602082840312156103fa57600080fd5b5051919050565b600081600019048311821515161561042957634e487b7160e01b600052601160045260246000fd5b500290565b60008261044b57634e487b7160e01b600052601260045260246000fd5b50049056fea264697066735822122065ae659d958b7601c08793974dff6c2a473b0d61fc2cd816dbddf7f8b0cbfbb664736f6c634300080d0033", - "devdoc": { - "author": "Venus", - "kind": "dev", - "methods": { - "constructor": { - "custom:oz-upgrades-unsafe-allow": "constructor" - }, - "getPrice(address)": { - "details": "Depending on the equivalence flag price is either based on assumption that 1 stETH = 1 ETH or the price of stETH/USD (secondary market price) is obtained from the oracle", - "params": { - "asset": "Address of wstETH" - }, - "returns": { - "_0": "wstETH Price in USD scaled by 1e18" - } - } - }, - "stateVariables": { - "ASSUME_STETH_ETH_EQUIVALENCE": { - "custom:oz-upgrades-unsafe-allow": "state-variable-immutable" - }, - "RESILIENT_ORACLE": { - "custom:oz-upgrades-unsafe-allow": "state-variable-immutable" - }, - "STETH": { - "custom:oz-upgrades-unsafe-allow": "state-variable-immutable" - }, - "WETH_ADDRESS": { - "custom:oz-upgrades-unsafe-allow": "state-variable-immutable" - }, - "WSTETH_ADDRESS": { - "custom:oz-upgrades-unsafe-allow": "state-variable-immutable" - } - }, - "title": "WstETHOracle", - "version": 1 - }, - "userdoc": { - "errors": { - "ZeroAddressNotAllowed()": [ - { - "notice": "Thrown if the supplied address is a zero address where it is not allowed" - } - ] - }, - "kind": "user", - "methods": { - "ASSUME_STETH_ETH_EQUIVALENCE()": { - "notice": "A flag assuming 1:1 price equivalence between stETH/ETH" - }, - "RESILIENT_ORACLE()": { - "notice": "Address of Resilient Oracle" - }, - "STETH()": { - "notice": "Address of stETH" - }, - "WETH_ADDRESS()": { - "notice": "Address of WETH" - }, - "WSTETH_ADDRESS()": { - "notice": "Address of wstETH" - }, - "constructor": { - "notice": "Constructor for the implementation contract." - }, - "getPrice(address)": { - "notice": "Gets the USD price of wstETH asset" - } - }, - "notice": "Depending on the equivalence flag price is either based on assumption that 1 stETH = 1 ETH or the price of stETH/USD (secondary market price) is obtained from the oracle.", - "version": 1 - }, - "storageLayout": { - "storage": [], - "types": null - } -} diff --git a/deployments/ethereum/WstETHOracle_NonEquivalence_Proxy.json b/deployments/ethereum/WstETHOracle_NonEquivalence_Proxy.json deleted file mode 100644 index ef78ac19..00000000 --- a/deployments/ethereum/WstETHOracle_NonEquivalence_Proxy.json +++ /dev/null @@ -1,213 +0,0 @@ -{ - "address": "0xd082B50b3EeB012605598bB45Fc2Be853b9AFEEf", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "admin_", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "stateMutability": "payable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "beacon", - "type": "address" - } - ], - "name": "BeaconUpgraded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "stateMutability": "payable", - "type": "fallback" - }, - { - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "admin_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "implementation_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "stateMutability": "payable", - "type": "receive" - } - ], - "transactionHash": "0xe5f6eb1f53fb632519eb85e168454e1357d3ebbda0536e2d3b06dcff44f8932a", - "receipt": { - "to": null, - "from": "0x1bb5A9f786a6BA418E8059a877689486A14497a2", - "contractAddress": "0xd082B50b3EeB012605598bB45Fc2Be853b9AFEEf", - "transactionIndex": 99, - "gasUsed": "622245", - "logsBloom": "0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000800000000000000000000000000000400000000000000800000000000000000000000000040000000000000000000000000000000000080000000000020000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000800", - "blockHash": "0x1695e78f240fbd2c3cb51fcbf602bba30a2ab326aaaa1d4d0a82445b88e992db", - "transactionHash": "0xe5f6eb1f53fb632519eb85e168454e1357d3ebbda0536e2d3b06dcff44f8932a", - "logs": [ - { - "transactionIndex": 99, - "blockNumber": 19276211, - "transactionHash": "0xe5f6eb1f53fb632519eb85e168454e1357d3ebbda0536e2d3b06dcff44f8932a", - "address": "0xd082B50b3EeB012605598bB45Fc2Be853b9AFEEf", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x00000000000000000000000024d3d52332834dde93692d9ede4679fe920d2afc" - ], - "data": "0x", - "logIndex": 181, - "blockHash": "0x1695e78f240fbd2c3cb51fcbf602bba30a2ab326aaaa1d4d0a82445b88e992db" - }, - { - "transactionIndex": 99, - "blockNumber": 19276211, - "transactionHash": "0xe5f6eb1f53fb632519eb85e168454e1357d3ebbda0536e2d3b06dcff44f8932a", - "address": "0xd082B50b3EeB012605598bB45Fc2Be853b9AFEEf", - "topics": ["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000567e4cc5e085d09f66f836fa8279f38b4e5866b9", - "logIndex": 182, - "blockHash": "0x1695e78f240fbd2c3cb51fcbf602bba30a2ab326aaaa1d4d0a82445b88e992db" - } - ], - "blockNumber": 19276211, - "cumulativeGasUsed": "7726843", - "status": 1, - "byzantium": true - }, - "args": ["0x24D3D52332834ddE93692D9ede4679FE920d2afC", "0x567e4cc5e085d09f66f836fa8279f38b4e5866b9", "0x"], - "numDeployments": 1, - "solcInputHash": "0e89febeebc7444140de8e67c9067d2c", - "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_logic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"implementation_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \\\"admin cannot fallback to proxy target\\\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\",\"kind\":\"dev\",\"methods\":{\"admin()\":{\"details\":\"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\"},\"constructor\":{\"details\":\"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\"},\"implementation()\":{\"details\":\"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\"},\"upgradeTo(address)\":{\"details\":\"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\"},\"upgradeToAndCall(address,bytes)\":{\"details\":\"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol\":\"OptimizedTransparentUpgradeableProxy\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x93b4e21c931252739a1ec13ea31d3d35a5c068be3163ccab83e4d70c40355f03\",\"license\":\"MIT\"},\"solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializating the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256(\\\"eip1967.proxy.implementation\\\")) - 1));\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n\",\"keccak256\":\"0x6309f9f39dc6f4f45a24f296543867aa358e32946cd6b2874627a996d606b3a0\",\"license\":\"MIT\"},\"solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967Upgrade {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view virtual returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Emitted when the beacon is upgraded.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(Address.isContract(IBeacon(newBeacon).implementation()), \\\"ERC1967: beacon implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(\\n address newBeacon,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x17668652127feebed0ce8d9431ef95ccc8c4292f03e3b8cf06c6ca16af396633\",\"license\":\"MIT\"},\"solc_0.8/openzeppelin/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internall call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overriden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xd5d1fd16e9faff7fcb3a52e02a8d49156f42a38a03f07b5f1810c21c2149a8ab\",\"license\":\"MIT\"},\"solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"solc_0.8/openzeppelin/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n }\\n}\\n\",\"keccak256\":\"0x3777e696b62134e6177440dbe6e6601c0c156a443f57167194b67e75527439de\",\"license\":\"MIT\"},\"solc_0.8/openzeppelin/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/StorageSlot.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xfe1b7a9aa2a530a9e705b220e26cd584e2fbdc9602a3a1066032b12816b46aca\",\"license\":\"MIT\"},\"solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/transparent/TransparentUpgradeableProxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../openzeppelin/proxy/ERC1967/ERC1967Proxy.sol\\\";\\n\\n/**\\n * @dev This contract implements a proxy that is upgradeable by an admin.\\n *\\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\\n * clashing], which can potentially be used in an attack, this contract uses the\\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\\n * things that go hand in hand:\\n *\\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\\n * that call matches one of the admin functions exposed by the proxy itself.\\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\\n * \\\"admin cannot fallback to proxy target\\\".\\n *\\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\\n * the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due\\n * to sudden errors when trying to call a function from the proxy implementation.\\n *\\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\\n */\\ncontract OptimizedTransparentUpgradeableProxy is ERC1967Proxy {\\n address internal immutable _ADMIN;\\n\\n /**\\n * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\\n * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\\n */\\n constructor(\\n address _logic,\\n address admin_,\\n bytes memory _data\\n ) payable ERC1967Proxy(_logic, _data) {\\n assert(_ADMIN_SLOT == bytes32(uint256(keccak256(\\\"eip1967.proxy.admin\\\")) - 1));\\n _ADMIN = admin_;\\n\\n // still store it to work with EIP-1967\\n bytes32 slot = _ADMIN_SLOT;\\n // solhint-disable-next-line no-inline-assembly\\n assembly {\\n sstore(slot, admin_)\\n }\\n emit AdminChanged(address(0), admin_);\\n }\\n\\n /**\\n * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\\n */\\n modifier ifAdmin() {\\n if (msg.sender == _getAdmin()) {\\n _;\\n } else {\\n _fallback();\\n }\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n */\\n function admin() external ifAdmin returns (address admin_) {\\n admin_ = _getAdmin();\\n }\\n\\n /**\\n * @dev Returns the current implementation.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\\n */\\n function implementation() external ifAdmin returns (address implementation_) {\\n implementation_ = _implementation();\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\\n */\\n function upgradeTo(address newImplementation) external ifAdmin {\\n _upgradeToAndCall(newImplementation, bytes(\\\"\\\"), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\\n * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\\n * proxied contract.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\\n */\\n function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {\\n _upgradeToAndCall(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _admin() internal view virtual returns (address) {\\n return _getAdmin();\\n }\\n\\n /**\\n * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.\\n */\\n function _beforeFallback() internal virtual override {\\n require(msg.sender != _getAdmin(), \\\"TransparentUpgradeableProxy: admin cannot fallback to proxy target\\\");\\n super._beforeFallback();\\n }\\n\\n function _getAdmin() internal view virtual override returns (address) {\\n return _ADMIN;\\n }\\n}\\n\",\"keccak256\":\"0xa30117644e27fa5b49e162aae2f62b36c1aca02f801b8c594d46e2024963a534\",\"license\":\"MIT\"}},\"version\":1}", - "bytecode": "0x60a060405260405162000f5f38038062000f5f83398101604081905262000026916200044a565b82816200005560017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd6200052a565b60008051602062000f188339815191521462000075576200007562000550565b62000083828260006200013c565b50620000b3905060017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61046200052a565b60008051602062000ef883398151915214620000d357620000d362000550565b6001600160a01b038216608081905260008051602062000ef88339815191528381556040805160008152602081019390935290917f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a150505050620005b9565b620001478362000179565b600082511180620001555750805b156200017457620001728383620001bb60201b620002a91760201c565b505b505050565b6200018481620001ea565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060620001e3838360405180606001604052806027815260200162000f3860279139620002b2565b9392505050565b62000200816200039860201b620002d51760201c565b620002685760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806200029160008051602062000f1883398151915260001b620003a760201b620002411760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606001600160a01b0384163b6200031c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016200025f565b600080856001600160a01b03168560405162000339919062000566565b600060405180830381855af49150503d806000811462000376576040519150601f19603f3d011682016040523d82523d6000602084013e6200037b565b606091505b5090925090506200038e828286620003aa565b9695505050505050565b6001600160a01b03163b151590565b90565b60608315620003bb575081620001e3565b825115620003cc5782518084602001fd5b8160405162461bcd60e51b81526004016200025f919062000584565b80516001600160a01b03811681146200040057600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620004385781810151838201526020016200041e565b83811115620001725750506000910152565b6000806000606084860312156200046057600080fd5b6200046b84620003e8565b92506200047b60208501620003e8565b60408501519092506001600160401b03808211156200049957600080fd5b818601915086601f830112620004ae57600080fd5b815181811115620004c357620004c362000405565b604051601f8201601f19908116603f01168101908382118183101715620004ee57620004ee62000405565b816040528281528960208487010111156200050857600080fd5b6200051b8360208301602088016200041b565b80955050505050509250925092565b6000828210156200054b57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b600082516200057a8184602087016200041b565b9190910192915050565b6020815260008251806020840152620005a58160408501602087016200041b565b601f01601f19169190910160400192915050565b608051610900620005f86000396000818161011201528181610176015281816102060152818161025e01528181610287015261030901526109006000f3fe6080604052600436106100435760003560e01c80633659cfe61461005a5780634f1ef2861461007a5780635c60da1b1461008d578063f851a440146100cb57610052565b36610052576100506100e0565b005b6100506100e0565b34801561006657600080fd5b5061005061007536600461076c565b6100fa565b610050610088366004610787565b61015e565b34801561009957600080fd5b506100a26101ec565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100d757600080fd5b506100a2610244565b6100e86102f1565b6100f86100f36103e2565b610422565b565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614156101565761015381604051806020016040528060008152506000610446565b50565b6101536100e0565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614156101e4576101df8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610446915050565b505050565b6101df6100e0565b60003373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161415610239576102346103e2565b905090565b6102416100e0565b90565b60003373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016141561023957507f000000000000000000000000000000000000000000000000000000000000000090565b60606102ce83836040518060600160405280602781526020016108a460279139610471565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614156100f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b60006102347f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b3660008037600080366000845af43d6000803e808015610441573d6000f35b3d6000fd5b61044f83610599565b60008251118061045c5750805b156101df5761046b83836102a9565b50505050565b606073ffffffffffffffffffffffffffffffffffffffff84163b610517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e7472616374000000000000000000000000000000000000000000000000000060648201526084016103d9565b6000808573ffffffffffffffffffffffffffffffffffffffff168560405161053f9190610836565b600060405180830381855af49150503d806000811461057a576040519150601f19603f3d011682016040523d82523d6000602084013e61057f565b606091505b509150915061058f8282866105e6565b9695505050505050565b6105a281610639565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606083156105f55750816102ce565b8251156106055782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d99190610852565b73ffffffffffffffffffffffffffffffffffffffff81163b6106dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103d9565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461076757600080fd5b919050565b60006020828403121561077e57600080fd5b6102ce82610743565b60008060006040848603121561079c57600080fd5b6107a584610743565b9250602084013567ffffffffffffffff808211156107c257600080fd5b818601915086601f8301126107d657600080fd5b8135818111156107e557600080fd5b8760208285010111156107f757600080fd5b6020830194508093505050509250925092565b60005b8381101561082557818101518382015260200161080d565b8381111561046b5750506000910152565b6000825161084881846020870161080a565b9190910192915050565b602081526000825180602084015261087181604085016020870161080a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206f70214c51cdd41c05ba0ffeb72b309ca3c8be178fd6e73c12162330799984f364736f6c634300080a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564", - "deployedBytecode": "0x6080604052600436106100435760003560e01c80633659cfe61461005a5780634f1ef2861461007a5780635c60da1b1461008d578063f851a440146100cb57610052565b36610052576100506100e0565b005b6100506100e0565b34801561006657600080fd5b5061005061007536600461076c565b6100fa565b610050610088366004610787565b61015e565b34801561009957600080fd5b506100a26101ec565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100d757600080fd5b506100a2610244565b6100e86102f1565b6100f86100f36103e2565b610422565b565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614156101565761015381604051806020016040528060008152506000610446565b50565b6101536100e0565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614156101e4576101df8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610446915050565b505050565b6101df6100e0565b60003373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161415610239576102346103e2565b905090565b6102416100e0565b90565b60003373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016141561023957507f000000000000000000000000000000000000000000000000000000000000000090565b60606102ce83836040518060600160405280602781526020016108a460279139610471565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614156100f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b60006102347f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b3660008037600080366000845af43d6000803e808015610441573d6000f35b3d6000fd5b61044f83610599565b60008251118061045c5750805b156101df5761046b83836102a9565b50505050565b606073ffffffffffffffffffffffffffffffffffffffff84163b610517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e7472616374000000000000000000000000000000000000000000000000000060648201526084016103d9565b6000808573ffffffffffffffffffffffffffffffffffffffff168560405161053f9190610836565b600060405180830381855af49150503d806000811461057a576040519150601f19603f3d011682016040523d82523d6000602084013e61057f565b606091505b509150915061058f8282866105e6565b9695505050505050565b6105a281610639565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606083156105f55750816102ce565b8251156106055782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d99190610852565b73ffffffffffffffffffffffffffffffffffffffff81163b6106dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103d9565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461076757600080fd5b919050565b60006020828403121561077e57600080fd5b6102ce82610743565b60008060006040848603121561079c57600080fd5b6107a584610743565b9250602084013567ffffffffffffffff808211156107c257600080fd5b818601915086601f8301126107d657600080fd5b8135818111156107e557600080fd5b8760208285010111156107f757600080fd5b6020830194508093505050509250925092565b60005b8381101561082557818101518382015260200161080d565b8381111561046b5750506000910152565b6000825161084881846020870161080a565b9190910192915050565b602081526000825180602084015261087181604085016020870161080a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206f70214c51cdd41c05ba0ffeb72b309ca3c8be178fd6e73c12162330799984f364736f6c634300080a0033", - "devdoc": { - "details": "This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \"admin cannot fallback to proxy target\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.", - "kind": "dev", - "methods": { - "admin()": { - "details": "Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`" - }, - "constructor": { - "details": "Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}." - }, - "implementation()": { - "details": "Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`" - }, - "upgradeTo(address)": { - "details": "Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}." - }, - "upgradeToAndCall(address,bytes)": { - "details": "Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}." - } - }, - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": {}, - "version": 1 - }, - "storageLayout": { - "storage": [], - "types": null - } -} From 25411038a1c2afb632d5377874349f62b98e03eb Mon Sep 17 00:00:00 2001 From: web3rover <7037606+web3rover@users.noreply.github.com> Date: Mon, 30 Jun 2025 07:29:28 +0000 Subject: [PATCH 10/24] feat: updating deployment files --- deployments/ethereum.json | 840 ++++++++++++++++++++++++++++ deployments/ethereum_addresses.json | 2 + deployments/sepolia.json | 420 ++++++++++++++ deployments/sepolia_addresses.json | 1 + 4 files changed, 1263 insertions(+) diff --git a/deployments/ethereum.json b/deployments/ethereum.json index 314da5cf..71003e13 100644 --- a/deployments/ethereum.json +++ b/deployments/ethereum.json @@ -11772,6 +11772,846 @@ } ] }, + "WstETHOracle_Equivalence": { + "address": "0x6b51Ee3aF70b350AaADc05f418502b330c5Aad7c", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "stETH", + "type": "address" + }, + { + "internalType": "address", + "name": "wstETH", + "type": "address" + }, + { + "internalType": "address", + "name": "underlyingToken", + "type": "address" + }, + { + "internalType": "address", + "name": "resilientOracle", + "type": "address" + }, + { + "internalType": "uint256", + "name": "annualGrowthRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_snapshotInterval", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "initialSnapshotMaxExchangeRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "initialSnapshotTimestamp", + "type": "uint256" + }, + { + "internalType": "address", + "name": "accessControlManager", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_snapshotGap", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "InvalidGrowthRate", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialSnapshot", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidSnapshotMaxExchangeRate", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidTokenAddress", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "calledContract", + "type": "address" + }, + { + "internalType": "string", + "name": "methodSignature", + "type": "string" + } + ], + "name": "Unauthorized", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroAddressNotAllowed", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "oldGrowthRatePerSecond", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newGrowthRatePerSecond", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "oldSnapshotInterval", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newSnapshotInterval", + "type": "uint256" + } + ], + "name": "GrowthRateUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "oldSnapshotGap", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newSnapshotGap", + "type": "uint256" + } + ], + "name": "SnapshotGapUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "maxExchangeRate", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "name": "SnapshotUpdated", + "type": "event" + }, + { + "inputs": [], + "name": "ACCESS_CONTROL_MANAGER", + "outputs": [ + { + "internalType": "contract IAccessControlManagerV8", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "CORRELATED_TOKEN", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "RESILIENT_ORACLE", + "outputs": [ + { + "internalType": "contract ResilientOracleInterface", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "STETH", + "outputs": [ + { + "internalType": "contract IStETH", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UNDERLYING_TOKEN", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getMaxAllowedExchangeRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "getPrice", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getUnderlyingAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "growthRatePerSecond", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "isCapped", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_annualGrowthRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_snapshotInterval", + "type": "uint256" + } + ], + "name": "setGrowthRate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_snapshotMaxExchangeRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_snapshotTimestamp", + "type": "uint256" + } + ], + "name": "setSnapshot", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_snapshotGap", + "type": "uint256" + } + ], + "name": "setSnapshotGap", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "snapshotGap", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "snapshotInterval", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "snapshotMaxExchangeRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "snapshotTimestamp", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "updateSnapshot", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ] + }, + "WstETHOracle_NonEquivalence": { + "address": "0x6ecf38558B0D1fFc6Ea28bEC6BD39F9F0Fdd6631", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "stETH", + "type": "address" + }, + { + "internalType": "address", + "name": "wstETH", + "type": "address" + }, + { + "internalType": "address", + "name": "underlyingToken", + "type": "address" + }, + { + "internalType": "address", + "name": "resilientOracle", + "type": "address" + }, + { + "internalType": "uint256", + "name": "annualGrowthRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_snapshotInterval", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "initialSnapshotMaxExchangeRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "initialSnapshotTimestamp", + "type": "uint256" + }, + { + "internalType": "address", + "name": "accessControlManager", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_snapshotGap", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "InvalidGrowthRate", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialSnapshot", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidSnapshotMaxExchangeRate", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidTokenAddress", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "calledContract", + "type": "address" + }, + { + "internalType": "string", + "name": "methodSignature", + "type": "string" + } + ], + "name": "Unauthorized", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroAddressNotAllowed", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "oldGrowthRatePerSecond", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newGrowthRatePerSecond", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "oldSnapshotInterval", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newSnapshotInterval", + "type": "uint256" + } + ], + "name": "GrowthRateUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "oldSnapshotGap", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newSnapshotGap", + "type": "uint256" + } + ], + "name": "SnapshotGapUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "maxExchangeRate", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "name": "SnapshotUpdated", + "type": "event" + }, + { + "inputs": [], + "name": "ACCESS_CONTROL_MANAGER", + "outputs": [ + { + "internalType": "contract IAccessControlManagerV8", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "CORRELATED_TOKEN", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "RESILIENT_ORACLE", + "outputs": [ + { + "internalType": "contract ResilientOracleInterface", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "STETH", + "outputs": [ + { + "internalType": "contract IStETH", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UNDERLYING_TOKEN", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getMaxAllowedExchangeRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "getPrice", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getUnderlyingAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "growthRatePerSecond", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "isCapped", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_annualGrowthRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_snapshotInterval", + "type": "uint256" + } + ], + "name": "setGrowthRate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_snapshotMaxExchangeRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_snapshotTimestamp", + "type": "uint256" + } + ], + "name": "setSnapshot", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_snapshotGap", + "type": "uint256" + } + ], + "name": "setSnapshotGap", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "snapshotGap", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "snapshotInterval", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "snapshotMaxExchangeRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "snapshotTimestamp", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "updateSnapshot", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ] + }, "eBTCAccountantOracle": { "address": "0x04d6096A6F089047C7af6E4644D18fB766B8d4cE", "abi": [ diff --git a/deployments/ethereum_addresses.json b/deployments/ethereum_addresses.json index d9299998..f2d20cb9 100644 --- a/deployments/ethereum_addresses.json +++ b/deployments/ethereum_addresses.json @@ -33,6 +33,8 @@ "WeETHAccountantOracle_weETHs": "0x47F7A7f3486b08A019E0c10Af969ADC4B6E415Cd", "WeETHOracle_Equivalence": "0xaB663D4a701229DFF407Eb4B45007921029072e9", "WeETHOracle_NonEquivalence": "0x92469958A4C00101F9F290cc3AC32959Af497EAf", + "WstETHOracle_Equivalence": "0x6b51Ee3aF70b350AaADc05f418502b330c5Aad7c", + "WstETHOracle_NonEquivalence": "0x6ecf38558B0D1fFc6Ea28bEC6BD39F9F0Fdd6631", "eBTCAccountantOracle": "0x04d6096A6F089047C7af6E4644D18fB766B8d4cE", "ezETHOneJumpChainlinkOracle": "0x84FAe9909Fa1F259CB23Fa14FCdd1a35A0FE7EB8", "ezETHOneJumpRedStoneOracle": "0xA6efeF98D9C4E9FF8193f80FbABF92AD92D50500", diff --git a/deployments/sepolia.json b/deployments/sepolia.json index 12f8d8a9..ff0b6c66 100644 --- a/deployments/sepolia.json +++ b/deployments/sepolia.json @@ -10244,6 +10244,426 @@ } ] }, + "WstETHOracle": { + "address": "0xA33f06dB4c0DD8E41BA3d2C8917a27e6B9200662", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "stETH", + "type": "address" + }, + { + "internalType": "address", + "name": "wstETH", + "type": "address" + }, + { + "internalType": "address", + "name": "underlyingToken", + "type": "address" + }, + { + "internalType": "address", + "name": "resilientOracle", + "type": "address" + }, + { + "internalType": "uint256", + "name": "annualGrowthRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_snapshotInterval", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "initialSnapshotMaxExchangeRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "initialSnapshotTimestamp", + "type": "uint256" + }, + { + "internalType": "address", + "name": "accessControlManager", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_snapshotGap", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "InvalidGrowthRate", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialSnapshot", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidSnapshotMaxExchangeRate", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidTokenAddress", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "calledContract", + "type": "address" + }, + { + "internalType": "string", + "name": "methodSignature", + "type": "string" + } + ], + "name": "Unauthorized", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroAddressNotAllowed", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "oldGrowthRatePerSecond", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newGrowthRatePerSecond", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "oldSnapshotInterval", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newSnapshotInterval", + "type": "uint256" + } + ], + "name": "GrowthRateUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "oldSnapshotGap", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newSnapshotGap", + "type": "uint256" + } + ], + "name": "SnapshotGapUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "maxExchangeRate", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "name": "SnapshotUpdated", + "type": "event" + }, + { + "inputs": [], + "name": "ACCESS_CONTROL_MANAGER", + "outputs": [ + { + "internalType": "contract IAccessControlManagerV8", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "CORRELATED_TOKEN", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "RESILIENT_ORACLE", + "outputs": [ + { + "internalType": "contract ResilientOracleInterface", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "STETH", + "outputs": [ + { + "internalType": "contract IStETH", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UNDERLYING_TOKEN", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getMaxAllowedExchangeRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "getPrice", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getUnderlyingAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "growthRatePerSecond", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "isCapped", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_annualGrowthRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_snapshotInterval", + "type": "uint256" + } + ], + "name": "setGrowthRate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_snapshotMaxExchangeRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_snapshotTimestamp", + "type": "uint256" + } + ], + "name": "setSnapshot", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_snapshotGap", + "type": "uint256" + } + ], + "name": "setSnapshotGap", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "snapshotGap", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "snapshotInterval", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "snapshotMaxExchangeRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "snapshotTimestamp", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "updateSnapshot", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ] + }, "eBTCAccountantOracle": { "address": "0x51Fa73926Cd9456A94221b70428aa94F009a5b81", "abi": [ diff --git a/deployments/sepolia_addresses.json b/deployments/sepolia_addresses.json index 8227b192..8d4a61ff 100644 --- a/deployments/sepolia_addresses.json +++ b/deployments/sepolia_addresses.json @@ -33,6 +33,7 @@ "SFrxETHOracle_Proxy": "0x61EB836afA467677e6b403D504fe69D6940e7996", "WeETHAccountantOracle_weETHs": "0x660c6d8C5FDDC4F47C749E0f7e03634513f23e0e", "WeETHOracle": "0xf3ebD2A722c2039E6f66179Ad7F9f1462B14D8e0", + "WstETHOracle": "0xA33f06dB4c0DD8E41BA3d2C8917a27e6B9200662", "eBTCAccountantOracle": "0x51Fa73926Cd9456A94221b70428aa94F009a5b81", "ezETHOneJumpChainlinkOracle": "0x50196dfad5030ED54190F75e5F9d88600A4CA0B4", "ezETHOneJumpRedStoneOracle": "0x987010fD82FDCe099174aC605B88E1cc35019ef4", From cf0ff73bc19f1f17e48366b8aebda1ca9130f4df Mon Sep 17 00:00:00 2001 From: web3rover Date: Thu, 7 Aug 2025 14:17:13 +0530 Subject: [PATCH 11/24] fix: removed berachain deployment --- .env.example | 1 - .github/workflows/ci.yml | 2 +- deployments/berachainbepolia.json | 4765 ----------------- deployments/berachainbepolia/.chainId | 1 - .../berachainbepolia/BoundValidator.json | 593 -- .../BoundValidator_Implementation.json | 651 --- .../BoundValidator_Proxy.json | 262 - .../berachainbepolia/ChainlinkOracle.json | 658 --- .../ChainlinkOracle_Implementation.json | 743 --- .../ChainlinkOracle_Proxy.json | 262 - .../berachainbepolia/DefaultProxyAdmin.json | 200 - .../berachainbepolia/RedStoneOracle.json | 658 --- .../RedStoneOracle_Implementation.json | 743 --- .../RedStoneOracle_Proxy.json | 262 - .../berachainbepolia/ResilientOracle.json | 884 --- .../ResilientOracle_Implementation.json | 1113 ---- .../ResilientOracle_Proxy.json | 262 - .../9703a470efb9e8d7aa23c7bd832fbb1c.json | 337 -- deployments/berachainbepolia_addresses.json | 19 - hardhat.config.ts | 15 - helpers/deploymentConfig.ts | 7 - 21 files changed, 1 insertion(+), 12437 deletions(-) delete mode 100644 deployments/berachainbepolia.json delete mode 100644 deployments/berachainbepolia/.chainId delete mode 100644 deployments/berachainbepolia/BoundValidator.json delete mode 100644 deployments/berachainbepolia/BoundValidator_Implementation.json delete mode 100644 deployments/berachainbepolia/BoundValidator_Proxy.json delete mode 100644 deployments/berachainbepolia/ChainlinkOracle.json delete mode 100644 deployments/berachainbepolia/ChainlinkOracle_Implementation.json delete mode 100644 deployments/berachainbepolia/ChainlinkOracle_Proxy.json delete mode 100644 deployments/berachainbepolia/DefaultProxyAdmin.json delete mode 100644 deployments/berachainbepolia/RedStoneOracle.json delete mode 100644 deployments/berachainbepolia/RedStoneOracle_Implementation.json delete mode 100644 deployments/berachainbepolia/RedStoneOracle_Proxy.json delete mode 100644 deployments/berachainbepolia/ResilientOracle.json delete mode 100644 deployments/berachainbepolia/ResilientOracle_Implementation.json delete mode 100644 deployments/berachainbepolia/ResilientOracle_Proxy.json delete mode 100644 deployments/berachainbepolia/solcInputs/9703a470efb9e8d7aa23c7bd832fbb1c.json delete mode 100644 deployments/berachainbepolia_addresses.json diff --git a/.env.example b/.env.example index e364f9ad..5d224f10 100644 --- a/.env.example +++ b/.env.example @@ -23,7 +23,6 @@ ARCHIVE_NODE_ethereum=https://eth-mainnet.nodereal.io/v1/ #ARCHIVE_NODE_basemainnet=https://open-platform.nodereal.io//base #ARCHIVE_NODE_unichainsepolia=https://unichain-sepolia.g.alchemy.com/v2/ #ARCHIVE_NODE_unichainmainnet=https://unichain-mainnet.g.alchemy.com/v2/ -#ARCHIVE_NODE_berachainbepolia=https://berachain-bepolia.g.alchemy.com/v2/ ETHERSCAN_API_KEY= REPORT_GAS= \ No newline at end of file diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 44a5020c..4d9fd17c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -115,7 +115,7 @@ jobs: - name: Export deployments run: | - for NETWORK in bsctestnet bscmainnet ethereum sepolia opbnbtestnet opbnbmainnet arbitrumsepolia arbitrumone opsepolia opmainnet basesepolia basemainnet unichainsepolia unichainmainnet berachainbepolia; do + for NETWORK in bsctestnet bscmainnet ethereum sepolia opbnbtestnet opbnbmainnet arbitrumsepolia arbitrumone opsepolia opmainnet basesepolia basemainnet unichainsepolia unichainmainnet; do EXPORT=true yarn hardhat export --network ${NETWORK} --export ./deployments/${NETWORK}.json jq -M '{name, chainId, addresses: .contracts | map_values(.address)}' ./deployments/${NETWORK}.json > ./deployments/${NETWORK}_addresses.json done diff --git a/deployments/berachainbepolia.json b/deployments/berachainbepolia.json deleted file mode 100644 index 3c127745..00000000 --- a/deployments/berachainbepolia.json +++ /dev/null @@ -1,4765 +0,0 @@ -{ - "name": "berachainbepolia", - "chainId": "80069", - "contracts": { - "BoundValidator": { - "address": "0xd3A635930300ea87548A1C3428Ac5DDfE3FFE66E", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "beacon", - "type": "address" - } - ], - "name": "BeaconUpgraded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "stateMutability": "payable", - "type": "fallback" - }, - { - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "admin_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "implementation_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "stateMutability": "payable", - "type": "receive" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "internalType": "address", - "name": "calledContract", - "type": "address" - }, - { - "internalType": "string", - "name": "methodSignature", - "type": "string" - } - ], - "name": "Unauthorized", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "version", - "type": "uint8" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "oldAccessControlManager", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAccessControlManager", - "type": "address" - } - ], - "name": "NewAccessControlManager", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferStarted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "upperBound", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "lowerBound", - "type": "uint256" - } - ], - "name": "ValidateConfigAdded", - "type": "event" - }, - { - "inputs": [], - "name": "acceptOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "accessControlManager", - "outputs": [ - { - "internalType": "contract IAccessControlManagerV8", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "accessControlManager_", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "accessControlManager_", - "type": "address" - } - ], - "name": "setAccessControlManager", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "uint256", - "name": "upperBoundRatio", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lowerBoundRatio", - "type": "uint256" - } - ], - "internalType": "struct BoundValidator.ValidateConfig", - "name": "config", - "type": "tuple" - } - ], - "name": "setValidateConfig", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "uint256", - "name": "upperBoundRatio", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lowerBoundRatio", - "type": "uint256" - } - ], - "internalType": "struct BoundValidator.ValidateConfig[]", - "name": "configs", - "type": "tuple[]" - } - ], - "name": "setValidateConfigs", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "validateConfigs", - "outputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "uint256", - "name": "upperBoundRatio", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lowerBoundRatio", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "uint256", - "name": "reportedPrice", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "anchorPrice", - "type": "uint256" - } - ], - "name": "validatePriceWithAnchorPrice", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "admin_", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "stateMutability": "payable", - "type": "constructor" - } - ] - }, - "BoundValidator_Implementation": { - "address": "0xd24c0795BaEA6D79a45def90889bc4Dd4fd19a62", - "abi": [ - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "internalType": "address", - "name": "calledContract", - "type": "address" - }, - { - "internalType": "string", - "name": "methodSignature", - "type": "string" - } - ], - "name": "Unauthorized", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "version", - "type": "uint8" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "oldAccessControlManager", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAccessControlManager", - "type": "address" - } - ], - "name": "NewAccessControlManager", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferStarted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "upperBound", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "lowerBound", - "type": "uint256" - } - ], - "name": "ValidateConfigAdded", - "type": "event" - }, - { - "inputs": [], - "name": "acceptOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "accessControlManager", - "outputs": [ - { - "internalType": "contract IAccessControlManagerV8", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "accessControlManager_", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "accessControlManager_", - "type": "address" - } - ], - "name": "setAccessControlManager", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "uint256", - "name": "upperBoundRatio", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lowerBoundRatio", - "type": "uint256" - } - ], - "internalType": "struct BoundValidator.ValidateConfig", - "name": "config", - "type": "tuple" - } - ], - "name": "setValidateConfig", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "uint256", - "name": "upperBoundRatio", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lowerBoundRatio", - "type": "uint256" - } - ], - "internalType": "struct BoundValidator.ValidateConfig[]", - "name": "configs", - "type": "tuple[]" - } - ], - "name": "setValidateConfigs", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "validateConfigs", - "outputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "uint256", - "name": "upperBoundRatio", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lowerBoundRatio", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "uint256", - "name": "reportedPrice", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "anchorPrice", - "type": "uint256" - } - ], - "name": "validatePriceWithAnchorPrice", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - } - ] - }, - "BoundValidator_Proxy": { - "address": "0xd3A635930300ea87548A1C3428Ac5DDfE3FFE66E", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "admin_", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "stateMutability": "payable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "beacon", - "type": "address" - } - ], - "name": "BeaconUpgraded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "stateMutability": "payable", - "type": "fallback" - }, - { - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "admin_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "implementation_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "stateMutability": "payable", - "type": "receive" - } - ] - }, - "ChainlinkOracle": { - "address": "0xF7451caCcb32E6E3695e4B4bcF42152D57B73aD5", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "beacon", - "type": "address" - } - ], - "name": "BeaconUpgraded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "stateMutability": "payable", - "type": "fallback" - }, - { - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "admin_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "implementation_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "stateMutability": "payable", - "type": "receive" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "internalType": "address", - "name": "calledContract", - "type": "address" - }, - { - "internalType": "string", - "name": "methodSignature", - "type": "string" - } - ], - "name": "Unauthorized", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "version", - "type": "uint8" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "oldAccessControlManager", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAccessControlManager", - "type": "address" - } - ], - "name": "NewAccessControlManager", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferStarted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "previousPriceMantissa", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "newPriceMantissa", - "type": "uint256" - } - ], - "name": "PricePosted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "feed", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "maxStalePeriod", - "type": "uint256" - } - ], - "name": "TokenConfigAdded", - "type": "event" - }, - { - "inputs": [], - "name": "NATIVE_TOKEN_ADDR", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "acceptOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "accessControlManager", - "outputs": [ - { - "internalType": "contract IAccessControlManagerV8", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - } - ], - "name": "getPrice", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "accessControlManager_", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "prices", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "accessControlManager_", - "type": "address" - } - ], - "name": "setAccessControlManager", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "uint256", - "name": "price", - "type": "uint256" - } - ], - "name": "setDirectPrice", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "address", - "name": "feed", - "type": "address" - }, - { - "internalType": "uint256", - "name": "maxStalePeriod", - "type": "uint256" - } - ], - "internalType": "struct ChainlinkOracle.TokenConfig", - "name": "tokenConfig", - "type": "tuple" - } - ], - "name": "setTokenConfig", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "address", - "name": "feed", - "type": "address" - }, - { - "internalType": "uint256", - "name": "maxStalePeriod", - "type": "uint256" - } - ], - "internalType": "struct ChainlinkOracle.TokenConfig[]", - "name": "tokenConfigs_", - "type": "tuple[]" - } - ], - "name": "setTokenConfigs", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "tokenConfigs", - "outputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "address", - "name": "feed", - "type": "address" - }, - { - "internalType": "uint256", - "name": "maxStalePeriod", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "admin_", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "stateMutability": "payable", - "type": "constructor" - } - ] - }, - "ChainlinkOracle_Implementation": { - "address": "0x9eA68754e5AB4717b2b0Dd310f7fA03A9c57c0Df", - "abi": [ - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "internalType": "address", - "name": "calledContract", - "type": "address" - }, - { - "internalType": "string", - "name": "methodSignature", - "type": "string" - } - ], - "name": "Unauthorized", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "version", - "type": "uint8" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "oldAccessControlManager", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAccessControlManager", - "type": "address" - } - ], - "name": "NewAccessControlManager", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferStarted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "previousPriceMantissa", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "newPriceMantissa", - "type": "uint256" - } - ], - "name": "PricePosted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "feed", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "maxStalePeriod", - "type": "uint256" - } - ], - "name": "TokenConfigAdded", - "type": "event" - }, - { - "inputs": [], - "name": "NATIVE_TOKEN_ADDR", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "acceptOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "accessControlManager", - "outputs": [ - { - "internalType": "contract IAccessControlManagerV8", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - } - ], - "name": "getPrice", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "accessControlManager_", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "prices", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "accessControlManager_", - "type": "address" - } - ], - "name": "setAccessControlManager", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "uint256", - "name": "price", - "type": "uint256" - } - ], - "name": "setDirectPrice", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "address", - "name": "feed", - "type": "address" - }, - { - "internalType": "uint256", - "name": "maxStalePeriod", - "type": "uint256" - } - ], - "internalType": "struct ChainlinkOracle.TokenConfig", - "name": "tokenConfig", - "type": "tuple" - } - ], - "name": "setTokenConfig", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "address", - "name": "feed", - "type": "address" - }, - { - "internalType": "uint256", - "name": "maxStalePeriod", - "type": "uint256" - } - ], - "internalType": "struct ChainlinkOracle.TokenConfig[]", - "name": "tokenConfigs_", - "type": "tuple[]" - } - ], - "name": "setTokenConfigs", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "tokenConfigs", - "outputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "address", - "name": "feed", - "type": "address" - }, - { - "internalType": "uint256", - "name": "maxStalePeriod", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ] - }, - "ChainlinkOracle_Proxy": { - "address": "0xF7451caCcb32E6E3695e4B4bcF42152D57B73aD5", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "admin_", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "stateMutability": "payable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "beacon", - "type": "address" - } - ], - "name": "BeaconUpgraded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "stateMutability": "payable", - "type": "fallback" - }, - { - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "admin_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "implementation_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "stateMutability": "payable", - "type": "receive" - } - ] - }, - "DefaultProxyAdmin": { - "address": "0x09f0Cf4eD50ed01994900CE9ee1ae85BFECd5c66", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "initialOwner", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "contract TransparentUpgradeableProxy", - "name": "proxy", - "type": "address" - }, - { - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "changeProxyAdmin", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "contract TransparentUpgradeableProxy", - "name": "proxy", - "type": "address" - } - ], - "name": "getProxyAdmin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "contract TransparentUpgradeableProxy", - "name": "proxy", - "type": "address" - } - ], - "name": "getProxyImplementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "contract TransparentUpgradeableProxy", - "name": "proxy", - "type": "address" - }, - { - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "upgrade", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "contract TransparentUpgradeableProxy", - "name": "proxy", - "type": "address" - }, - { - "internalType": "address", - "name": "implementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeAndCall", - "outputs": [], - "stateMutability": "payable", - "type": "function" - } - ] - }, - "RedStoneOracle": { - "address": "0xedc00668FC314fcc85a574c8DBa0BB205810F247", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "beacon", - "type": "address" - } - ], - "name": "BeaconUpgraded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "stateMutability": "payable", - "type": "fallback" - }, - { - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "admin_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "implementation_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "stateMutability": "payable", - "type": "receive" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "internalType": "address", - "name": "calledContract", - "type": "address" - }, - { - "internalType": "string", - "name": "methodSignature", - "type": "string" - } - ], - "name": "Unauthorized", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "version", - "type": "uint8" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "oldAccessControlManager", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAccessControlManager", - "type": "address" - } - ], - "name": "NewAccessControlManager", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferStarted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "previousPriceMantissa", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "newPriceMantissa", - "type": "uint256" - } - ], - "name": "PricePosted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "feed", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "maxStalePeriod", - "type": "uint256" - } - ], - "name": "TokenConfigAdded", - "type": "event" - }, - { - "inputs": [], - "name": "NATIVE_TOKEN_ADDR", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "acceptOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "accessControlManager", - "outputs": [ - { - "internalType": "contract IAccessControlManagerV8", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - } - ], - "name": "getPrice", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "accessControlManager_", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "prices", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "accessControlManager_", - "type": "address" - } - ], - "name": "setAccessControlManager", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "uint256", - "name": "price", - "type": "uint256" - } - ], - "name": "setDirectPrice", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "address", - "name": "feed", - "type": "address" - }, - { - "internalType": "uint256", - "name": "maxStalePeriod", - "type": "uint256" - } - ], - "internalType": "struct ChainlinkOracle.TokenConfig", - "name": "tokenConfig", - "type": "tuple" - } - ], - "name": "setTokenConfig", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "address", - "name": "feed", - "type": "address" - }, - { - "internalType": "uint256", - "name": "maxStalePeriod", - "type": "uint256" - } - ], - "internalType": "struct ChainlinkOracle.TokenConfig[]", - "name": "tokenConfigs_", - "type": "tuple[]" - } - ], - "name": "setTokenConfigs", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "tokenConfigs", - "outputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "address", - "name": "feed", - "type": "address" - }, - { - "internalType": "uint256", - "name": "maxStalePeriod", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "admin_", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "stateMutability": "payable", - "type": "constructor" - } - ] - }, - "RedStoneOracle_Implementation": { - "address": "0x33baAA71Fdb915275908c80A383874096c5ecdEa", - "abi": [ - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "internalType": "address", - "name": "calledContract", - "type": "address" - }, - { - "internalType": "string", - "name": "methodSignature", - "type": "string" - } - ], - "name": "Unauthorized", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "version", - "type": "uint8" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "oldAccessControlManager", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAccessControlManager", - "type": "address" - } - ], - "name": "NewAccessControlManager", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferStarted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "previousPriceMantissa", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "newPriceMantissa", - "type": "uint256" - } - ], - "name": "PricePosted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "feed", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "maxStalePeriod", - "type": "uint256" - } - ], - "name": "TokenConfigAdded", - "type": "event" - }, - { - "inputs": [], - "name": "NATIVE_TOKEN_ADDR", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "acceptOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "accessControlManager", - "outputs": [ - { - "internalType": "contract IAccessControlManagerV8", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - } - ], - "name": "getPrice", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "accessControlManager_", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "prices", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "accessControlManager_", - "type": "address" - } - ], - "name": "setAccessControlManager", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "uint256", - "name": "price", - "type": "uint256" - } - ], - "name": "setDirectPrice", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "address", - "name": "feed", - "type": "address" - }, - { - "internalType": "uint256", - "name": "maxStalePeriod", - "type": "uint256" - } - ], - "internalType": "struct ChainlinkOracle.TokenConfig", - "name": "tokenConfig", - "type": "tuple" - } - ], - "name": "setTokenConfig", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "address", - "name": "feed", - "type": "address" - }, - { - "internalType": "uint256", - "name": "maxStalePeriod", - "type": "uint256" - } - ], - "internalType": "struct ChainlinkOracle.TokenConfig[]", - "name": "tokenConfigs_", - "type": "tuple[]" - } - ], - "name": "setTokenConfigs", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "tokenConfigs", - "outputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "address", - "name": "feed", - "type": "address" - }, - { - "internalType": "uint256", - "name": "maxStalePeriod", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ] - }, - "RedStoneOracle_Proxy": { - "address": "0xedc00668FC314fcc85a574c8DBa0BB205810F247", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "admin_", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "stateMutability": "payable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "beacon", - "type": "address" - } - ], - "name": "BeaconUpgraded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "stateMutability": "payable", - "type": "fallback" - }, - { - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "admin_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "implementation_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "stateMutability": "payable", - "type": "receive" - } - ] - }, - "ResilientOracle": { - "address": "0x150B667d42FB80409f162aB84065f0c8E9B3A7a0", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "beacon", - "type": "address" - } - ], - "name": "BeaconUpgraded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "stateMutability": "payable", - "type": "fallback" - }, - { - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "admin_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "implementation_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "stateMutability": "payable", - "type": "receive" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "internalType": "address", - "name": "calledContract", - "type": "address" - }, - { - "internalType": "string", - "name": "methodSignature", - "type": "string" - } - ], - "name": "Unauthorized", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "version", - "type": "uint8" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "oldAccessControlManager", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAccessControlManager", - "type": "address" - } - ], - "name": "NewAccessControlManager", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "role", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "bool", - "name": "enable", - "type": "bool" - } - ], - "name": "OracleEnabled", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "oracle", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "role", - "type": "uint256" - } - ], - "name": "OracleSet", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferStarted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "Paused", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "mainOracle", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "pivotOracle", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "fallbackOracle", - "type": "address" - } - ], - "name": "TokenConfigAdded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "Unpaused", - "type": "event" - }, - { - "inputs": [], - "name": "INVALID_PRICE", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "NATIVE_TOKEN_ADDR", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "acceptOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "accessControlManager", - "outputs": [ - { - "internalType": "contract IAccessControlManagerV8", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "boundValidator", - "outputs": [ - { - "internalType": "contract BoundValidatorInterface", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "enum ResilientOracle.OracleRole", - "name": "role", - "type": "uint8" - }, - { - "internalType": "bool", - "name": "enable", - "type": "bool" - } - ], - "name": "enableOracle", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "enum ResilientOracle.OracleRole", - "name": "role", - "type": "uint8" - } - ], - "name": "getOracle", - "outputs": [ - { - "internalType": "address", - "name": "oracle", - "type": "address" - }, - { - "internalType": "bool", - "name": "enabled", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - } - ], - "name": "getPrice", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - } - ], - "name": "getTokenConfig", - "outputs": [ - { - "components": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "address[3]", - "name": "oracles", - "type": "address[3]" - }, - { - "internalType": "bool[3]", - "name": "enableFlagsForOracles", - "type": "bool[3]" - } - ], - "internalType": "struct ResilientOracle.TokenConfig", - "name": "", - "type": "tuple" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "vToken", - "type": "address" - } - ], - "name": "getUnderlyingPrice", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "accessControlManager_", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "nativeMarket", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "pause", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "paused", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "accessControlManager_", - "type": "address" - } - ], - "name": "setAccessControlManager", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "address", - "name": "oracle", - "type": "address" - }, - { - "internalType": "enum ResilientOracle.OracleRole", - "name": "role", - "type": "uint8" - } - ], - "name": "setOracle", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "address[3]", - "name": "oracles", - "type": "address[3]" - }, - { - "internalType": "bool[3]", - "name": "enableFlagsForOracles", - "type": "bool[3]" - } - ], - "internalType": "struct ResilientOracle.TokenConfig", - "name": "tokenConfig", - "type": "tuple" - } - ], - "name": "setTokenConfig", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "address[3]", - "name": "oracles", - "type": "address[3]" - }, - { - "internalType": "bool[3]", - "name": "enableFlagsForOracles", - "type": "bool[3]" - } - ], - "internalType": "struct ResilientOracle.TokenConfig[]", - "name": "tokenConfigs_", - "type": "tuple[]" - } - ], - "name": "setTokenConfigs", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "unpause", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - } - ], - "name": "updateAssetPrice", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "vToken", - "type": "address" - } - ], - "name": "updatePrice", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "vai", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "admin_", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "stateMutability": "payable", - "type": "constructor" - } - ] - }, - "ResilientOracle_Implementation": { - "address": "0xffCb974c4E2c9EE9107d966530d485bDBd98bBAA", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "nativeMarketAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "vaiAddress", - "type": "address" - }, - { - "internalType": "contract BoundValidatorInterface", - "name": "_boundValidator", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "internalType": "address", - "name": "calledContract", - "type": "address" - }, - { - "internalType": "string", - "name": "methodSignature", - "type": "string" - } - ], - "name": "Unauthorized", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "version", - "type": "uint8" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "oldAccessControlManager", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAccessControlManager", - "type": "address" - } - ], - "name": "NewAccessControlManager", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "role", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "bool", - "name": "enable", - "type": "bool" - } - ], - "name": "OracleEnabled", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "oracle", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "role", - "type": "uint256" - } - ], - "name": "OracleSet", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferStarted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "Paused", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "mainOracle", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "pivotOracle", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "fallbackOracle", - "type": "address" - } - ], - "name": "TokenConfigAdded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "Unpaused", - "type": "event" - }, - { - "inputs": [], - "name": "INVALID_PRICE", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "NATIVE_TOKEN_ADDR", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "acceptOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "accessControlManager", - "outputs": [ - { - "internalType": "contract IAccessControlManagerV8", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "boundValidator", - "outputs": [ - { - "internalType": "contract BoundValidatorInterface", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "enum ResilientOracle.OracleRole", - "name": "role", - "type": "uint8" - }, - { - "internalType": "bool", - "name": "enable", - "type": "bool" - } - ], - "name": "enableOracle", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "enum ResilientOracle.OracleRole", - "name": "role", - "type": "uint8" - } - ], - "name": "getOracle", - "outputs": [ - { - "internalType": "address", - "name": "oracle", - "type": "address" - }, - { - "internalType": "bool", - "name": "enabled", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - } - ], - "name": "getPrice", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - } - ], - "name": "getTokenConfig", - "outputs": [ - { - "components": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "address[3]", - "name": "oracles", - "type": "address[3]" - }, - { - "internalType": "bool[3]", - "name": "enableFlagsForOracles", - "type": "bool[3]" - } - ], - "internalType": "struct ResilientOracle.TokenConfig", - "name": "", - "type": "tuple" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "vToken", - "type": "address" - } - ], - "name": "getUnderlyingPrice", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "accessControlManager_", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "nativeMarket", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "pause", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "paused", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "accessControlManager_", - "type": "address" - } - ], - "name": "setAccessControlManager", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "address", - "name": "oracle", - "type": "address" - }, - { - "internalType": "enum ResilientOracle.OracleRole", - "name": "role", - "type": "uint8" - } - ], - "name": "setOracle", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "address[3]", - "name": "oracles", - "type": "address[3]" - }, - { - "internalType": "bool[3]", - "name": "enableFlagsForOracles", - "type": "bool[3]" - } - ], - "internalType": "struct ResilientOracle.TokenConfig", - "name": "tokenConfig", - "type": "tuple" - } - ], - "name": "setTokenConfig", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "address[3]", - "name": "oracles", - "type": "address[3]" - }, - { - "internalType": "bool[3]", - "name": "enableFlagsForOracles", - "type": "bool[3]" - } - ], - "internalType": "struct ResilientOracle.TokenConfig[]", - "name": "tokenConfigs_", - "type": "tuple[]" - } - ], - "name": "setTokenConfigs", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "unpause", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - } - ], - "name": "updateAssetPrice", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "vToken", - "type": "address" - } - ], - "name": "updatePrice", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "vai", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - } - ] - }, - "ResilientOracle_Proxy": { - "address": "0x150B667d42FB80409f162aB84065f0c8E9B3A7a0", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "admin_", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "stateMutability": "payable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "beacon", - "type": "address" - } - ], - "name": "BeaconUpgraded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "stateMutability": "payable", - "type": "fallback" - }, - { - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "admin_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "implementation_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "stateMutability": "payable", - "type": "receive" - } - ] - } - } -} diff --git a/deployments/berachainbepolia/.chainId b/deployments/berachainbepolia/.chainId deleted file mode 100644 index cd30e9ba..00000000 --- a/deployments/berachainbepolia/.chainId +++ /dev/null @@ -1 +0,0 @@ -80069 \ No newline at end of file diff --git a/deployments/berachainbepolia/BoundValidator.json b/deployments/berachainbepolia/BoundValidator.json deleted file mode 100644 index 8e100288..00000000 --- a/deployments/berachainbepolia/BoundValidator.json +++ /dev/null @@ -1,593 +0,0 @@ -{ - "address": "0xd3A635930300ea87548A1C3428Ac5DDfE3FFE66E", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "beacon", - "type": "address" - } - ], - "name": "BeaconUpgraded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "stateMutability": "payable", - "type": "fallback" - }, - { - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "admin_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "implementation_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "stateMutability": "payable", - "type": "receive" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "internalType": "address", - "name": "calledContract", - "type": "address" - }, - { - "internalType": "string", - "name": "methodSignature", - "type": "string" - } - ], - "name": "Unauthorized", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "version", - "type": "uint8" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "oldAccessControlManager", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAccessControlManager", - "type": "address" - } - ], - "name": "NewAccessControlManager", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferStarted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "upperBound", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "lowerBound", - "type": "uint256" - } - ], - "name": "ValidateConfigAdded", - "type": "event" - }, - { - "inputs": [], - "name": "acceptOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "accessControlManager", - "outputs": [ - { - "internalType": "contract IAccessControlManagerV8", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "accessControlManager_", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "accessControlManager_", - "type": "address" - } - ], - "name": "setAccessControlManager", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "uint256", - "name": "upperBoundRatio", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lowerBoundRatio", - "type": "uint256" - } - ], - "internalType": "struct BoundValidator.ValidateConfig", - "name": "config", - "type": "tuple" - } - ], - "name": "setValidateConfig", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "uint256", - "name": "upperBoundRatio", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lowerBoundRatio", - "type": "uint256" - } - ], - "internalType": "struct BoundValidator.ValidateConfig[]", - "name": "configs", - "type": "tuple[]" - } - ], - "name": "setValidateConfigs", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "validateConfigs", - "outputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "uint256", - "name": "upperBoundRatio", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lowerBoundRatio", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "uint256", - "name": "reportedPrice", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "anchorPrice", - "type": "uint256" - } - ], - "name": "validatePriceWithAnchorPrice", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "admin_", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "stateMutability": "payable", - "type": "constructor" - } - ], - "transactionHash": "0x6b8a15aaa9449510cbba3fc93e3065b5d28f95cdd2fc915fc1c7de5545531b66", - "receipt": { - "to": null, - "from": "0x18BDb05DD1A95677f4381cfb4db52D342dF5C00d", - "contractAddress": "0xd3A635930300ea87548A1C3428Ac5DDfE3FFE66E", - "transactionIndex": 1, - "gasUsed": "589302", - "logsBloom": "0x00000000000000000000000000000000400000000000000000800000000001000000000000000000000000000000000000000000000000000000000000008040000000000000000000000000000002000001000000000000000000000104000000000000020000000000020000000800000000800000000000000010000000400000000000000000000000000000000000000000000080000000000000800000000000000000000000000000000400000000000000800000000000000000000000000020000000000000000000040000000000000400000000020000000020000000000400000000000000000002000000000800000000000000000000000000", - "blockHash": "0xacb4a382a51ad4bfb77f4d2703b8c4b06b778a8fd1888c6fe3cf146c3b8b4f96", - "transactionHash": "0x6b8a15aaa9449510cbba3fc93e3065b5d28f95cdd2fc915fc1c7de5545531b66", - "logs": [ - { - "transactionIndex": 1, - "blockNumber": 2923586, - "transactionHash": "0x6b8a15aaa9449510cbba3fc93e3065b5d28f95cdd2fc915fc1c7de5545531b66", - "address": "0xd3A635930300ea87548A1C3428Ac5DDfE3FFE66E", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x000000000000000000000000d24c0795baea6d79a45def90889bc4dd4fd19a62" - ], - "data": "0x", - "logIndex": 25, - "blockHash": "0xacb4a382a51ad4bfb77f4d2703b8c4b06b778a8fd1888c6fe3cf146c3b8b4f96" - }, - { - "transactionIndex": 1, - "blockNumber": 2923586, - "transactionHash": "0x6b8a15aaa9449510cbba3fc93e3065b5d28f95cdd2fc915fc1c7de5545531b66", - "address": "0xd3A635930300ea87548A1C3428Ac5DDfE3FFE66E", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x00000000000000000000000018bdb05dd1a95677f4381cfb4db52d342df5c00d" - ], - "data": "0x", - "logIndex": 26, - "blockHash": "0xacb4a382a51ad4bfb77f4d2703b8c4b06b778a8fd1888c6fe3cf146c3b8b4f96" - }, - { - "transactionIndex": 1, - "blockNumber": 2923586, - "transactionHash": "0x6b8a15aaa9449510cbba3fc93e3065b5d28f95cdd2fc915fc1c7de5545531b66", - "address": "0xd3A635930300ea87548A1C3428Ac5DDfE3FFE66E", - "topics": ["0x66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa0"], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000243313c1cc198ff80756ed2ef14d9dcd94ee762b", - "logIndex": 27, - "blockHash": "0xacb4a382a51ad4bfb77f4d2703b8c4b06b778a8fd1888c6fe3cf146c3b8b4f96" - }, - { - "transactionIndex": 1, - "blockNumber": 2923586, - "transactionHash": "0x6b8a15aaa9449510cbba3fc93e3065b5d28f95cdd2fc915fc1c7de5545531b66", - "address": "0xd3A635930300ea87548A1C3428Ac5DDfE3FFE66E", - "topics": ["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "logIndex": 28, - "blockHash": "0xacb4a382a51ad4bfb77f4d2703b8c4b06b778a8fd1888c6fe3cf146c3b8b4f96" - }, - { - "transactionIndex": 1, - "blockNumber": 2923586, - "transactionHash": "0x6b8a15aaa9449510cbba3fc93e3065b5d28f95cdd2fc915fc1c7de5545531b66", - "address": "0xd3A635930300ea87548A1C3428Ac5DDfE3FFE66E", - "topics": ["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"], - "data": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009f0cf4ed50ed01994900ce9ee1ae85bfecd5c66", - "logIndex": 29, - "blockHash": "0xacb4a382a51ad4bfb77f4d2703b8c4b06b778a8fd1888c6fe3cf146c3b8b4f96" - } - ], - "blockNumber": 2923586, - "cumulativeGasUsed": "1377371", - "status": 1, - "byzantium": true - }, - "args": [ - "0xd24c0795BaEA6D79a45def90889bc4Dd4fd19a62", - "0x09f0Cf4eD50ed01994900CE9ee1ae85BFECd5c66", - "0xc4d66de8000000000000000000000000243313c1cc198ff80756ed2ef14d9dcd94ee762b" - ], - "numDeployments": 1, - "solcInputHash": "9703a470efb9e8d7aa23c7bd832fbb1c", - "metadata": "{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_logic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"implementation_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \\\"admin cannot fallback to proxy target\\\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\",\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is upgraded.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"admin()\":{\"details\":\"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\"},\"constructor\":{\"details\":\"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\"},\"implementation()\":{\"details\":\"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\"},\"upgradeTo(address)\":{\"details\":\"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\"},\"upgradeToAndCall(address,bytes)\":{\"details\":\"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"hardhat-deploy/solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol\":\"OptimizedTransparentUpgradeableProxy\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"hardhat-deploy/solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x93b4e21c931252739a1ec13ea31d3d35a5c068be3163ccab83e4d70c40355f03\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializating the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256(\\\"eip1967.proxy.implementation\\\")) - 1));\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n\",\"keccak256\":\"0x6309f9f39dc6f4f45a24f296543867aa358e32946cd6b2874627a996d606b3a0\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967Upgrade {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view virtual returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Emitted when the beacon is upgraded.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(Address.isContract(IBeacon(newBeacon).implementation()), \\\"ERC1967: beacon implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(\\n address newBeacon,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x17668652127feebed0ce8d9431ef95ccc8c4292f03e3b8cf06c6ca16af396633\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internall call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overriden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xd5d1fd16e9faff7fcb3a52e02a8d49156f42a38a03f07b5f1810c21c2149a8ab\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n }\\n}\\n\",\"keccak256\":\"0x3777e696b62134e6177440dbe6e6601c0c156a443f57167194b67e75527439de\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/StorageSlot.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xfe1b7a9aa2a530a9e705b220e26cd584e2fbdc9602a3a1066032b12816b46aca\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/transparent/TransparentUpgradeableProxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../openzeppelin/proxy/ERC1967/ERC1967Proxy.sol\\\";\\n\\n/**\\n * @dev This contract implements a proxy that is upgradeable by an admin.\\n *\\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\\n * clashing], which can potentially be used in an attack, this contract uses the\\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\\n * things that go hand in hand:\\n *\\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\\n * that call matches one of the admin functions exposed by the proxy itself.\\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\\n * \\\"admin cannot fallback to proxy target\\\".\\n *\\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\\n * the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due\\n * to sudden errors when trying to call a function from the proxy implementation.\\n *\\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\\n */\\ncontract OptimizedTransparentUpgradeableProxy is ERC1967Proxy {\\n address internal immutable _ADMIN;\\n\\n /**\\n * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\\n * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\\n */\\n constructor(\\n address _logic,\\n address admin_,\\n bytes memory _data\\n ) payable ERC1967Proxy(_logic, _data) {\\n assert(_ADMIN_SLOT == bytes32(uint256(keccak256(\\\"eip1967.proxy.admin\\\")) - 1));\\n _ADMIN = admin_;\\n\\n // still store it to work with EIP-1967\\n bytes32 slot = _ADMIN_SLOT;\\n // solhint-disable-next-line no-inline-assembly\\n assembly {\\n sstore(slot, admin_)\\n }\\n emit AdminChanged(address(0), admin_);\\n }\\n\\n /**\\n * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\\n */\\n modifier ifAdmin() {\\n if (msg.sender == _getAdmin()) {\\n _;\\n } else {\\n _fallback();\\n }\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n */\\n function admin() external ifAdmin returns (address admin_) {\\n admin_ = _getAdmin();\\n }\\n\\n /**\\n * @dev Returns the current implementation.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\\n */\\n function implementation() external ifAdmin returns (address implementation_) {\\n implementation_ = _implementation();\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\\n */\\n function upgradeTo(address newImplementation) external ifAdmin {\\n _upgradeToAndCall(newImplementation, bytes(\\\"\\\"), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\\n * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\\n * proxied contract.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\\n */\\n function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {\\n _upgradeToAndCall(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _admin() internal view virtual returns (address) {\\n return _getAdmin();\\n }\\n\\n /**\\n * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.\\n */\\n function _beforeFallback() internal virtual override {\\n require(msg.sender != _getAdmin(), \\\"TransparentUpgradeableProxy: admin cannot fallback to proxy target\\\");\\n super._beforeFallback();\\n }\\n\\n function _getAdmin() internal view virtual override returns (address) {\\n return _ADMIN;\\n }\\n}\\n\",\"keccak256\":\"0xa30117644e27fa5b49e162aae2f62b36c1aca02f801b8c594d46e2024963a534\",\"license\":\"MIT\"}},\"version\":1}", - "bytecode": "0x60a0604052604051610c8f380380610c8f8339810160408190526100229161039f565b828161004f60017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd61046a565b5f80516020610c488339815191521461006a5761006a610489565b61007582825f610123565b506100a3905060017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610461046a565b5f80516020610c28833981519152146100be576100be610489565b6001600160a01b03821660808190525f80516020610c28833981519152838155604080515f8152602081019390935290917f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a1505050506104e8565b61012c8361014e565b5f825111806101385750805b1561014957610147838361018d565b505b505050565b610157816101bb565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606101b28383604051806060016040528060278152602001610c686027913961025b565b90505b92915050565b6001600160a01b0381163b61022d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b5f80516020610c4883398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b60606001600160a01b0384163b6102c35760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610224565b5f80856001600160a01b0316856040516102dd919061049d565b5f60405180830381855af49150503d805f8114610315576040519150601f19603f3d011682016040523d82523d5f602084013e61031a565b606091505b50909250905061032b828286610337565b925050505b9392505050565b60608315610346575081610330565b8251156103565782518084602001fd5b8160405162461bcd60e51b815260040161022491906104b3565b80516001600160a01b0381168114610386575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f805f606084860312156103b1575f80fd5b6103ba84610370565b92506103c860208501610370565b60408501519092506001600160401b03808211156103e4575f80fd5b818601915086601f8301126103f7575f80fd5b8151818111156104095761040961038b565b604051601f8201601f19908116603f011681019083821181831017156104315761043161038b565b81604052828152896020848701011115610449575f80fd5b8260208601602083015e5f6020848301015280955050505050509250925092565b818103818111156101b557634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52600160045260245ffd5b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6080516107066105225f395f818160eb0152818161013f015281816101bf0152818161020801528181610239015261025d01526107065ff3fe608060405260043610610042575f3560e01c80633659cfe6146100595780634f1ef286146100785780635c60da1b1461008b578063f851a440146100bb57610051565b366100515761004f6100cf565b005b61004f6100cf565b348015610064575f80fd5b5061004f6100733660046105c9565b6100e9565b61004f6100863660046105e2565b61013d565b348015610096575f80fd5b5061009f6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c6575f80fd5b5061009f610205565b6100d761025b565b6100e76100e2610309565b61033b565b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610135576101328160405180602001604052805f8152505f610359565b50565b6101326100cf565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101b4576101af8383838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525060019250610359915050565b505050565b6101af6100cf565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101fa576101f5610309565b905090565b6102026100cf565b90565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101fa57507f000000000000000000000000000000000000000000000000000000000000000090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036100e75760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b5f6101f57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b365f80375f80365f845af43d5f803e808015610355573d5ff35b3d5ffd5b61036283610383565b5f8251118061036e5750805b156101af5761037d83836103c2565b50505050565b61038c816103ee565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103e783836040518060600160405280602781526020016106aa6027913961049c565b9392505050565b6001600160a01b0381163b61045b5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610300565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60606001600160a01b0384163b6105045760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610300565b5f80856001600160a01b03168560405161051e919061065e565b5f60405180830381855af49150503d805f8114610556576040519150601f19603f3d011682016040523d82523d5f602084013e61055b565b606091505b509150915061056b828286610575565b9695505050505050565b606083156105845750816103e7565b8251156105945782518084602001fd5b8160405162461bcd60e51b81526004016103009190610674565b80356001600160a01b03811681146105c4575f80fd5b919050565b5f602082840312156105d9575f80fd5b6103e7826105ae565b5f805f604084860312156105f4575f80fd5b6105fd846105ae565b9250602084013567ffffffffffffffff80821115610619575f80fd5b818601915086601f83011261062c575f80fd5b81358181111561063a575f80fd5b87602082850101111561064b575f80fd5b6020830194508093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d447ec2a4b47962d9e959ca0ec6571d77747999259501e773b66fdcaef0e50bf64736f6c63430008190033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564", - "deployedBytecode": "0x608060405260043610610042575f3560e01c80633659cfe6146100595780634f1ef286146100785780635c60da1b1461008b578063f851a440146100bb57610051565b366100515761004f6100cf565b005b61004f6100cf565b348015610064575f80fd5b5061004f6100733660046105c9565b6100e9565b61004f6100863660046105e2565b61013d565b348015610096575f80fd5b5061009f6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c6575f80fd5b5061009f610205565b6100d761025b565b6100e76100e2610309565b61033b565b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610135576101328160405180602001604052805f8152505f610359565b50565b6101326100cf565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101b4576101af8383838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525060019250610359915050565b505050565b6101af6100cf565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101fa576101f5610309565b905090565b6102026100cf565b90565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101fa57507f000000000000000000000000000000000000000000000000000000000000000090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036100e75760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b5f6101f57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b365f80375f80365f845af43d5f803e808015610355573d5ff35b3d5ffd5b61036283610383565b5f8251118061036e5750805b156101af5761037d83836103c2565b50505050565b61038c816103ee565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103e783836040518060600160405280602781526020016106aa6027913961049c565b9392505050565b6001600160a01b0381163b61045b5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610300565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60606001600160a01b0384163b6105045760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610300565b5f80856001600160a01b03168560405161051e919061065e565b5f60405180830381855af49150503d805f8114610556576040519150601f19603f3d011682016040523d82523d5f602084013e61055b565b606091505b509150915061056b828286610575565b9695505050505050565b606083156105845750816103e7565b8251156105945782518084602001fd5b8160405162461bcd60e51b81526004016103009190610674565b80356001600160a01b03811681146105c4575f80fd5b919050565b5f602082840312156105d9575f80fd5b6103e7826105ae565b5f805f604084860312156105f4575f80fd5b6105fd846105ae565b9250602084013567ffffffffffffffff80821115610619575f80fd5b818601915086601f83011261062c575f80fd5b81358181111561063a575f80fd5b87602082850101111561064b575f80fd5b6020830194508093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d447ec2a4b47962d9e959ca0ec6571d77747999259501e773b66fdcaef0e50bf64736f6c63430008190033", - "execute": { - "methodName": "initialize", - "args": ["0x243313C1cC198FF80756ed2ef14D9dcd94Ee762b"] - }, - "implementation": "0xd24c0795BaEA6D79a45def90889bc4Dd4fd19a62", - "devdoc": { - "details": "This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \"admin cannot fallback to proxy target\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.", - "events": { - "AdminChanged(address,address)": { - "details": "Emitted when the admin account has changed." - }, - "BeaconUpgraded(address)": { - "details": "Emitted when the beacon is upgraded." - }, - "Upgraded(address)": { - "details": "Emitted when the implementation is upgraded." - } - }, - "kind": "dev", - "methods": { - "admin()": { - "details": "Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`" - }, - "constructor": { - "details": "Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}." - }, - "implementation()": { - "details": "Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`" - }, - "upgradeTo(address)": { - "details": "Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}." - }, - "upgradeToAndCall(address,bytes)": { - "details": "Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}." - } - }, - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": {}, - "version": 1 - }, - "storageLayout": { - "storage": [], - "types": null - } -} diff --git a/deployments/berachainbepolia/BoundValidator_Implementation.json b/deployments/berachainbepolia/BoundValidator_Implementation.json deleted file mode 100644 index 5b35ab13..00000000 --- a/deployments/berachainbepolia/BoundValidator_Implementation.json +++ /dev/null @@ -1,651 +0,0 @@ -{ - "address": "0xd24c0795BaEA6D79a45def90889bc4Dd4fd19a62", - "abi": [ - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "internalType": "address", - "name": "calledContract", - "type": "address" - }, - { - "internalType": "string", - "name": "methodSignature", - "type": "string" - } - ], - "name": "Unauthorized", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "version", - "type": "uint8" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "oldAccessControlManager", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAccessControlManager", - "type": "address" - } - ], - "name": "NewAccessControlManager", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferStarted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "upperBound", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "lowerBound", - "type": "uint256" - } - ], - "name": "ValidateConfigAdded", - "type": "event" - }, - { - "inputs": [], - "name": "acceptOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "accessControlManager", - "outputs": [ - { - "internalType": "contract IAccessControlManagerV8", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "accessControlManager_", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "accessControlManager_", - "type": "address" - } - ], - "name": "setAccessControlManager", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "uint256", - "name": "upperBoundRatio", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lowerBoundRatio", - "type": "uint256" - } - ], - "internalType": "struct BoundValidator.ValidateConfig", - "name": "config", - "type": "tuple" - } - ], - "name": "setValidateConfig", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "uint256", - "name": "upperBoundRatio", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lowerBoundRatio", - "type": "uint256" - } - ], - "internalType": "struct BoundValidator.ValidateConfig[]", - "name": "configs", - "type": "tuple[]" - } - ], - "name": "setValidateConfigs", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "validateConfigs", - "outputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "uint256", - "name": "upperBoundRatio", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lowerBoundRatio", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "uint256", - "name": "reportedPrice", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "anchorPrice", - "type": "uint256" - } - ], - "name": "validatePriceWithAnchorPrice", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "transactionHash": "0xb5d703fc94f7cda4e459a113f59f9ed954c5f075d2b84322436f42c0165971c9", - "receipt": { - "to": null, - "from": "0x18BDb05DD1A95677f4381cfb4db52D342dF5C00d", - "contractAddress": "0xd24c0795BaEA6D79a45def90889bc4Dd4fd19a62", - "transactionIndex": 0, - "gasUsed": "844377", - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000001000000000000000000000000000040000000040000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x956668dd5bc5a2706662930b543dc8bba7a2e55188bd008a1d11166e0c4e0f47", - "transactionHash": "0xb5d703fc94f7cda4e459a113f59f9ed954c5f075d2b84322436f42c0165971c9", - "logs": [ - { - "transactionIndex": 0, - "blockNumber": 2923584, - "transactionHash": "0xb5d703fc94f7cda4e459a113f59f9ed954c5f075d2b84322436f42c0165971c9", - "address": "0xd24c0795BaEA6D79a45def90889bc4Dd4fd19a62", - "topics": ["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"], - "data": "0x00000000000000000000000000000000000000000000000000000000000000ff", - "logIndex": 0, - "blockHash": "0x956668dd5bc5a2706662930b543dc8bba7a2e55188bd008a1d11166e0c4e0f47" - } - ], - "blockNumber": 2923584, - "cumulativeGasUsed": "844377", - "status": 1, - "byzantium": true - }, - "args": [], - "numDeployments": 1, - "solcInputHash": "9703a470efb9e8d7aa23c7bd832fbb1c", - "metadata": "{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"calledContract\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"methodSignature\",\"type\":\"string\"}],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldAccessControlManager\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAccessControlManager\",\"type\":\"address\"}],\"name\":\"NewAccessControlManager\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"upperBound\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"lowerBound\",\"type\":\"uint256\"}],\"name\":\"ValidateConfigAdded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"accessControlManager\",\"outputs\":[{\"internalType\":\"contract IAccessControlManagerV8\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"accessControlManager_\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"accessControlManager_\",\"type\":\"address\"}],\"name\":\"setAccessControlManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"upperBoundRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lowerBoundRatio\",\"type\":\"uint256\"}],\"internalType\":\"struct BoundValidator.ValidateConfig\",\"name\":\"config\",\"type\":\"tuple\"}],\"name\":\"setValidateConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"upperBoundRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lowerBoundRatio\",\"type\":\"uint256\"}],\"internalType\":\"struct BoundValidator.ValidateConfig[]\",\"name\":\"configs\",\"type\":\"tuple[]\"}],\"name\":\"setValidateConfigs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"validateConfigs\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"upperBoundRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lowerBoundRatio\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"reportedPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"anchorPrice\",\"type\":\"uint256\"}],\"name\":\"validatePriceWithAnchorPrice\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Venus\",\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"The new owner accepts the ownership transfer.\"},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"initialize(address)\":{\"params\":{\"accessControlManager_\":\"Address of the access control manager contract\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pendingOwner()\":{\"details\":\"Returns the address of the pending owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setAccessControlManager(address)\":{\"custom:access\":\"Only Governance\",\"custom:event\":\"Emits NewAccessControlManager event\",\"details\":\"Admin function to set address of AccessControlManager\",\"params\":{\"accessControlManager_\":\"The new address of the AccessControlManager\"}},\"setValidateConfig((address,uint256,uint256))\":{\"custom:access\":\"Only Governance\",\"custom:error\":\"Null address error is thrown if asset address is nullRange error thrown if bound ratio is not positiveRange error thrown if lower bound is greater than or equal to upper bound\",\"custom:event\":\"Emits ValidateConfigAdded when a validation config is successfully set\",\"params\":{\"config\":\"Validation config struct\"}},\"setValidateConfigs((address,uint256,uint256)[])\":{\"custom:access\":\"Only Governance\",\"custom:error\":\"Zero length error is thrown if length of the config array is 0\",\"custom:event\":\"Emits ValidateConfigAdded for each validation config that is successfully set\",\"params\":{\"configs\":\"Array of validation configs\"}},\"transferOwnership(address)\":{\"details\":\"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner.\"},\"validatePriceWithAnchorPrice(address,uint256,uint256)\":{\"custom:error\":\"Missing error thrown if asset config is not setPrice error thrown if anchor price is not valid\",\"params\":{\"asset\":\"asset address\",\"reportedPrice\":\"The price to be tested\"}}},\"title\":\"BoundValidator\",\"version\":1},\"userdoc\":{\"errors\":{\"Unauthorized(address,address,string)\":[{\"notice\":\"Thrown when the action is prohibited by AccessControlManager\"}]},\"events\":{\"NewAccessControlManager(address,address)\":{\"notice\":\"Emitted when access control manager contract address is changed\"},\"ValidateConfigAdded(address,uint256,uint256)\":{\"notice\":\"Emit this event when new validation configs are added\"}},\"kind\":\"user\",\"methods\":{\"accessControlManager()\":{\"notice\":\"Returns the address of the access control manager contract\"},\"constructor\":{\"notice\":\"Constructor for the implementation contract. Sets immutable variables.\"},\"initialize(address)\":{\"notice\":\"Initializes the owner of the contract\"},\"setAccessControlManager(address)\":{\"notice\":\"Sets the address of AccessControlManager\"},\"setValidateConfig((address,uint256,uint256))\":{\"notice\":\"Add a single validation config\"},\"setValidateConfigs((address,uint256,uint256)[])\":{\"notice\":\"Add multiple validation configs at the same time\"},\"validateConfigs(address)\":{\"notice\":\"validation configs by asset\"},\"validatePriceWithAnchorPrice(address,uint256,uint256)\":{\"notice\":\"Test reported asset price against anchor price\"}},\"notice\":\"The BoundValidator contract is used to validate prices fetched from two different sources. Each asset has an upper and lower bound ratio set in the config. In order for a price to be valid it must fall within this range of the validator price.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracles/BoundValidator.sol\":\"BoundValidator\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable2Step.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./OwnableUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership} and {acceptOwnership}.\\n *\\n * This module is used through inheritance. It will make available all functions\\n * from parent (Ownable).\\n */\\nabstract contract Ownable2StepUpgradeable is Initializable, OwnableUpgradeable {\\n address private _pendingOwner;\\n\\n event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner);\\n\\n function __Ownable2Step_init() internal onlyInitializing {\\n __Ownable_init_unchained();\\n }\\n\\n function __Ownable2Step_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Returns the address of the pending owner.\\n */\\n function pendingOwner() public view virtual returns (address) {\\n return _pendingOwner;\\n }\\n\\n /**\\n * @dev Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one.\\n * Can only be called by the current owner.\\n */\\n function transferOwnership(address newOwner) public virtual override onlyOwner {\\n _pendingOwner = newOwner;\\n emit OwnershipTransferStarted(owner(), newOwner);\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`) and deletes any pending owner.\\n * Internal function without access restriction.\\n */\\n function _transferOwnership(address newOwner) internal virtual override {\\n delete _pendingOwner;\\n super._transferOwnership(newOwner);\\n }\\n\\n /**\\n * @dev The new owner accepts the ownership transfer.\\n */\\n function acceptOwnership() public virtual {\\n address sender = _msgSender();\\n require(pendingOwner() == sender, \\\"Ownable2Step: caller is not the new owner\\\");\\n _transferOwnership(sender);\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x9140dabc466abab21b48b72dbda26736b1183a310d0e677d3719d201df026510\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/ContextUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\\n address private _owner;\\n\\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n /**\\n * @dev Initializes the contract setting the deployer as the initial owner.\\n */\\n function __Ownable_init() internal onlyInitializing {\\n __Ownable_init_unchained();\\n }\\n\\n function __Ownable_init_unchained() internal onlyInitializing {\\n _transferOwnership(_msgSender());\\n }\\n\\n /**\\n * @dev Throws if called by any account other than the owner.\\n */\\n modifier onlyOwner() {\\n _checkOwner();\\n _;\\n }\\n\\n /**\\n * @dev Returns the address of the current owner.\\n */\\n function owner() public view virtual returns (address) {\\n return _owner;\\n }\\n\\n /**\\n * @dev Throws if the sender is not the owner.\\n */\\n function _checkOwner() internal view virtual {\\n require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n /**\\n * @dev Leaves the contract without owner. It will not be possible to call\\n * `onlyOwner` functions. Can only be called by the current owner.\\n *\\n * NOTE: Renouncing ownership will leave the contract without an owner,\\n * thereby disabling any functionality that is only available to the owner.\\n */\\n function renounceOwnership() public virtual onlyOwner {\\n _transferOwnership(address(0));\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Can only be called by the current owner.\\n */\\n function transferOwnership(address newOwner) public virtual onlyOwner {\\n require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n _transferOwnership(newOwner);\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Internal function without access restriction.\\n */\\n function _transferOwnership(address newOwner) internal virtual {\\n address oldOwner = _owner;\\n _owner = newOwner;\\n emit OwnershipTransferred(oldOwner, newOwner);\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x359a1ab89b46b9aba7bcad3fb651924baf4893d15153049b9976b0fc9be1358e\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev External interface of AccessControl declared to support ERC165 detection.\\n */\\ninterface IAccessControl {\\n /**\\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\\n *\\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\\n * {RoleAdminChanged} not being emitted signaling this.\\n *\\n * _Available since v3.1._\\n */\\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\\n\\n /**\\n * @dev Emitted when `account` is granted `role`.\\n *\\n * `sender` is the account that originated the contract call, an admin role\\n * bearer except when using {AccessControl-_setupRole}.\\n */\\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Emitted when `account` is revoked `role`.\\n *\\n * `sender` is the account that originated the contract call:\\n * - if using `revokeRole`, it is the admin role bearer\\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\\n */\\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Returns `true` if `account` has been granted `role`.\\n */\\n function hasRole(bytes32 role, address account) external view returns (bool);\\n\\n /**\\n * @dev Returns the admin role that controls `role`. See {grantRole} and\\n * {revokeRole}.\\n *\\n * To change a role's admin, use {AccessControl-_setRoleAdmin}.\\n */\\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function grantRole(bytes32 role, address account) external;\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function revokeRole(bytes32 role, address account) external;\\n\\n /**\\n * @dev Revokes `role` from the calling account.\\n *\\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n * purpose is to provide a mechanism for accounts to lose their privileges\\n * if they are compromised (such as when a trusted device is misplaced).\\n *\\n * If the calling account had been granted `role`, emits a {RoleRevoked}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must be `account`.\\n */\\n function renounceRole(bytes32 role, address account) external;\\n}\\n\",\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n *\\n * _Available since v4.1._\\n */\\ninterface IERC20Metadata is IERC20 {\\n /**\\n * @dev Returns the name of the token.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the symbol of the token.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the decimals places of the token.\\n */\\n function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\"},\"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.25;\\n\\nimport \\\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\\\";\\nimport \\\"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol\\\";\\n\\nimport \\\"./IAccessControlManagerV8.sol\\\";\\n\\n/**\\n * @title AccessControlledV8\\n * @author Venus\\n * @notice This contract is helper between access control manager and actual contract. This contract further inherited by other contract (using solidity 0.8.13)\\n * to integrate access controlled mechanism. It provides initialise methods and verifying access methods.\\n */\\nabstract contract AccessControlledV8 is Initializable, Ownable2StepUpgradeable {\\n /// @notice Access control manager contract\\n IAccessControlManagerV8 private _accessControlManager;\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[49] private __gap;\\n\\n /// @notice Emitted when access control manager contract address is changed\\n event NewAccessControlManager(address oldAccessControlManager, address newAccessControlManager);\\n\\n /// @notice Thrown when the action is prohibited by AccessControlManager\\n error Unauthorized(address sender, address calledContract, string methodSignature);\\n\\n function __AccessControlled_init(address accessControlManager_) internal onlyInitializing {\\n __Ownable2Step_init();\\n __AccessControlled_init_unchained(accessControlManager_);\\n }\\n\\n function __AccessControlled_init_unchained(address accessControlManager_) internal onlyInitializing {\\n _setAccessControlManager(accessControlManager_);\\n }\\n\\n /**\\n * @notice Sets the address of AccessControlManager\\n * @dev Admin function to set address of AccessControlManager\\n * @param accessControlManager_ The new address of the AccessControlManager\\n * @custom:event Emits NewAccessControlManager event\\n * @custom:access Only Governance\\n */\\n function setAccessControlManager(address accessControlManager_) external onlyOwner {\\n _setAccessControlManager(accessControlManager_);\\n }\\n\\n /**\\n * @notice Returns the address of the access control manager contract\\n */\\n function accessControlManager() external view returns (IAccessControlManagerV8) {\\n return _accessControlManager;\\n }\\n\\n /**\\n * @dev Internal function to set address of AccessControlManager\\n * @param accessControlManager_ The new address of the AccessControlManager\\n */\\n function _setAccessControlManager(address accessControlManager_) internal {\\n require(address(accessControlManager_) != address(0), \\\"invalid acess control manager address\\\");\\n address oldAccessControlManager = address(_accessControlManager);\\n _accessControlManager = IAccessControlManagerV8(accessControlManager_);\\n emit NewAccessControlManager(oldAccessControlManager, accessControlManager_);\\n }\\n\\n /**\\n * @notice Reverts if the call is not allowed by AccessControlManager\\n * @param signature Method signature\\n */\\n function _checkAccessAllowed(string memory signature) internal view {\\n bool isAllowedToCall = _accessControlManager.isAllowedToCall(msg.sender, signature);\\n\\n if (!isAllowedToCall) {\\n revert Unauthorized(msg.sender, address(this), signature);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x0dcf283925f4dddc23ca0ee71d2cb96a9dd6e4cf08061b69fde1697ea39dc514\",\"license\":\"BSD-3-Clause\"},\"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\nimport \\\"@openzeppelin/contracts/access/IAccessControl.sol\\\";\\n\\n/**\\n * @title IAccessControlManagerV8\\n * @author Venus\\n * @notice Interface implemented by the `AccessControlManagerV8` contract.\\n */\\ninterface IAccessControlManagerV8 is IAccessControl {\\n function giveCallPermission(address contractAddress, string calldata functionSig, address accountToPermit) external;\\n\\n function revokeCallPermission(\\n address contractAddress,\\n string calldata functionSig,\\n address accountToRevoke\\n ) external;\\n\\n function isAllowedToCall(address account, string calldata functionSig) external view returns (bool);\\n\\n function hasPermission(\\n address account,\\n address contractAddress,\\n string calldata functionSig\\n ) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xaa29b098440d0b3a131c5ecdf25ce548790c1b5ac7bf9b5c0264b6af6f7a1e0b\",\"license\":\"BSD-3-Clause\"},\"contracts/interfaces/OracleInterface.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\ninterface OracleInterface {\\n function getPrice(address asset) external view returns (uint256);\\n}\\n\\ninterface ResilientOracleInterface is OracleInterface {\\n function updatePrice(address vToken) external;\\n\\n function updateAssetPrice(address asset) external;\\n\\n function getUnderlyingPrice(address vToken) external view returns (uint256);\\n}\\n\\ninterface TwapInterface is OracleInterface {\\n function updateTwap(address asset) external returns (uint256);\\n}\\n\\ninterface BoundValidatorInterface {\\n function validatePriceWithAnchorPrice(\\n address asset,\\n uint256 reporterPrice,\\n uint256 anchorPrice\\n ) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x2432799b0d824fc701beb4c30146e912b9aeecf77b5c1635dde6c5fbe6bfc3a7\",\"license\":\"BSD-3-Clause\"},\"contracts/interfaces/VBep20Interface.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\nimport \\\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\\\";\\n\\ninterface VBep20Interface is IERC20Metadata {\\n /**\\n * @notice Underlying asset for this VToken\\n */\\n function underlying() external view returns (address);\\n}\\n\",\"keccak256\":\"0x6e71c3df86501df5c0e4bace1333c0c91f9f9cced252a54fb99eeda219b789d5\",\"license\":\"BSD-3-Clause\"},\"contracts/oracles/BoundValidator.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.25;\\n\\nimport \\\"../interfaces/VBep20Interface.sol\\\";\\nimport \\\"../interfaces/OracleInterface.sol\\\";\\nimport \\\"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol\\\";\\n\\n/**\\n * @title BoundValidator\\n * @author Venus\\n * @notice The BoundValidator contract is used to validate prices fetched from two different sources.\\n * Each asset has an upper and lower bound ratio set in the config. In order for a price to be valid\\n * it must fall within this range of the validator price.\\n */\\ncontract BoundValidator is AccessControlledV8, BoundValidatorInterface {\\n struct ValidateConfig {\\n /// @notice asset address\\n address asset;\\n /// @notice Upper bound of deviation between reported price and anchor price,\\n /// beyond which the reported price will be invalidated\\n uint256 upperBoundRatio;\\n /// @notice Lower bound of deviation between reported price and anchor price,\\n /// below which the reported price will be invalidated\\n uint256 lowerBoundRatio;\\n }\\n\\n /// @notice validation configs by asset\\n mapping(address => ValidateConfig) public validateConfigs;\\n\\n /// @notice Emit this event when new validation configs are added\\n event ValidateConfigAdded(address indexed asset, uint256 indexed upperBound, uint256 indexed lowerBound);\\n\\n /// @notice Constructor for the implementation contract. Sets immutable variables.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /**\\n * @notice Initializes the owner of the contract\\n * @param accessControlManager_ Address of the access control manager contract\\n */\\n function initialize(address accessControlManager_) external initializer {\\n __AccessControlled_init(accessControlManager_);\\n }\\n\\n /**\\n * @notice Add multiple validation configs at the same time\\n * @param configs Array of validation configs\\n * @custom:access Only Governance\\n * @custom:error Zero length error is thrown if length of the config array is 0\\n * @custom:event Emits ValidateConfigAdded for each validation config that is successfully set\\n */\\n function setValidateConfigs(ValidateConfig[] memory configs) external {\\n uint256 length = configs.length;\\n if (length == 0) revert(\\\"invalid validate config length\\\");\\n for (uint256 i; i < length; ) {\\n setValidateConfig(configs[i]);\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @notice Add a single validation config\\n * @param config Validation config struct\\n * @custom:access Only Governance\\n * @custom:error Null address error is thrown if asset address is null\\n * @custom:error Range error thrown if bound ratio is not positive\\n * @custom:error Range error thrown if lower bound is greater than or equal to upper bound\\n * @custom:event Emits ValidateConfigAdded when a validation config is successfully set\\n */\\n function setValidateConfig(ValidateConfig memory config) public {\\n _checkAccessAllowed(\\\"setValidateConfig(ValidateConfig)\\\");\\n\\n if (config.asset == address(0)) revert(\\\"asset can't be zero address\\\");\\n if (config.upperBoundRatio == 0 || config.lowerBoundRatio == 0) revert(\\\"bound must be positive\\\");\\n if (config.upperBoundRatio <= config.lowerBoundRatio) revert(\\\"upper bound must be higher than lowner bound\\\");\\n validateConfigs[config.asset] = config;\\n emit ValidateConfigAdded(config.asset, config.upperBoundRatio, config.lowerBoundRatio);\\n }\\n\\n /**\\n * @notice Test reported asset price against anchor price\\n * @param asset asset address\\n * @param reportedPrice The price to be tested\\n * @custom:error Missing error thrown if asset config is not set\\n * @custom:error Price error thrown if anchor price is not valid\\n */\\n function validatePriceWithAnchorPrice(\\n address asset,\\n uint256 reportedPrice,\\n uint256 anchorPrice\\n ) public view virtual override returns (bool) {\\n if (validateConfigs[asset].upperBoundRatio == 0) revert(\\\"validation config not exist\\\");\\n if (anchorPrice == 0) revert(\\\"anchor price is not valid\\\");\\n return _isWithinAnchor(asset, reportedPrice, anchorPrice);\\n }\\n\\n /**\\n * @notice Test whether the reported price is within the valid bounds\\n * @param asset Asset address\\n * @param reportedPrice The price to be tested\\n * @param anchorPrice The reported price must be within the the valid bounds of this price\\n */\\n function _isWithinAnchor(address asset, uint256 reportedPrice, uint256 anchorPrice) private view returns (bool) {\\n if (reportedPrice != 0) {\\n // we need to multiply anchorPrice by 1e18 to make the ratio 18 decimals\\n uint256 anchorRatio = (anchorPrice * 1e18) / reportedPrice;\\n uint256 upperBoundAnchorRatio = validateConfigs[asset].upperBoundRatio;\\n uint256 lowerBoundAnchorRatio = validateConfigs[asset].lowerBoundRatio;\\n return anchorRatio <= upperBoundAnchorRatio && anchorRatio >= lowerBoundAnchorRatio;\\n }\\n return false;\\n }\\n\\n // BoundValidator is to get inherited, so it's a good practice to add some storage gaps like\\n // OpenZepplin proposed in their contracts: https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n // solhint-disable-next-line\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0xd0b567c1f744befdbb493233c59469f39d94d88d882d768e985b8126172fb64a\",\"license\":\"BSD-3-Clause\"}},\"version\":1}", - "bytecode": "0x6080604052348015600e575f80fd5b5060156019565b60d3565b5f54610100900460ff161560835760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff9081161460d1575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b610dd1806100e05f395ff3fe608060405234801561000f575f80fd5b50600436106100b1575f3560e01c8063af9e6c5b1161006e578063af9e6c5b1461013a578063b4a0bdf31461014d578063bca9e1161461015e578063c4d66de8146101bb578063e30c3978146101ce578063f2fde38b146101df575f80fd5b80630e32cb86146100b5578063715018a6146100ca57806379ba5097146100d25780638da5cb5b146100da57806397c7033e146101045780639c35761514610127575b5f80fd5b6100c86100c3366004610a7d565b6101f2565b005b6100c8610206565b6100c8610219565b6033546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b610117610112366004610a96565b610295565b60405190151581526020016100fb565b6100c8610135366004610b6a565b610362565b6100c8610148366004610c15565b6103ed565b6097546001600160a01b03166100e7565b61019661016c366004610a7d565b60c96020525f90815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b0390941684526020840192909252908201526060016100fb565b6100c86101c9366004610a7d565b6105a2565b6065546001600160a01b03166100e7565b6100c86101ed366004610a7d565b6106b0565b6101fa610721565b6102038161077b565b50565b61020e610721565b6102175f610839565b565b60655433906001600160a01b0316811461028c5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084015b60405180910390fd5b61020381610839565b6001600160a01b0383165f90815260c9602052604081206001015481036102fe5760405162461bcd60e51b815260206004820152601b60248201527f76616c69646174696f6e20636f6e666967206e6f7420657869737400000000006044820152606401610283565b815f0361034d5760405162461bcd60e51b815260206004820152601960248201527f616e63686f72207072696365206973206e6f742076616c6964000000000000006044820152606401610283565b610358848484610852565b90505b9392505050565b80515f8190036103b45760405162461bcd60e51b815260206004820152601e60248201527f696e76616c69642076616c696461746520636f6e666967206c656e67746800006044820152606401610283565b5f5b818110156103e8576103e08382815181106103d3576103d3610c2f565b60200260200101516103ed565b6001016103b6565b505050565b61040e604051806060016040528060218152602001610d7b602191396108c0565b80516001600160a01b03166104655760405162461bcd60e51b815260206004820152601b60248201527f61737365742063616e2774206265207a65726f206164647265737300000000006044820152606401610283565b6020810151158061047857506040810151155b156104be5760405162461bcd60e51b8152602060048201526016602482015275626f756e64206d75737420626520706f73697469766560501b6044820152606401610283565b806040015181602001511161052a5760405162461bcd60e51b815260206004820152602c60248201527f757070657220626f756e64206d75737420626520686967686572207468616e2060448201526b1b1bdddb995c88189bdd5b9960a21b6064820152608401610283565b80516001600160a01b039081165f90815260c960209081526040808320855181546001600160a01b03191695169485178155918501516001830181905581860151600290930183905590519193909290917f28e2d96bdcf74fe6203e40d159d27ec2e15230239c0aee4a0a914196c550e6d19190a450565b5f54610100900460ff16158080156105c057505f54600160ff909116105b806105d95750303b1580156105d957505f5460ff166001145b61063c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610283565b5f805460ff19166001179055801561065d575f805461ff0019166101001790555b61066682610957565b80156106ac575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b5050565b6106b8610721565b606580546001600160a01b0383166001600160a01b031990911681179091556106e96033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6033546001600160a01b031633146102175760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610283565b6001600160a01b0381166107df5760405162461bcd60e51b815260206004820152602560248201527f696e76616c696420616365737320636f6e74726f6c206d616e61676572206164604482015264647265737360d81b6064820152608401610283565b609780546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa091016106a3565b606580546001600160a01b03191690556102038161098e565b5f82156108b7575f8361086d84670de0b6b3a7640000610c43565b6108779190610c6c565b6001600160a01b0386165f90815260c9602052604090206001810154600290910154919250908183118015906108ad5750808310155b935050505061035b565b505f9392505050565b6097546040516318c5e8ab60e01b81525f916001600160a01b0316906318c5e8ab906108f29033908690600401610cb9565b602060405180830381865afa15801561090d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109319190610cdc565b9050806106ac57333083604051634a3fa29360e01b815260040161028393929190610cfb565b5f54610100900460ff1661097d5760405162461bcd60e51b815260040161028390610d2f565b6109856109df565b61020381610a0d565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff16610a055760405162461bcd60e51b815260040161028390610d2f565b610217610a33565b5f54610100900460ff166101fa5760405162461bcd60e51b815260040161028390610d2f565b5f54610100900460ff16610a595760405162461bcd60e51b815260040161028390610d2f565b61021733610839565b80356001600160a01b0381168114610a78575f80fd5b919050565b5f60208284031215610a8d575f80fd5b61035b82610a62565b5f805f60608486031215610aa8575f80fd5b610ab184610a62565b95602085013595506040909401359392505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610b0357610b03610ac6565b604052919050565b5f60608284031215610b1b575f80fd5b6040516060810181811067ffffffffffffffff82111715610b3e57610b3e610ac6565b604052905080610b4d83610a62565b815260208301356020820152604083013560408201525092915050565b5f6020808385031215610b7b575f80fd5b823567ffffffffffffffff80821115610b92575f80fd5b818501915085601f830112610ba5575f80fd5b813581811115610bb757610bb7610ac6565b610bc5848260051b01610ada565b81815284810192506060918202840185019188831115610be3575f80fd5b938501935b82851015610c0957610bfa8986610b0b565b84529384019392850192610be8565b50979650505050505050565b5f60608284031215610c25575f80fd5b61035b8383610b0b565b634e487b7160e01b5f52603260045260245ffd5b8082028115828204841417610c6657634e487b7160e01b5f52601160045260245ffd5b92915050565b5f82610c8657634e487b7160e01b5f52601260045260245ffd5b500490565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6001600160a01b03831681526040602082018190525f9061035890830184610c8b565b5f60208284031215610cec575f80fd5b8151801515811461035b575f80fd5b6001600160a01b038481168252831660208201526060604082018190525f90610d2690830184610c8b565b95945050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fe73657456616c6964617465436f6e6669672856616c6964617465436f6e66696729a26469706673582212202a759685f3814b31ac15dae08fdeb5a482b0e3e2fa54530882f522538edec12464736f6c63430008190033", - "deployedBytecode": "0x608060405234801561000f575f80fd5b50600436106100b1575f3560e01c8063af9e6c5b1161006e578063af9e6c5b1461013a578063b4a0bdf31461014d578063bca9e1161461015e578063c4d66de8146101bb578063e30c3978146101ce578063f2fde38b146101df575f80fd5b80630e32cb86146100b5578063715018a6146100ca57806379ba5097146100d25780638da5cb5b146100da57806397c7033e146101045780639c35761514610127575b5f80fd5b6100c86100c3366004610a7d565b6101f2565b005b6100c8610206565b6100c8610219565b6033546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b610117610112366004610a96565b610295565b60405190151581526020016100fb565b6100c8610135366004610b6a565b610362565b6100c8610148366004610c15565b6103ed565b6097546001600160a01b03166100e7565b61019661016c366004610a7d565b60c96020525f90815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b0390941684526020840192909252908201526060016100fb565b6100c86101c9366004610a7d565b6105a2565b6065546001600160a01b03166100e7565b6100c86101ed366004610a7d565b6106b0565b6101fa610721565b6102038161077b565b50565b61020e610721565b6102175f610839565b565b60655433906001600160a01b0316811461028c5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084015b60405180910390fd5b61020381610839565b6001600160a01b0383165f90815260c9602052604081206001015481036102fe5760405162461bcd60e51b815260206004820152601b60248201527f76616c69646174696f6e20636f6e666967206e6f7420657869737400000000006044820152606401610283565b815f0361034d5760405162461bcd60e51b815260206004820152601960248201527f616e63686f72207072696365206973206e6f742076616c6964000000000000006044820152606401610283565b610358848484610852565b90505b9392505050565b80515f8190036103b45760405162461bcd60e51b815260206004820152601e60248201527f696e76616c69642076616c696461746520636f6e666967206c656e67746800006044820152606401610283565b5f5b818110156103e8576103e08382815181106103d3576103d3610c2f565b60200260200101516103ed565b6001016103b6565b505050565b61040e604051806060016040528060218152602001610d7b602191396108c0565b80516001600160a01b03166104655760405162461bcd60e51b815260206004820152601b60248201527f61737365742063616e2774206265207a65726f206164647265737300000000006044820152606401610283565b6020810151158061047857506040810151155b156104be5760405162461bcd60e51b8152602060048201526016602482015275626f756e64206d75737420626520706f73697469766560501b6044820152606401610283565b806040015181602001511161052a5760405162461bcd60e51b815260206004820152602c60248201527f757070657220626f756e64206d75737420626520686967686572207468616e2060448201526b1b1bdddb995c88189bdd5b9960a21b6064820152608401610283565b80516001600160a01b039081165f90815260c960209081526040808320855181546001600160a01b03191695169485178155918501516001830181905581860151600290930183905590519193909290917f28e2d96bdcf74fe6203e40d159d27ec2e15230239c0aee4a0a914196c550e6d19190a450565b5f54610100900460ff16158080156105c057505f54600160ff909116105b806105d95750303b1580156105d957505f5460ff166001145b61063c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610283565b5f805460ff19166001179055801561065d575f805461ff0019166101001790555b61066682610957565b80156106ac575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b5050565b6106b8610721565b606580546001600160a01b0383166001600160a01b031990911681179091556106e96033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6033546001600160a01b031633146102175760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610283565b6001600160a01b0381166107df5760405162461bcd60e51b815260206004820152602560248201527f696e76616c696420616365737320636f6e74726f6c206d616e61676572206164604482015264647265737360d81b6064820152608401610283565b609780546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa091016106a3565b606580546001600160a01b03191690556102038161098e565b5f82156108b7575f8361086d84670de0b6b3a7640000610c43565b6108779190610c6c565b6001600160a01b0386165f90815260c9602052604090206001810154600290910154919250908183118015906108ad5750808310155b935050505061035b565b505f9392505050565b6097546040516318c5e8ab60e01b81525f916001600160a01b0316906318c5e8ab906108f29033908690600401610cb9565b602060405180830381865afa15801561090d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109319190610cdc565b9050806106ac57333083604051634a3fa29360e01b815260040161028393929190610cfb565b5f54610100900460ff1661097d5760405162461bcd60e51b815260040161028390610d2f565b6109856109df565b61020381610a0d565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff16610a055760405162461bcd60e51b815260040161028390610d2f565b610217610a33565b5f54610100900460ff166101fa5760405162461bcd60e51b815260040161028390610d2f565b5f54610100900460ff16610a595760405162461bcd60e51b815260040161028390610d2f565b61021733610839565b80356001600160a01b0381168114610a78575f80fd5b919050565b5f60208284031215610a8d575f80fd5b61035b82610a62565b5f805f60608486031215610aa8575f80fd5b610ab184610a62565b95602085013595506040909401359392505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610b0357610b03610ac6565b604052919050565b5f60608284031215610b1b575f80fd5b6040516060810181811067ffffffffffffffff82111715610b3e57610b3e610ac6565b604052905080610b4d83610a62565b815260208301356020820152604083013560408201525092915050565b5f6020808385031215610b7b575f80fd5b823567ffffffffffffffff80821115610b92575f80fd5b818501915085601f830112610ba5575f80fd5b813581811115610bb757610bb7610ac6565b610bc5848260051b01610ada565b81815284810192506060918202840185019188831115610be3575f80fd5b938501935b82851015610c0957610bfa8986610b0b565b84529384019392850192610be8565b50979650505050505050565b5f60608284031215610c25575f80fd5b61035b8383610b0b565b634e487b7160e01b5f52603260045260245ffd5b8082028115828204841417610c6657634e487b7160e01b5f52601160045260245ffd5b92915050565b5f82610c8657634e487b7160e01b5f52601260045260245ffd5b500490565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6001600160a01b03831681526040602082018190525f9061035890830184610c8b565b5f60208284031215610cec575f80fd5b8151801515811461035b575f80fd5b6001600160a01b038481168252831660208201526060604082018190525f90610d2690830184610c8b565b95945050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fe73657456616c6964617465436f6e6669672856616c6964617465436f6e66696729a26469706673582212202a759685f3814b31ac15dae08fdeb5a482b0e3e2fa54530882f522538edec12464736f6c63430008190033", - "devdoc": { - "author": "Venus", - "events": { - "Initialized(uint8)": { - "details": "Triggered when the contract has been initialized or reinitialized." - } - }, - "kind": "dev", - "methods": { - "acceptOwnership()": { - "details": "The new owner accepts the ownership transfer." - }, - "constructor": { - "custom:oz-upgrades-unsafe-allow": "constructor" - }, - "initialize(address)": { - "params": { - "accessControlManager_": "Address of the access control manager contract" - } - }, - "owner()": { - "details": "Returns the address of the current owner." - }, - "pendingOwner()": { - "details": "Returns the address of the pending owner." - }, - "renounceOwnership()": { - "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner." - }, - "setAccessControlManager(address)": { - "custom:access": "Only Governance", - "custom:event": "Emits NewAccessControlManager event", - "details": "Admin function to set address of AccessControlManager", - "params": { - "accessControlManager_": "The new address of the AccessControlManager" - } - }, - "setValidateConfig((address,uint256,uint256))": { - "custom:access": "Only Governance", - "custom:error": "Null address error is thrown if asset address is nullRange error thrown if bound ratio is not positiveRange error thrown if lower bound is greater than or equal to upper bound", - "custom:event": "Emits ValidateConfigAdded when a validation config is successfully set", - "params": { - "config": "Validation config struct" - } - }, - "setValidateConfigs((address,uint256,uint256)[])": { - "custom:access": "Only Governance", - "custom:error": "Zero length error is thrown if length of the config array is 0", - "custom:event": "Emits ValidateConfigAdded for each validation config that is successfully set", - "params": { - "configs": "Array of validation configs" - } - }, - "transferOwnership(address)": { - "details": "Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner." - }, - "validatePriceWithAnchorPrice(address,uint256,uint256)": { - "custom:error": "Missing error thrown if asset config is not setPrice error thrown if anchor price is not valid", - "params": { - "asset": "asset address", - "reportedPrice": "The price to be tested" - } - } - }, - "title": "BoundValidator", - "version": 1 - }, - "userdoc": { - "errors": { - "Unauthorized(address,address,string)": [ - { - "notice": "Thrown when the action is prohibited by AccessControlManager" - } - ] - }, - "events": { - "NewAccessControlManager(address,address)": { - "notice": "Emitted when access control manager contract address is changed" - }, - "ValidateConfigAdded(address,uint256,uint256)": { - "notice": "Emit this event when new validation configs are added" - } - }, - "kind": "user", - "methods": { - "accessControlManager()": { - "notice": "Returns the address of the access control manager contract" - }, - "constructor": { - "notice": "Constructor for the implementation contract. Sets immutable variables." - }, - "initialize(address)": { - "notice": "Initializes the owner of the contract" - }, - "setAccessControlManager(address)": { - "notice": "Sets the address of AccessControlManager" - }, - "setValidateConfig((address,uint256,uint256))": { - "notice": "Add a single validation config" - }, - "setValidateConfigs((address,uint256,uint256)[])": { - "notice": "Add multiple validation configs at the same time" - }, - "validateConfigs(address)": { - "notice": "validation configs by asset" - }, - "validatePriceWithAnchorPrice(address,uint256,uint256)": { - "notice": "Test reported asset price against anchor price" - } - }, - "notice": "The BoundValidator contract is used to validate prices fetched from two different sources. Each asset has an upper and lower bound ratio set in the config. In order for a price to be valid it must fall within this range of the validator price.", - "version": 1 - }, - "storageLayout": { - "storage": [ - { - "astId": 349, - "contract": "contracts/oracles/BoundValidator.sol:BoundValidator", - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8" - }, - { - "astId": 352, - "contract": "contracts/oracles/BoundValidator.sol:BoundValidator", - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool" - }, - { - "astId": 1019, - "contract": "contracts/oracles/BoundValidator.sol:BoundValidator", - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage" - }, - { - "astId": 221, - "contract": "contracts/oracles/BoundValidator.sol:BoundValidator", - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address" - }, - { - "astId": 341, - "contract": "contracts/oracles/BoundValidator.sol:BoundValidator", - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 114, - "contract": "contracts/oracles/BoundValidator.sol:BoundValidator", - "label": "_pendingOwner", - "offset": 0, - "slot": "101", - "type": "t_address" - }, - { - "astId": 208, - "contract": "contracts/oracles/BoundValidator.sol:BoundValidator", - "label": "__gap", - "offset": 0, - "slot": "102", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 3586, - "contract": "contracts/oracles/BoundValidator.sol:BoundValidator", - "label": "_accessControlManager", - "offset": 0, - "slot": "151", - "type": "t_contract(IAccessControlManagerV8)3771" - }, - { - "astId": 3591, - "contract": "contracts/oracles/BoundValidator.sol:BoundValidator", - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 6354, - "contract": "contracts/oracles/BoundValidator.sol:BoundValidator", - "label": "validateConfigs", - "offset": 0, - "slot": "201", - "type": "t_mapping(t_address,t_struct(ValidateConfig)6348_storage)" - }, - { - "astId": 6582, - "contract": "contracts/oracles/BoundValidator.sol:BoundValidator", - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage" - } - ], - "types": { - "t_address": { - "encoding": "inplace", - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "base": "t_uint256", - "encoding": "inplace", - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "base": "t_uint256", - "encoding": "inplace", - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "encoding": "inplace", - "label": "bool", - "numberOfBytes": "1" - }, - "t_contract(IAccessControlManagerV8)3771": { - "encoding": "inplace", - "label": "contract IAccessControlManagerV8", - "numberOfBytes": "20" - }, - "t_mapping(t_address,t_struct(ValidateConfig)6348_storage)": { - "encoding": "mapping", - "key": "t_address", - "label": "mapping(address => struct BoundValidator.ValidateConfig)", - "numberOfBytes": "32", - "value": "t_struct(ValidateConfig)6348_storage" - }, - "t_struct(ValidateConfig)6348_storage": { - "encoding": "inplace", - "label": "struct BoundValidator.ValidateConfig", - "members": [ - { - "astId": 6341, - "contract": "contracts/oracles/BoundValidator.sol:BoundValidator", - "label": "asset", - "offset": 0, - "slot": "0", - "type": "t_address" - }, - { - "astId": 6344, - "contract": "contracts/oracles/BoundValidator.sol:BoundValidator", - "label": "upperBoundRatio", - "offset": 0, - "slot": "1", - "type": "t_uint256" - }, - { - "astId": 6347, - "contract": "contracts/oracles/BoundValidator.sol:BoundValidator", - "label": "lowerBoundRatio", - "offset": 0, - "slot": "2", - "type": "t_uint256" - } - ], - "numberOfBytes": "96" - }, - "t_uint256": { - "encoding": "inplace", - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "encoding": "inplace", - "label": "uint8", - "numberOfBytes": "1" - } - } - } -} diff --git a/deployments/berachainbepolia/BoundValidator_Proxy.json b/deployments/berachainbepolia/BoundValidator_Proxy.json deleted file mode 100644 index 5859b204..00000000 --- a/deployments/berachainbepolia/BoundValidator_Proxy.json +++ /dev/null @@ -1,262 +0,0 @@ -{ - "address": "0xd3A635930300ea87548A1C3428Ac5DDfE3FFE66E", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "admin_", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "stateMutability": "payable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "beacon", - "type": "address" - } - ], - "name": "BeaconUpgraded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "stateMutability": "payable", - "type": "fallback" - }, - { - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "admin_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "implementation_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "stateMutability": "payable", - "type": "receive" - } - ], - "transactionHash": "0x6b8a15aaa9449510cbba3fc93e3065b5d28f95cdd2fc915fc1c7de5545531b66", - "receipt": { - "to": null, - "from": "0x18BDb05DD1A95677f4381cfb4db52D342dF5C00d", - "contractAddress": "0xd3A635930300ea87548A1C3428Ac5DDfE3FFE66E", - "transactionIndex": 1, - "gasUsed": "589302", - "logsBloom": "0x00000000000000000000000000000000400000000000000000800000000001000000000000000000000000000000000000000000000000000000000000008040000000000000000000000000000002000001000000000000000000000104000000000000020000000000020000000800000000800000000000000010000000400000000000000000000000000000000000000000000080000000000000800000000000000000000000000000000400000000000000800000000000000000000000000020000000000000000000040000000000000400000000020000000020000000000400000000000000000002000000000800000000000000000000000000", - "blockHash": "0xacb4a382a51ad4bfb77f4d2703b8c4b06b778a8fd1888c6fe3cf146c3b8b4f96", - "transactionHash": "0x6b8a15aaa9449510cbba3fc93e3065b5d28f95cdd2fc915fc1c7de5545531b66", - "logs": [ - { - "transactionIndex": 1, - "blockNumber": 2923586, - "transactionHash": "0x6b8a15aaa9449510cbba3fc93e3065b5d28f95cdd2fc915fc1c7de5545531b66", - "address": "0xd3A635930300ea87548A1C3428Ac5DDfE3FFE66E", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x000000000000000000000000d24c0795baea6d79a45def90889bc4dd4fd19a62" - ], - "data": "0x", - "logIndex": 25, - "blockHash": "0xacb4a382a51ad4bfb77f4d2703b8c4b06b778a8fd1888c6fe3cf146c3b8b4f96" - }, - { - "transactionIndex": 1, - "blockNumber": 2923586, - "transactionHash": "0x6b8a15aaa9449510cbba3fc93e3065b5d28f95cdd2fc915fc1c7de5545531b66", - "address": "0xd3A635930300ea87548A1C3428Ac5DDfE3FFE66E", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x00000000000000000000000018bdb05dd1a95677f4381cfb4db52d342df5c00d" - ], - "data": "0x", - "logIndex": 26, - "blockHash": "0xacb4a382a51ad4bfb77f4d2703b8c4b06b778a8fd1888c6fe3cf146c3b8b4f96" - }, - { - "transactionIndex": 1, - "blockNumber": 2923586, - "transactionHash": "0x6b8a15aaa9449510cbba3fc93e3065b5d28f95cdd2fc915fc1c7de5545531b66", - "address": "0xd3A635930300ea87548A1C3428Ac5DDfE3FFE66E", - "topics": ["0x66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa0"], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000243313c1cc198ff80756ed2ef14d9dcd94ee762b", - "logIndex": 27, - "blockHash": "0xacb4a382a51ad4bfb77f4d2703b8c4b06b778a8fd1888c6fe3cf146c3b8b4f96" - }, - { - "transactionIndex": 1, - "blockNumber": 2923586, - "transactionHash": "0x6b8a15aaa9449510cbba3fc93e3065b5d28f95cdd2fc915fc1c7de5545531b66", - "address": "0xd3A635930300ea87548A1C3428Ac5DDfE3FFE66E", - "topics": ["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "logIndex": 28, - "blockHash": "0xacb4a382a51ad4bfb77f4d2703b8c4b06b778a8fd1888c6fe3cf146c3b8b4f96" - }, - { - "transactionIndex": 1, - "blockNumber": 2923586, - "transactionHash": "0x6b8a15aaa9449510cbba3fc93e3065b5d28f95cdd2fc915fc1c7de5545531b66", - "address": "0xd3A635930300ea87548A1C3428Ac5DDfE3FFE66E", - "topics": ["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"], - "data": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009f0cf4ed50ed01994900ce9ee1ae85bfecd5c66", - "logIndex": 29, - "blockHash": "0xacb4a382a51ad4bfb77f4d2703b8c4b06b778a8fd1888c6fe3cf146c3b8b4f96" - } - ], - "blockNumber": 2923586, - "cumulativeGasUsed": "1377371", - "status": 1, - "byzantium": true - }, - "args": [ - "0xd24c0795BaEA6D79a45def90889bc4Dd4fd19a62", - "0x09f0Cf4eD50ed01994900CE9ee1ae85BFECd5c66", - "0xc4d66de8000000000000000000000000243313c1cc198ff80756ed2ef14d9dcd94ee762b" - ], - "numDeployments": 1, - "solcInputHash": "9703a470efb9e8d7aa23c7bd832fbb1c", - "metadata": "{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_logic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"implementation_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \\\"admin cannot fallback to proxy target\\\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\",\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is upgraded.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"admin()\":{\"details\":\"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\"},\"constructor\":{\"details\":\"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\"},\"implementation()\":{\"details\":\"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\"},\"upgradeTo(address)\":{\"details\":\"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\"},\"upgradeToAndCall(address,bytes)\":{\"details\":\"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"hardhat-deploy/solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol\":\"OptimizedTransparentUpgradeableProxy\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"hardhat-deploy/solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x93b4e21c931252739a1ec13ea31d3d35a5c068be3163ccab83e4d70c40355f03\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializating the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256(\\\"eip1967.proxy.implementation\\\")) - 1));\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n\",\"keccak256\":\"0x6309f9f39dc6f4f45a24f296543867aa358e32946cd6b2874627a996d606b3a0\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967Upgrade {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view virtual returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Emitted when the beacon is upgraded.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(Address.isContract(IBeacon(newBeacon).implementation()), \\\"ERC1967: beacon implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(\\n address newBeacon,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x17668652127feebed0ce8d9431ef95ccc8c4292f03e3b8cf06c6ca16af396633\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internall call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overriden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xd5d1fd16e9faff7fcb3a52e02a8d49156f42a38a03f07b5f1810c21c2149a8ab\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n }\\n}\\n\",\"keccak256\":\"0x3777e696b62134e6177440dbe6e6601c0c156a443f57167194b67e75527439de\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/StorageSlot.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xfe1b7a9aa2a530a9e705b220e26cd584e2fbdc9602a3a1066032b12816b46aca\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/transparent/TransparentUpgradeableProxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../openzeppelin/proxy/ERC1967/ERC1967Proxy.sol\\\";\\n\\n/**\\n * @dev This contract implements a proxy that is upgradeable by an admin.\\n *\\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\\n * clashing], which can potentially be used in an attack, this contract uses the\\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\\n * things that go hand in hand:\\n *\\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\\n * that call matches one of the admin functions exposed by the proxy itself.\\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\\n * \\\"admin cannot fallback to proxy target\\\".\\n *\\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\\n * the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due\\n * to sudden errors when trying to call a function from the proxy implementation.\\n *\\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\\n */\\ncontract OptimizedTransparentUpgradeableProxy is ERC1967Proxy {\\n address internal immutable _ADMIN;\\n\\n /**\\n * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\\n * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\\n */\\n constructor(\\n address _logic,\\n address admin_,\\n bytes memory _data\\n ) payable ERC1967Proxy(_logic, _data) {\\n assert(_ADMIN_SLOT == bytes32(uint256(keccak256(\\\"eip1967.proxy.admin\\\")) - 1));\\n _ADMIN = admin_;\\n\\n // still store it to work with EIP-1967\\n bytes32 slot = _ADMIN_SLOT;\\n // solhint-disable-next-line no-inline-assembly\\n assembly {\\n sstore(slot, admin_)\\n }\\n emit AdminChanged(address(0), admin_);\\n }\\n\\n /**\\n * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\\n */\\n modifier ifAdmin() {\\n if (msg.sender == _getAdmin()) {\\n _;\\n } else {\\n _fallback();\\n }\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n */\\n function admin() external ifAdmin returns (address admin_) {\\n admin_ = _getAdmin();\\n }\\n\\n /**\\n * @dev Returns the current implementation.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\\n */\\n function implementation() external ifAdmin returns (address implementation_) {\\n implementation_ = _implementation();\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\\n */\\n function upgradeTo(address newImplementation) external ifAdmin {\\n _upgradeToAndCall(newImplementation, bytes(\\\"\\\"), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\\n * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\\n * proxied contract.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\\n */\\n function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {\\n _upgradeToAndCall(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _admin() internal view virtual returns (address) {\\n return _getAdmin();\\n }\\n\\n /**\\n * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.\\n */\\n function _beforeFallback() internal virtual override {\\n require(msg.sender != _getAdmin(), \\\"TransparentUpgradeableProxy: admin cannot fallback to proxy target\\\");\\n super._beforeFallback();\\n }\\n\\n function _getAdmin() internal view virtual override returns (address) {\\n return _ADMIN;\\n }\\n}\\n\",\"keccak256\":\"0xa30117644e27fa5b49e162aae2f62b36c1aca02f801b8c594d46e2024963a534\",\"license\":\"MIT\"}},\"version\":1}", - "bytecode": "0x60a0604052604051610c8f380380610c8f8339810160408190526100229161039f565b828161004f60017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd61046a565b5f80516020610c488339815191521461006a5761006a610489565b61007582825f610123565b506100a3905060017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610461046a565b5f80516020610c28833981519152146100be576100be610489565b6001600160a01b03821660808190525f80516020610c28833981519152838155604080515f8152602081019390935290917f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a1505050506104e8565b61012c8361014e565b5f825111806101385750805b1561014957610147838361018d565b505b505050565b610157816101bb565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606101b28383604051806060016040528060278152602001610c686027913961025b565b90505b92915050565b6001600160a01b0381163b61022d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b5f80516020610c4883398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b60606001600160a01b0384163b6102c35760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610224565b5f80856001600160a01b0316856040516102dd919061049d565b5f60405180830381855af49150503d805f8114610315576040519150601f19603f3d011682016040523d82523d5f602084013e61031a565b606091505b50909250905061032b828286610337565b925050505b9392505050565b60608315610346575081610330565b8251156103565782518084602001fd5b8160405162461bcd60e51b815260040161022491906104b3565b80516001600160a01b0381168114610386575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f805f606084860312156103b1575f80fd5b6103ba84610370565b92506103c860208501610370565b60408501519092506001600160401b03808211156103e4575f80fd5b818601915086601f8301126103f7575f80fd5b8151818111156104095761040961038b565b604051601f8201601f19908116603f011681019083821181831017156104315761043161038b565b81604052828152896020848701011115610449575f80fd5b8260208601602083015e5f6020848301015280955050505050509250925092565b818103818111156101b557634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52600160045260245ffd5b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6080516107066105225f395f818160eb0152818161013f015281816101bf0152818161020801528181610239015261025d01526107065ff3fe608060405260043610610042575f3560e01c80633659cfe6146100595780634f1ef286146100785780635c60da1b1461008b578063f851a440146100bb57610051565b366100515761004f6100cf565b005b61004f6100cf565b348015610064575f80fd5b5061004f6100733660046105c9565b6100e9565b61004f6100863660046105e2565b61013d565b348015610096575f80fd5b5061009f6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c6575f80fd5b5061009f610205565b6100d761025b565b6100e76100e2610309565b61033b565b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610135576101328160405180602001604052805f8152505f610359565b50565b6101326100cf565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101b4576101af8383838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525060019250610359915050565b505050565b6101af6100cf565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101fa576101f5610309565b905090565b6102026100cf565b90565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101fa57507f000000000000000000000000000000000000000000000000000000000000000090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036100e75760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b5f6101f57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b365f80375f80365f845af43d5f803e808015610355573d5ff35b3d5ffd5b61036283610383565b5f8251118061036e5750805b156101af5761037d83836103c2565b50505050565b61038c816103ee565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103e783836040518060600160405280602781526020016106aa6027913961049c565b9392505050565b6001600160a01b0381163b61045b5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610300565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60606001600160a01b0384163b6105045760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610300565b5f80856001600160a01b03168560405161051e919061065e565b5f60405180830381855af49150503d805f8114610556576040519150601f19603f3d011682016040523d82523d5f602084013e61055b565b606091505b509150915061056b828286610575565b9695505050505050565b606083156105845750816103e7565b8251156105945782518084602001fd5b8160405162461bcd60e51b81526004016103009190610674565b80356001600160a01b03811681146105c4575f80fd5b919050565b5f602082840312156105d9575f80fd5b6103e7826105ae565b5f805f604084860312156105f4575f80fd5b6105fd846105ae565b9250602084013567ffffffffffffffff80821115610619575f80fd5b818601915086601f83011261062c575f80fd5b81358181111561063a575f80fd5b87602082850101111561064b575f80fd5b6020830194508093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d447ec2a4b47962d9e959ca0ec6571d77747999259501e773b66fdcaef0e50bf64736f6c63430008190033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564", - "deployedBytecode": "0x608060405260043610610042575f3560e01c80633659cfe6146100595780634f1ef286146100785780635c60da1b1461008b578063f851a440146100bb57610051565b366100515761004f6100cf565b005b61004f6100cf565b348015610064575f80fd5b5061004f6100733660046105c9565b6100e9565b61004f6100863660046105e2565b61013d565b348015610096575f80fd5b5061009f6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c6575f80fd5b5061009f610205565b6100d761025b565b6100e76100e2610309565b61033b565b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610135576101328160405180602001604052805f8152505f610359565b50565b6101326100cf565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101b4576101af8383838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525060019250610359915050565b505050565b6101af6100cf565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101fa576101f5610309565b905090565b6102026100cf565b90565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101fa57507f000000000000000000000000000000000000000000000000000000000000000090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036100e75760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b5f6101f57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b365f80375f80365f845af43d5f803e808015610355573d5ff35b3d5ffd5b61036283610383565b5f8251118061036e5750805b156101af5761037d83836103c2565b50505050565b61038c816103ee565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103e783836040518060600160405280602781526020016106aa6027913961049c565b9392505050565b6001600160a01b0381163b61045b5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610300565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60606001600160a01b0384163b6105045760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610300565b5f80856001600160a01b03168560405161051e919061065e565b5f60405180830381855af49150503d805f8114610556576040519150601f19603f3d011682016040523d82523d5f602084013e61055b565b606091505b509150915061056b828286610575565b9695505050505050565b606083156105845750816103e7565b8251156105945782518084602001fd5b8160405162461bcd60e51b81526004016103009190610674565b80356001600160a01b03811681146105c4575f80fd5b919050565b5f602082840312156105d9575f80fd5b6103e7826105ae565b5f805f604084860312156105f4575f80fd5b6105fd846105ae565b9250602084013567ffffffffffffffff80821115610619575f80fd5b818601915086601f83011261062c575f80fd5b81358181111561063a575f80fd5b87602082850101111561064b575f80fd5b6020830194508093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d447ec2a4b47962d9e959ca0ec6571d77747999259501e773b66fdcaef0e50bf64736f6c63430008190033", - "devdoc": { - "details": "This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \"admin cannot fallback to proxy target\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.", - "events": { - "AdminChanged(address,address)": { - "details": "Emitted when the admin account has changed." - }, - "BeaconUpgraded(address)": { - "details": "Emitted when the beacon is upgraded." - }, - "Upgraded(address)": { - "details": "Emitted when the implementation is upgraded." - } - }, - "kind": "dev", - "methods": { - "admin()": { - "details": "Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`" - }, - "constructor": { - "details": "Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}." - }, - "implementation()": { - "details": "Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`" - }, - "upgradeTo(address)": { - "details": "Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}." - }, - "upgradeToAndCall(address,bytes)": { - "details": "Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}." - } - }, - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": {}, - "version": 1 - }, - "storageLayout": { - "storage": [], - "types": null - } -} diff --git a/deployments/berachainbepolia/ChainlinkOracle.json b/deployments/berachainbepolia/ChainlinkOracle.json deleted file mode 100644 index 7584d8f6..00000000 --- a/deployments/berachainbepolia/ChainlinkOracle.json +++ /dev/null @@ -1,658 +0,0 @@ -{ - "address": "0xF7451caCcb32E6E3695e4B4bcF42152D57B73aD5", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "beacon", - "type": "address" - } - ], - "name": "BeaconUpgraded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "stateMutability": "payable", - "type": "fallback" - }, - { - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "admin_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "implementation_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "stateMutability": "payable", - "type": "receive" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "internalType": "address", - "name": "calledContract", - "type": "address" - }, - { - "internalType": "string", - "name": "methodSignature", - "type": "string" - } - ], - "name": "Unauthorized", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "version", - "type": "uint8" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "oldAccessControlManager", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAccessControlManager", - "type": "address" - } - ], - "name": "NewAccessControlManager", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferStarted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "previousPriceMantissa", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "newPriceMantissa", - "type": "uint256" - } - ], - "name": "PricePosted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "feed", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "maxStalePeriod", - "type": "uint256" - } - ], - "name": "TokenConfigAdded", - "type": "event" - }, - { - "inputs": [], - "name": "NATIVE_TOKEN_ADDR", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "acceptOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "accessControlManager", - "outputs": [ - { - "internalType": "contract IAccessControlManagerV8", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - } - ], - "name": "getPrice", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "accessControlManager_", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "prices", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "accessControlManager_", - "type": "address" - } - ], - "name": "setAccessControlManager", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "uint256", - "name": "price", - "type": "uint256" - } - ], - "name": "setDirectPrice", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "address", - "name": "feed", - "type": "address" - }, - { - "internalType": "uint256", - "name": "maxStalePeriod", - "type": "uint256" - } - ], - "internalType": "struct ChainlinkOracle.TokenConfig", - "name": "tokenConfig", - "type": "tuple" - } - ], - "name": "setTokenConfig", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "address", - "name": "feed", - "type": "address" - }, - { - "internalType": "uint256", - "name": "maxStalePeriod", - "type": "uint256" - } - ], - "internalType": "struct ChainlinkOracle.TokenConfig[]", - "name": "tokenConfigs_", - "type": "tuple[]" - } - ], - "name": "setTokenConfigs", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "tokenConfigs", - "outputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "address", - "name": "feed", - "type": "address" - }, - { - "internalType": "uint256", - "name": "maxStalePeriod", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "admin_", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "stateMutability": "payable", - "type": "constructor" - } - ], - "transactionHash": "0xf918daf7963ac3f8f5f17845a8a6aff659201f2a226dfd5528a81c2ef0e14d16", - "receipt": { - "to": null, - "from": "0x18BDb05DD1A95677f4381cfb4db52D342dF5C00d", - "contractAddress": "0xF7451caCcb32E6E3695e4B4bcF42152D57B73aD5", - "transactionIndex": 2, - "gasUsed": "589258", - "logsBloom": "0x00000000000000000000000000000002400000000000000000800000000000000000001000000000000000000000000000000000000000000000000000008040000000000000000000001000000002000001000000000000000000000100000000000000020000000000020000000800000000800000000000000000000000400000000000000000000000000000000000400000000082000000000000800000000000000000200000000000000400000000000000800000000000000000000000000020000000000000000000040000000000000400000000000000000020000000000000000000000000000000000000000800000000000000000000000000", - "blockHash": "0xb3863e9a8e48064c6f5231a4f7cdfe39f91bf0ba56598dfb144ca837865851fb", - "transactionHash": "0xf918daf7963ac3f8f5f17845a8a6aff659201f2a226dfd5528a81c2ef0e14d16", - "logs": [ - { - "transactionIndex": 2, - "blockNumber": 2923600, - "transactionHash": "0xf918daf7963ac3f8f5f17845a8a6aff659201f2a226dfd5528a81c2ef0e14d16", - "address": "0xF7451caCcb32E6E3695e4B4bcF42152D57B73aD5", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000009ea68754e5ab4717b2b0dd310f7fa03a9c57c0df" - ], - "data": "0x", - "logIndex": 40, - "blockHash": "0xb3863e9a8e48064c6f5231a4f7cdfe39f91bf0ba56598dfb144ca837865851fb" - }, - { - "transactionIndex": 2, - "blockNumber": 2923600, - "transactionHash": "0xf918daf7963ac3f8f5f17845a8a6aff659201f2a226dfd5528a81c2ef0e14d16", - "address": "0xF7451caCcb32E6E3695e4B4bcF42152D57B73aD5", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x00000000000000000000000018bdb05dd1a95677f4381cfb4db52d342df5c00d" - ], - "data": "0x", - "logIndex": 41, - "blockHash": "0xb3863e9a8e48064c6f5231a4f7cdfe39f91bf0ba56598dfb144ca837865851fb" - }, - { - "transactionIndex": 2, - "blockNumber": 2923600, - "transactionHash": "0xf918daf7963ac3f8f5f17845a8a6aff659201f2a226dfd5528a81c2ef0e14d16", - "address": "0xF7451caCcb32E6E3695e4B4bcF42152D57B73aD5", - "topics": ["0x66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa0"], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000243313c1cc198ff80756ed2ef14d9dcd94ee762b", - "logIndex": 42, - "blockHash": "0xb3863e9a8e48064c6f5231a4f7cdfe39f91bf0ba56598dfb144ca837865851fb" - }, - { - "transactionIndex": 2, - "blockNumber": 2923600, - "transactionHash": "0xf918daf7963ac3f8f5f17845a8a6aff659201f2a226dfd5528a81c2ef0e14d16", - "address": "0xF7451caCcb32E6E3695e4B4bcF42152D57B73aD5", - "topics": ["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "logIndex": 43, - "blockHash": "0xb3863e9a8e48064c6f5231a4f7cdfe39f91bf0ba56598dfb144ca837865851fb" - }, - { - "transactionIndex": 2, - "blockNumber": 2923600, - "transactionHash": "0xf918daf7963ac3f8f5f17845a8a6aff659201f2a226dfd5528a81c2ef0e14d16", - "address": "0xF7451caCcb32E6E3695e4B4bcF42152D57B73aD5", - "topics": ["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"], - "data": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009f0cf4ed50ed01994900ce9ee1ae85bfecd5c66", - "logIndex": 44, - "blockHash": "0xb3863e9a8e48064c6f5231a4f7cdfe39f91bf0ba56598dfb144ca837865851fb" - } - ], - "blockNumber": 2923600, - "cumulativeGasUsed": "1797744", - "status": 1, - "byzantium": true - }, - "args": [ - "0x9eA68754e5AB4717b2b0Dd310f7fA03A9c57c0Df", - "0x09f0Cf4eD50ed01994900CE9ee1ae85BFECd5c66", - "0xc4d66de8000000000000000000000000243313c1cc198ff80756ed2ef14d9dcd94ee762b" - ], - "numDeployments": 1, - "solcInputHash": "9703a470efb9e8d7aa23c7bd832fbb1c", - "metadata": "{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_logic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"implementation_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \\\"admin cannot fallback to proxy target\\\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\",\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is upgraded.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"admin()\":{\"details\":\"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\"},\"constructor\":{\"details\":\"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\"},\"implementation()\":{\"details\":\"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\"},\"upgradeTo(address)\":{\"details\":\"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\"},\"upgradeToAndCall(address,bytes)\":{\"details\":\"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"hardhat-deploy/solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol\":\"OptimizedTransparentUpgradeableProxy\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"hardhat-deploy/solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x93b4e21c931252739a1ec13ea31d3d35a5c068be3163ccab83e4d70c40355f03\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializating the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256(\\\"eip1967.proxy.implementation\\\")) - 1));\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n\",\"keccak256\":\"0x6309f9f39dc6f4f45a24f296543867aa358e32946cd6b2874627a996d606b3a0\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967Upgrade {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view virtual returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Emitted when the beacon is upgraded.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(Address.isContract(IBeacon(newBeacon).implementation()), \\\"ERC1967: beacon implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(\\n address newBeacon,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x17668652127feebed0ce8d9431ef95ccc8c4292f03e3b8cf06c6ca16af396633\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internall call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overriden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xd5d1fd16e9faff7fcb3a52e02a8d49156f42a38a03f07b5f1810c21c2149a8ab\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n }\\n}\\n\",\"keccak256\":\"0x3777e696b62134e6177440dbe6e6601c0c156a443f57167194b67e75527439de\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/StorageSlot.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xfe1b7a9aa2a530a9e705b220e26cd584e2fbdc9602a3a1066032b12816b46aca\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/transparent/TransparentUpgradeableProxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../openzeppelin/proxy/ERC1967/ERC1967Proxy.sol\\\";\\n\\n/**\\n * @dev This contract implements a proxy that is upgradeable by an admin.\\n *\\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\\n * clashing], which can potentially be used in an attack, this contract uses the\\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\\n * things that go hand in hand:\\n *\\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\\n * that call matches one of the admin functions exposed by the proxy itself.\\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\\n * \\\"admin cannot fallback to proxy target\\\".\\n *\\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\\n * the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due\\n * to sudden errors when trying to call a function from the proxy implementation.\\n *\\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\\n */\\ncontract OptimizedTransparentUpgradeableProxy is ERC1967Proxy {\\n address internal immutable _ADMIN;\\n\\n /**\\n * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\\n * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\\n */\\n constructor(\\n address _logic,\\n address admin_,\\n bytes memory _data\\n ) payable ERC1967Proxy(_logic, _data) {\\n assert(_ADMIN_SLOT == bytes32(uint256(keccak256(\\\"eip1967.proxy.admin\\\")) - 1));\\n _ADMIN = admin_;\\n\\n // still store it to work with EIP-1967\\n bytes32 slot = _ADMIN_SLOT;\\n // solhint-disable-next-line no-inline-assembly\\n assembly {\\n sstore(slot, admin_)\\n }\\n emit AdminChanged(address(0), admin_);\\n }\\n\\n /**\\n * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\\n */\\n modifier ifAdmin() {\\n if (msg.sender == _getAdmin()) {\\n _;\\n } else {\\n _fallback();\\n }\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n */\\n function admin() external ifAdmin returns (address admin_) {\\n admin_ = _getAdmin();\\n }\\n\\n /**\\n * @dev Returns the current implementation.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\\n */\\n function implementation() external ifAdmin returns (address implementation_) {\\n implementation_ = _implementation();\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\\n */\\n function upgradeTo(address newImplementation) external ifAdmin {\\n _upgradeToAndCall(newImplementation, bytes(\\\"\\\"), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\\n * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\\n * proxied contract.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\\n */\\n function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {\\n _upgradeToAndCall(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _admin() internal view virtual returns (address) {\\n return _getAdmin();\\n }\\n\\n /**\\n * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.\\n */\\n function _beforeFallback() internal virtual override {\\n require(msg.sender != _getAdmin(), \\\"TransparentUpgradeableProxy: admin cannot fallback to proxy target\\\");\\n super._beforeFallback();\\n }\\n\\n function _getAdmin() internal view virtual override returns (address) {\\n return _ADMIN;\\n }\\n}\\n\",\"keccak256\":\"0xa30117644e27fa5b49e162aae2f62b36c1aca02f801b8c594d46e2024963a534\",\"license\":\"MIT\"}},\"version\":1}", - "bytecode": "0x60a0604052604051610c8f380380610c8f8339810160408190526100229161039f565b828161004f60017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd61046a565b5f80516020610c488339815191521461006a5761006a610489565b61007582825f610123565b506100a3905060017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610461046a565b5f80516020610c28833981519152146100be576100be610489565b6001600160a01b03821660808190525f80516020610c28833981519152838155604080515f8152602081019390935290917f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a1505050506104e8565b61012c8361014e565b5f825111806101385750805b1561014957610147838361018d565b505b505050565b610157816101bb565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606101b28383604051806060016040528060278152602001610c686027913961025b565b90505b92915050565b6001600160a01b0381163b61022d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b5f80516020610c4883398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b60606001600160a01b0384163b6102c35760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610224565b5f80856001600160a01b0316856040516102dd919061049d565b5f60405180830381855af49150503d805f8114610315576040519150601f19603f3d011682016040523d82523d5f602084013e61031a565b606091505b50909250905061032b828286610337565b925050505b9392505050565b60608315610346575081610330565b8251156103565782518084602001fd5b8160405162461bcd60e51b815260040161022491906104b3565b80516001600160a01b0381168114610386575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f805f606084860312156103b1575f80fd5b6103ba84610370565b92506103c860208501610370565b60408501519092506001600160401b03808211156103e4575f80fd5b818601915086601f8301126103f7575f80fd5b8151818111156104095761040961038b565b604051601f8201601f19908116603f011681019083821181831017156104315761043161038b565b81604052828152896020848701011115610449575f80fd5b8260208601602083015e5f6020848301015280955050505050509250925092565b818103818111156101b557634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52600160045260245ffd5b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6080516107066105225f395f818160eb0152818161013f015281816101bf0152818161020801528181610239015261025d01526107065ff3fe608060405260043610610042575f3560e01c80633659cfe6146100595780634f1ef286146100785780635c60da1b1461008b578063f851a440146100bb57610051565b366100515761004f6100cf565b005b61004f6100cf565b348015610064575f80fd5b5061004f6100733660046105c9565b6100e9565b61004f6100863660046105e2565b61013d565b348015610096575f80fd5b5061009f6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c6575f80fd5b5061009f610205565b6100d761025b565b6100e76100e2610309565b61033b565b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610135576101328160405180602001604052805f8152505f610359565b50565b6101326100cf565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101b4576101af8383838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525060019250610359915050565b505050565b6101af6100cf565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101fa576101f5610309565b905090565b6102026100cf565b90565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101fa57507f000000000000000000000000000000000000000000000000000000000000000090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036100e75760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b5f6101f57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b365f80375f80365f845af43d5f803e808015610355573d5ff35b3d5ffd5b61036283610383565b5f8251118061036e5750805b156101af5761037d83836103c2565b50505050565b61038c816103ee565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103e783836040518060600160405280602781526020016106aa6027913961049c565b9392505050565b6001600160a01b0381163b61045b5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610300565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60606001600160a01b0384163b6105045760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610300565b5f80856001600160a01b03168560405161051e919061065e565b5f60405180830381855af49150503d805f8114610556576040519150601f19603f3d011682016040523d82523d5f602084013e61055b565b606091505b509150915061056b828286610575565b9695505050505050565b606083156105845750816103e7565b8251156105945782518084602001fd5b8160405162461bcd60e51b81526004016103009190610674565b80356001600160a01b03811681146105c4575f80fd5b919050565b5f602082840312156105d9575f80fd5b6103e7826105ae565b5f805f604084860312156105f4575f80fd5b6105fd846105ae565b9250602084013567ffffffffffffffff80821115610619575f80fd5b818601915086601f83011261062c575f80fd5b81358181111561063a575f80fd5b87602082850101111561064b575f80fd5b6020830194508093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d447ec2a4b47962d9e959ca0ec6571d77747999259501e773b66fdcaef0e50bf64736f6c63430008190033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564", - "deployedBytecode": "0x608060405260043610610042575f3560e01c80633659cfe6146100595780634f1ef286146100785780635c60da1b1461008b578063f851a440146100bb57610051565b366100515761004f6100cf565b005b61004f6100cf565b348015610064575f80fd5b5061004f6100733660046105c9565b6100e9565b61004f6100863660046105e2565b61013d565b348015610096575f80fd5b5061009f6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c6575f80fd5b5061009f610205565b6100d761025b565b6100e76100e2610309565b61033b565b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610135576101328160405180602001604052805f8152505f610359565b50565b6101326100cf565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101b4576101af8383838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525060019250610359915050565b505050565b6101af6100cf565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101fa576101f5610309565b905090565b6102026100cf565b90565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101fa57507f000000000000000000000000000000000000000000000000000000000000000090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036100e75760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b5f6101f57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b365f80375f80365f845af43d5f803e808015610355573d5ff35b3d5ffd5b61036283610383565b5f8251118061036e5750805b156101af5761037d83836103c2565b50505050565b61038c816103ee565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103e783836040518060600160405280602781526020016106aa6027913961049c565b9392505050565b6001600160a01b0381163b61045b5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610300565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60606001600160a01b0384163b6105045760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610300565b5f80856001600160a01b03168560405161051e919061065e565b5f60405180830381855af49150503d805f8114610556576040519150601f19603f3d011682016040523d82523d5f602084013e61055b565b606091505b509150915061056b828286610575565b9695505050505050565b606083156105845750816103e7565b8251156105945782518084602001fd5b8160405162461bcd60e51b81526004016103009190610674565b80356001600160a01b03811681146105c4575f80fd5b919050565b5f602082840312156105d9575f80fd5b6103e7826105ae565b5f805f604084860312156105f4575f80fd5b6105fd846105ae565b9250602084013567ffffffffffffffff80821115610619575f80fd5b818601915086601f83011261062c575f80fd5b81358181111561063a575f80fd5b87602082850101111561064b575f80fd5b6020830194508093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d447ec2a4b47962d9e959ca0ec6571d77747999259501e773b66fdcaef0e50bf64736f6c63430008190033", - "execute": { - "methodName": "initialize", - "args": ["0x243313C1cC198FF80756ed2ef14D9dcd94Ee762b"] - }, - "implementation": "0x9eA68754e5AB4717b2b0Dd310f7fA03A9c57c0Df", - "devdoc": { - "details": "This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \"admin cannot fallback to proxy target\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.", - "events": { - "AdminChanged(address,address)": { - "details": "Emitted when the admin account has changed." - }, - "BeaconUpgraded(address)": { - "details": "Emitted when the beacon is upgraded." - }, - "Upgraded(address)": { - "details": "Emitted when the implementation is upgraded." - } - }, - "kind": "dev", - "methods": { - "admin()": { - "details": "Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`" - }, - "constructor": { - "details": "Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}." - }, - "implementation()": { - "details": "Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`" - }, - "upgradeTo(address)": { - "details": "Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}." - }, - "upgradeToAndCall(address,bytes)": { - "details": "Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}." - } - }, - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": {}, - "version": 1 - }, - "storageLayout": { - "storage": [], - "types": null - } -} diff --git a/deployments/berachainbepolia/ChainlinkOracle_Implementation.json b/deployments/berachainbepolia/ChainlinkOracle_Implementation.json deleted file mode 100644 index 3f0eded6..00000000 --- a/deployments/berachainbepolia/ChainlinkOracle_Implementation.json +++ /dev/null @@ -1,743 +0,0 @@ -{ - "address": "0x9eA68754e5AB4717b2b0Dd310f7fA03A9c57c0Df", - "abi": [ - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "internalType": "address", - "name": "calledContract", - "type": "address" - }, - { - "internalType": "string", - "name": "methodSignature", - "type": "string" - } - ], - "name": "Unauthorized", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "version", - "type": "uint8" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "oldAccessControlManager", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAccessControlManager", - "type": "address" - } - ], - "name": "NewAccessControlManager", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferStarted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "previousPriceMantissa", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "newPriceMantissa", - "type": "uint256" - } - ], - "name": "PricePosted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "feed", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "maxStalePeriod", - "type": "uint256" - } - ], - "name": "TokenConfigAdded", - "type": "event" - }, - { - "inputs": [], - "name": "NATIVE_TOKEN_ADDR", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "acceptOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "accessControlManager", - "outputs": [ - { - "internalType": "contract IAccessControlManagerV8", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - } - ], - "name": "getPrice", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "accessControlManager_", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "prices", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "accessControlManager_", - "type": "address" - } - ], - "name": "setAccessControlManager", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "uint256", - "name": "price", - "type": "uint256" - } - ], - "name": "setDirectPrice", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "address", - "name": "feed", - "type": "address" - }, - { - "internalType": "uint256", - "name": "maxStalePeriod", - "type": "uint256" - } - ], - "internalType": "struct ChainlinkOracle.TokenConfig", - "name": "tokenConfig", - "type": "tuple" - } - ], - "name": "setTokenConfig", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "address", - "name": "feed", - "type": "address" - }, - { - "internalType": "uint256", - "name": "maxStalePeriod", - "type": "uint256" - } - ], - "internalType": "struct ChainlinkOracle.TokenConfig[]", - "name": "tokenConfigs_", - "type": "tuple[]" - } - ], - "name": "setTokenConfigs", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "tokenConfigs", - "outputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "address", - "name": "feed", - "type": "address" - }, - { - "internalType": "uint256", - "name": "maxStalePeriod", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "transactionHash": "0xadd166106b70a307544c94743ca6b448c10df99d7aa8c50d3e670c4ab116bf2c", - "receipt": { - "to": null, - "from": "0x18BDb05DD1A95677f4381cfb4db52D342dF5C00d", - "contractAddress": "0x9eA68754e5AB4717b2b0Dd310f7fA03A9c57c0Df", - "transactionIndex": 0, - "gasUsed": "1111576", - "logsBloom": "0x00000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x8f16283a0cf5a05e70e02df3687597fafaf3d7eba2c9078e7663e7222efad6f7", - "transactionHash": "0xadd166106b70a307544c94743ca6b448c10df99d7aa8c50d3e670c4ab116bf2c", - "logs": [ - { - "transactionIndex": 0, - "blockNumber": 2923598, - "transactionHash": "0xadd166106b70a307544c94743ca6b448c10df99d7aa8c50d3e670c4ab116bf2c", - "address": "0x9eA68754e5AB4717b2b0Dd310f7fA03A9c57c0Df", - "topics": ["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"], - "data": "0x00000000000000000000000000000000000000000000000000000000000000ff", - "logIndex": 0, - "blockHash": "0x8f16283a0cf5a05e70e02df3687597fafaf3d7eba2c9078e7663e7222efad6f7" - } - ], - "blockNumber": 2923598, - "cumulativeGasUsed": "1111576", - "status": 1, - "byzantium": true - }, - "args": [], - "numDeployments": 1, - "solcInputHash": "9703a470efb9e8d7aa23c7bd832fbb1c", - "metadata": "{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"calledContract\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"methodSignature\",\"type\":\"string\"}],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldAccessControlManager\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAccessControlManager\",\"type\":\"address\"}],\"name\":\"NewAccessControlManager\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"previousPriceMantissa\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newPriceMantissa\",\"type\":\"uint256\"}],\"name\":\"PricePosted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"feed\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxStalePeriod\",\"type\":\"uint256\"}],\"name\":\"TokenConfigAdded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"NATIVE_TOKEN_ADDR\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"accessControlManager\",\"outputs\":[{\"internalType\":\"contract IAccessControlManagerV8\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"accessControlManager_\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"prices\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"accessControlManager_\",\"type\":\"address\"}],\"name\":\"setAccessControlManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"setDirectPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feed\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxStalePeriod\",\"type\":\"uint256\"}],\"internalType\":\"struct ChainlinkOracle.TokenConfig\",\"name\":\"tokenConfig\",\"type\":\"tuple\"}],\"name\":\"setTokenConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feed\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxStalePeriod\",\"type\":\"uint256\"}],\"internalType\":\"struct ChainlinkOracle.TokenConfig[]\",\"name\":\"tokenConfigs_\",\"type\":\"tuple[]\"}],\"name\":\"setTokenConfigs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"tokenConfigs\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feed\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxStalePeriod\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Venus\",\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"The new owner accepts the ownership transfer.\"},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"getPrice(address)\":{\"params\":{\"asset\":\"Address of the asset\"},\"returns\":{\"_0\":\"Price in USD from Chainlink or a manually set price for the asset\"}},\"initialize(address)\":{\"params\":{\"accessControlManager_\":\"Address of the access control manager contract\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pendingOwner()\":{\"details\":\"Returns the address of the pending owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setAccessControlManager(address)\":{\"custom:access\":\"Only Governance\",\"custom:event\":\"Emits NewAccessControlManager event\",\"details\":\"Admin function to set address of AccessControlManager\",\"params\":{\"accessControlManager_\":\"The new address of the AccessControlManager\"}},\"setDirectPrice(address,uint256)\":{\"custom:access\":\"Only Governance\",\"custom:event\":\"Emits PricePosted event on successfully setup of asset price\",\"params\":{\"asset\":\"Asset address\",\"price\":\"Asset price in 18 decimals\"}},\"setTokenConfig((address,address,uint256))\":{\"custom:access\":\"Only Governance\",\"custom:error\":\"NotNullAddress error is thrown if asset address is nullNotNullAddress error is thrown if token feed address is nullRange error is thrown if maxStale period of token is not greater than zero\",\"custom:event\":\"Emits TokenConfigAdded event on successfully setting of the token config\",\"params\":{\"tokenConfig\":\"Token config struct\"}},\"setTokenConfigs((address,address,uint256)[])\":{\"custom:access\":\"Only Governance\",\"custom:error\":\"Zero length error thrown, if length of the array in parameter is 0\",\"params\":{\"tokenConfigs_\":\"config array\"}},\"transferOwnership(address)\":{\"details\":\"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner.\"}},\"title\":\"ChainlinkOracle\",\"version\":1},\"userdoc\":{\"errors\":{\"Unauthorized(address,address,string)\":[{\"notice\":\"Thrown when the action is prohibited by AccessControlManager\"}]},\"events\":{\"NewAccessControlManager(address,address)\":{\"notice\":\"Emitted when access control manager contract address is changed\"},\"PricePosted(address,uint256,uint256)\":{\"notice\":\"Emit when a price is manually set\"},\"TokenConfigAdded(address,address,uint256)\":{\"notice\":\"Emit when a token config is added\"}},\"kind\":\"user\",\"methods\":{\"NATIVE_TOKEN_ADDR()\":{\"notice\":\"Set this as asset address for native token on each chain. This is the underlying address for vBNB on BNB chain or an underlying asset for a native market on any chain.\"},\"accessControlManager()\":{\"notice\":\"Returns the address of the access control manager contract\"},\"constructor\":{\"notice\":\"Constructor for the implementation contract.\"},\"getPrice(address)\":{\"notice\":\"Gets the price of a asset from the chainlink oracle\"},\"initialize(address)\":{\"notice\":\"Initializes the owner of the contract\"},\"prices(address)\":{\"notice\":\"Manually set an override price, useful under extenuating conditions such as price feed failure\"},\"setAccessControlManager(address)\":{\"notice\":\"Sets the address of AccessControlManager\"},\"setDirectPrice(address,uint256)\":{\"notice\":\"Manually set the price of a given asset\"},\"setTokenConfig((address,address,uint256))\":{\"notice\":\"Add single token config. asset & feed cannot be null addresses and maxStalePeriod must be positive\"},\"setTokenConfigs((address,address,uint256)[])\":{\"notice\":\"Add multiple token configs at the same time\"},\"tokenConfigs(address)\":{\"notice\":\"Token config by assets\"}},\"notice\":\"This oracle fetches prices of assets from the Chainlink oracle.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracles/ChainlinkOracle.sol\":\"ChainlinkOracle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\ninterface AggregatorV3Interface {\\n function decimals() external view returns (uint8);\\n\\n function description() external view returns (string memory);\\n\\n function version() external view returns (uint256);\\n\\n function getRoundData(uint80 _roundId)\\n external\\n view\\n returns (\\n uint80 roundId,\\n int256 answer,\\n uint256 startedAt,\\n uint256 updatedAt,\\n uint80 answeredInRound\\n );\\n\\n function latestRoundData()\\n external\\n view\\n returns (\\n uint80 roundId,\\n int256 answer,\\n uint256 startedAt,\\n uint256 updatedAt,\\n uint80 answeredInRound\\n );\\n}\\n\",\"keccak256\":\"0x6e6e4b0835904509406b070ee173b5bc8f677c19421b76be38aea3b1b3d30846\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable2Step.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./OwnableUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership} and {acceptOwnership}.\\n *\\n * This module is used through inheritance. It will make available all functions\\n * from parent (Ownable).\\n */\\nabstract contract Ownable2StepUpgradeable is Initializable, OwnableUpgradeable {\\n address private _pendingOwner;\\n\\n event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner);\\n\\n function __Ownable2Step_init() internal onlyInitializing {\\n __Ownable_init_unchained();\\n }\\n\\n function __Ownable2Step_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Returns the address of the pending owner.\\n */\\n function pendingOwner() public view virtual returns (address) {\\n return _pendingOwner;\\n }\\n\\n /**\\n * @dev Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one.\\n * Can only be called by the current owner.\\n */\\n function transferOwnership(address newOwner) public virtual override onlyOwner {\\n _pendingOwner = newOwner;\\n emit OwnershipTransferStarted(owner(), newOwner);\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`) and deletes any pending owner.\\n * Internal function without access restriction.\\n */\\n function _transferOwnership(address newOwner) internal virtual override {\\n delete _pendingOwner;\\n super._transferOwnership(newOwner);\\n }\\n\\n /**\\n * @dev The new owner accepts the ownership transfer.\\n */\\n function acceptOwnership() public virtual {\\n address sender = _msgSender();\\n require(pendingOwner() == sender, \\\"Ownable2Step: caller is not the new owner\\\");\\n _transferOwnership(sender);\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x9140dabc466abab21b48b72dbda26736b1183a310d0e677d3719d201df026510\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/ContextUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\\n address private _owner;\\n\\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n /**\\n * @dev Initializes the contract setting the deployer as the initial owner.\\n */\\n function __Ownable_init() internal onlyInitializing {\\n __Ownable_init_unchained();\\n }\\n\\n function __Ownable_init_unchained() internal onlyInitializing {\\n _transferOwnership(_msgSender());\\n }\\n\\n /**\\n * @dev Throws if called by any account other than the owner.\\n */\\n modifier onlyOwner() {\\n _checkOwner();\\n _;\\n }\\n\\n /**\\n * @dev Returns the address of the current owner.\\n */\\n function owner() public view virtual returns (address) {\\n return _owner;\\n }\\n\\n /**\\n * @dev Throws if the sender is not the owner.\\n */\\n function _checkOwner() internal view virtual {\\n require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n /**\\n * @dev Leaves the contract without owner. It will not be possible to call\\n * `onlyOwner` functions. Can only be called by the current owner.\\n *\\n * NOTE: Renouncing ownership will leave the contract without an owner,\\n * thereby disabling any functionality that is only available to the owner.\\n */\\n function renounceOwnership() public virtual onlyOwner {\\n _transferOwnership(address(0));\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Can only be called by the current owner.\\n */\\n function transferOwnership(address newOwner) public virtual onlyOwner {\\n require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n _transferOwnership(newOwner);\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Internal function without access restriction.\\n */\\n function _transferOwnership(address newOwner) internal virtual {\\n address oldOwner = _owner;\\n _owner = newOwner;\\n emit OwnershipTransferred(oldOwner, newOwner);\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x359a1ab89b46b9aba7bcad3fb651924baf4893d15153049b9976b0fc9be1358e\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev External interface of AccessControl declared to support ERC165 detection.\\n */\\ninterface IAccessControl {\\n /**\\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\\n *\\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\\n * {RoleAdminChanged} not being emitted signaling this.\\n *\\n * _Available since v3.1._\\n */\\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\\n\\n /**\\n * @dev Emitted when `account` is granted `role`.\\n *\\n * `sender` is the account that originated the contract call, an admin role\\n * bearer except when using {AccessControl-_setupRole}.\\n */\\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Emitted when `account` is revoked `role`.\\n *\\n * `sender` is the account that originated the contract call:\\n * - if using `revokeRole`, it is the admin role bearer\\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\\n */\\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Returns `true` if `account` has been granted `role`.\\n */\\n function hasRole(bytes32 role, address account) external view returns (bool);\\n\\n /**\\n * @dev Returns the admin role that controls `role`. See {grantRole} and\\n * {revokeRole}.\\n *\\n * To change a role's admin, use {AccessControl-_setRoleAdmin}.\\n */\\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function grantRole(bytes32 role, address account) external;\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function revokeRole(bytes32 role, address account) external;\\n\\n /**\\n * @dev Revokes `role` from the calling account.\\n *\\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n * purpose is to provide a mechanism for accounts to lose their privileges\\n * if they are compromised (such as when a trusted device is misplaced).\\n *\\n * If the calling account had been granted `role`, emits a {RoleRevoked}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must be `account`.\\n */\\n function renounceRole(bytes32 role, address account) external;\\n}\\n\",\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n *\\n * _Available since v4.1._\\n */\\ninterface IERC20Metadata is IERC20 {\\n /**\\n * @dev Returns the name of the token.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the symbol of the token.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the decimals places of the token.\\n */\\n function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\"},\"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.25;\\n\\nimport \\\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\\\";\\nimport \\\"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol\\\";\\n\\nimport \\\"./IAccessControlManagerV8.sol\\\";\\n\\n/**\\n * @title AccessControlledV8\\n * @author Venus\\n * @notice This contract is helper between access control manager and actual contract. This contract further inherited by other contract (using solidity 0.8.13)\\n * to integrate access controlled mechanism. It provides initialise methods and verifying access methods.\\n */\\nabstract contract AccessControlledV8 is Initializable, Ownable2StepUpgradeable {\\n /// @notice Access control manager contract\\n IAccessControlManagerV8 private _accessControlManager;\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[49] private __gap;\\n\\n /// @notice Emitted when access control manager contract address is changed\\n event NewAccessControlManager(address oldAccessControlManager, address newAccessControlManager);\\n\\n /// @notice Thrown when the action is prohibited by AccessControlManager\\n error Unauthorized(address sender, address calledContract, string methodSignature);\\n\\n function __AccessControlled_init(address accessControlManager_) internal onlyInitializing {\\n __Ownable2Step_init();\\n __AccessControlled_init_unchained(accessControlManager_);\\n }\\n\\n function __AccessControlled_init_unchained(address accessControlManager_) internal onlyInitializing {\\n _setAccessControlManager(accessControlManager_);\\n }\\n\\n /**\\n * @notice Sets the address of AccessControlManager\\n * @dev Admin function to set address of AccessControlManager\\n * @param accessControlManager_ The new address of the AccessControlManager\\n * @custom:event Emits NewAccessControlManager event\\n * @custom:access Only Governance\\n */\\n function setAccessControlManager(address accessControlManager_) external onlyOwner {\\n _setAccessControlManager(accessControlManager_);\\n }\\n\\n /**\\n * @notice Returns the address of the access control manager contract\\n */\\n function accessControlManager() external view returns (IAccessControlManagerV8) {\\n return _accessControlManager;\\n }\\n\\n /**\\n * @dev Internal function to set address of AccessControlManager\\n * @param accessControlManager_ The new address of the AccessControlManager\\n */\\n function _setAccessControlManager(address accessControlManager_) internal {\\n require(address(accessControlManager_) != address(0), \\\"invalid acess control manager address\\\");\\n address oldAccessControlManager = address(_accessControlManager);\\n _accessControlManager = IAccessControlManagerV8(accessControlManager_);\\n emit NewAccessControlManager(oldAccessControlManager, accessControlManager_);\\n }\\n\\n /**\\n * @notice Reverts if the call is not allowed by AccessControlManager\\n * @param signature Method signature\\n */\\n function _checkAccessAllowed(string memory signature) internal view {\\n bool isAllowedToCall = _accessControlManager.isAllowedToCall(msg.sender, signature);\\n\\n if (!isAllowedToCall) {\\n revert Unauthorized(msg.sender, address(this), signature);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x0dcf283925f4dddc23ca0ee71d2cb96a9dd6e4cf08061b69fde1697ea39dc514\",\"license\":\"BSD-3-Clause\"},\"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\nimport \\\"@openzeppelin/contracts/access/IAccessControl.sol\\\";\\n\\n/**\\n * @title IAccessControlManagerV8\\n * @author Venus\\n * @notice Interface implemented by the `AccessControlManagerV8` contract.\\n */\\ninterface IAccessControlManagerV8 is IAccessControl {\\n function giveCallPermission(address contractAddress, string calldata functionSig, address accountToPermit) external;\\n\\n function revokeCallPermission(\\n address contractAddress,\\n string calldata functionSig,\\n address accountToRevoke\\n ) external;\\n\\n function isAllowedToCall(address account, string calldata functionSig) external view returns (bool);\\n\\n function hasPermission(\\n address account,\\n address contractAddress,\\n string calldata functionSig\\n ) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xaa29b098440d0b3a131c5ecdf25ce548790c1b5ac7bf9b5c0264b6af6f7a1e0b\",\"license\":\"BSD-3-Clause\"},\"contracts/interfaces/OracleInterface.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\ninterface OracleInterface {\\n function getPrice(address asset) external view returns (uint256);\\n}\\n\\ninterface ResilientOracleInterface is OracleInterface {\\n function updatePrice(address vToken) external;\\n\\n function updateAssetPrice(address asset) external;\\n\\n function getUnderlyingPrice(address vToken) external view returns (uint256);\\n}\\n\\ninterface TwapInterface is OracleInterface {\\n function updateTwap(address asset) external returns (uint256);\\n}\\n\\ninterface BoundValidatorInterface {\\n function validatePriceWithAnchorPrice(\\n address asset,\\n uint256 reporterPrice,\\n uint256 anchorPrice\\n ) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x2432799b0d824fc701beb4c30146e912b9aeecf77b5c1635dde6c5fbe6bfc3a7\",\"license\":\"BSD-3-Clause\"},\"contracts/interfaces/VBep20Interface.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\nimport \\\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\\\";\\n\\ninterface VBep20Interface is IERC20Metadata {\\n /**\\n * @notice Underlying asset for this VToken\\n */\\n function underlying() external view returns (address);\\n}\\n\",\"keccak256\":\"0x6e71c3df86501df5c0e4bace1333c0c91f9f9cced252a54fb99eeda219b789d5\",\"license\":\"BSD-3-Clause\"},\"contracts/oracles/ChainlinkOracle.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.25;\\n\\nimport \\\"../interfaces/VBep20Interface.sol\\\";\\nimport \\\"../interfaces/OracleInterface.sol\\\";\\nimport \\\"@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol\\\";\\nimport \\\"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol\\\";\\n\\n/**\\n * @title ChainlinkOracle\\n * @author Venus\\n * @notice This oracle fetches prices of assets from the Chainlink oracle.\\n */\\ncontract ChainlinkOracle is AccessControlledV8, OracleInterface {\\n struct TokenConfig {\\n /// @notice Underlying token address, which can't be a null address\\n /// @notice Used to check if a token is supported\\n /// @notice 0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB address for native tokens\\n /// (e.g BNB for BNB chain, ETH for Ethereum network)\\n address asset;\\n /// @notice Chainlink feed address\\n address feed;\\n /// @notice Price expiration period of this asset\\n uint256 maxStalePeriod;\\n }\\n\\n /// @notice Set this as asset address for native token on each chain.\\n /// This is the underlying address for vBNB on BNB chain or an underlying asset for a native market on any chain.\\n address public constant NATIVE_TOKEN_ADDR = 0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB;\\n\\n /// @notice Manually set an override price, useful under extenuating conditions such as price feed failure\\n mapping(address => uint256) public prices;\\n\\n /// @notice Token config by assets\\n mapping(address => TokenConfig) public tokenConfigs;\\n\\n /// @notice Emit when a price is manually set\\n event PricePosted(address indexed asset, uint256 previousPriceMantissa, uint256 newPriceMantissa);\\n\\n /// @notice Emit when a token config is added\\n event TokenConfigAdded(address indexed asset, address feed, uint256 maxStalePeriod);\\n\\n modifier notNullAddress(address someone) {\\n if (someone == address(0)) revert(\\\"can't be zero address\\\");\\n _;\\n }\\n\\n /// @notice Constructor for the implementation contract.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /**\\n * @notice Initializes the owner of the contract\\n * @param accessControlManager_ Address of the access control manager contract\\n */\\n function initialize(address accessControlManager_) external initializer {\\n __AccessControlled_init(accessControlManager_);\\n }\\n\\n /**\\n * @notice Manually set the price of a given asset\\n * @param asset Asset address\\n * @param price Asset price in 18 decimals\\n * @custom:access Only Governance\\n * @custom:event Emits PricePosted event on successfully setup of asset price\\n */\\n function setDirectPrice(address asset, uint256 price) external notNullAddress(asset) {\\n _checkAccessAllowed(\\\"setDirectPrice(address,uint256)\\\");\\n\\n uint256 previousPriceMantissa = prices[asset];\\n prices[asset] = price;\\n emit PricePosted(asset, previousPriceMantissa, price);\\n }\\n\\n /**\\n * @notice Add multiple token configs at the same time\\n * @param tokenConfigs_ config array\\n * @custom:access Only Governance\\n * @custom:error Zero length error thrown, if length of the array in parameter is 0\\n */\\n function setTokenConfigs(TokenConfig[] memory tokenConfigs_) external {\\n if (tokenConfigs_.length == 0) revert(\\\"length can't be 0\\\");\\n uint256 numTokenConfigs = tokenConfigs_.length;\\n for (uint256 i; i < numTokenConfigs; ) {\\n setTokenConfig(tokenConfigs_[i]);\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @notice Add single token config. asset & feed cannot be null addresses and maxStalePeriod must be positive\\n * @param tokenConfig Token config struct\\n * @custom:access Only Governance\\n * @custom:error NotNullAddress error is thrown if asset address is null\\n * @custom:error NotNullAddress error is thrown if token feed address is null\\n * @custom:error Range error is thrown if maxStale period of token is not greater than zero\\n * @custom:event Emits TokenConfigAdded event on successfully setting of the token config\\n */\\n function setTokenConfig(\\n TokenConfig memory tokenConfig\\n ) public notNullAddress(tokenConfig.asset) notNullAddress(tokenConfig.feed) {\\n _checkAccessAllowed(\\\"setTokenConfig(TokenConfig)\\\");\\n\\n if (tokenConfig.maxStalePeriod == 0) revert(\\\"stale period can't be zero\\\");\\n tokenConfigs[tokenConfig.asset] = tokenConfig;\\n emit TokenConfigAdded(tokenConfig.asset, tokenConfig.feed, tokenConfig.maxStalePeriod);\\n }\\n\\n /**\\n * @notice Gets the price of a asset from the chainlink oracle\\n * @param asset Address of the asset\\n * @return Price in USD from Chainlink or a manually set price for the asset\\n */\\n function getPrice(address asset) public view virtual returns (uint256) {\\n uint256 decimals;\\n\\n if (asset == NATIVE_TOKEN_ADDR) {\\n decimals = 18;\\n } else {\\n IERC20Metadata token = IERC20Metadata(asset);\\n decimals = token.decimals();\\n }\\n\\n return _getPriceInternal(asset, decimals);\\n }\\n\\n /**\\n * @notice Gets the Chainlink price for a given asset\\n * @param asset address of the asset\\n * @param decimals decimals of the asset\\n * @return price Asset price in USD or a manually set price of the asset\\n */\\n function _getPriceInternal(address asset, uint256 decimals) internal view returns (uint256 price) {\\n uint256 tokenPrice = prices[asset];\\n if (tokenPrice != 0) {\\n price = tokenPrice;\\n } else {\\n price = _getChainlinkPrice(asset);\\n }\\n\\n uint256 decimalDelta = 18 - decimals;\\n return price * (10 ** decimalDelta);\\n }\\n\\n /**\\n * @notice Get the Chainlink price for an asset, revert if token config doesn't exist\\n * @dev The precision of the price feed is used to ensure the returned price has 18 decimals of precision\\n * @param asset Address of the asset\\n * @return price Price in USD, with 18 decimals of precision\\n * @custom:error NotNullAddress error is thrown if the asset address is null\\n * @custom:error Price error is thrown if the Chainlink price of asset is not greater than zero\\n * @custom:error Timing error is thrown if current timestamp is less than the last updatedAt timestamp\\n * @custom:error Timing error is thrown if time difference between current time and last updated time\\n * is greater than maxStalePeriod\\n */\\n function _getChainlinkPrice(\\n address asset\\n ) private view notNullAddress(tokenConfigs[asset].asset) returns (uint256) {\\n TokenConfig memory tokenConfig = tokenConfigs[asset];\\n AggregatorV3Interface feed = AggregatorV3Interface(tokenConfig.feed);\\n\\n // note: maxStalePeriod cannot be 0\\n uint256 maxStalePeriod = tokenConfig.maxStalePeriod;\\n\\n // Chainlink USD-denominated feeds store answers at 8 decimals, mostly\\n uint256 decimalDelta = 18 - feed.decimals();\\n\\n (, int256 answer, , uint256 updatedAt, ) = feed.latestRoundData();\\n if (answer <= 0) revert(\\\"chainlink price must be positive\\\");\\n if (block.timestamp < updatedAt) revert(\\\"updatedAt exceeds block time\\\");\\n\\n uint256 deltaTime;\\n unchecked {\\n deltaTime = block.timestamp - updatedAt;\\n }\\n\\n if (deltaTime > maxStalePeriod) revert(\\\"chainlink price expired\\\");\\n\\n return uint256(answer) * (10 ** decimalDelta);\\n }\\n}\\n\",\"keccak256\":\"0x131ce5a60e3dd3dd3cfa2f4e0a542a24c66ef55144c72107e715c450be4f79cb\",\"license\":\"BSD-3-Clause\"}},\"version\":1}", - "bytecode": "0x6080604052348015600e575f80fd5b5060156019565b60d3565b5f54610100900460ff161560835760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff9081161460d1575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6112a4806100e05f395ff3fe608060405234801561000f575f80fd5b50600436106100f0575f3560e01c806379ba509711610093578063c4d66de811610063578063c4d66de81461022a578063cfed246b1461023d578063e30c39781461025c578063f2fde38b1461026d575f80fd5b806379ba5097146101d15780638da5cb5b146101d9578063a9534f8a146101fe578063b4a0bdf314610219575f80fd5b80631b69dc5f116100ce5780631b69dc5f1461012f578063392787d21461019557806341976e09146101a8578063715018a6146101c9575f80fd5b80630431710e146100f457806309a8acb0146101095780630e32cb861461011c575b5f80fd5b610107610102366004610e67565b610280565b005b610107610117366004610f12565b610304565b61010761012a366004610f3a565b6103c8565b61016a61013d366004610f3a565b60ca6020525f90815260409020805460018201546002909201546001600160a01b03918216929091169083565b604080516001600160a01b039485168152939092166020840152908201526060015b60405180910390f35b6101076101a3366004610f53565b6103dc565b6101bb6101b6366004610f3a565b61054f565b60405190815260200161018c565b6101076105fa565b61010761060d565b6033546001600160a01b03165b6040516001600160a01b03909116815260200161018c565b6101e673bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb81565b6097546001600160a01b03166101e6565b610107610238366004610f3a565b610684565b6101bb61024b366004610f3a565b60c96020525f908152604090205481565b6065546001600160a01b03166101e6565b61010761027b366004610f3a565b610792565b80515f036102c95760405162461bcd60e51b815260206004820152601160248201527006c656e6774682063616e2774206265203607c1b60448201526064015b60405180910390fd5b80515f5b818110156102ff576102f78382815181106102ea576102ea610f6d565b60200260200101516103dc565b6001016102cd565b505050565b816001600160a01b03811661032b5760405162461bcd60e51b81526004016102c090610f81565b6103696040518060400160405280601f81526020017f736574446972656374507269636528616464726573732c75696e743235362900815250610803565b6001600160a01b0383165f81815260c96020908152604091829020805490869055825181815291820186905292917fa0844d44570b5ec5ac55e9e7d1e7fc8149b4f33b4b61f3c8fc08bacce058faee910160405180910390a250505050565b6103d061089a565b6103d9816108f4565b50565b80516001600160a01b0381166104045760405162461bcd60e51b81526004016102c090610f81565b60208201516001600160a01b03811661042f5760405162461bcd60e51b81526004016102c090610f81565b61046d6040518060400160405280601b81526020017f736574546f6b656e436f6e66696728546f6b656e436f6e666967290000000000815250610803565b82604001515f036104c05760405162461bcd60e51b815260206004820152601a60248201527f7374616c6520706572696f642063616e2774206265207a65726f00000000000060448201526064016102c0565b82516001600160a01b039081165f90815260ca6020908152604091829020865181549085166001600160a01b0319918216811783558389015160018401805491909716921682179095558388015160029092018290558351908152918201527f3cc8d9cb9370a23a8b9ffa75efa24cecb65c4693980e58260841adc474983c5f910160405180910390a2505050565b5f8073bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba196001600160a01b0384160161057e575060126105e9565b5f839050806001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105be573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105e29190610fb0565b60ff169150505b6105f383826109b2565b9392505050565b61060261089a565b61060b5f610a12565b565b60655433906001600160a01b0316811461067b5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084016102c0565b6103d981610a12565b5f54610100900460ff16158080156106a257505f54600160ff909116105b806106bb5750303b1580156106bb57505f5460ff166001145b61071e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016102c0565b5f805460ff19166001179055801561073f575f805461ff0019166101001790555b61074882610a2b565b801561078e575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b5050565b61079a61089a565b606580546001600160a01b0383166001600160a01b031990911681179091556107cb6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6097546040516318c5e8ab60e01b81525f916001600160a01b0316906318c5e8ab906108359033908690600401610ffe565b602060405180830381865afa158015610850573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108749190611029565b90508061078e57333083604051634a3fa29360e01b81526004016102c093929190611048565b6033546001600160a01b0316331461060b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102c0565b6001600160a01b0381166109585760405162461bcd60e51b815260206004820152602560248201527f696e76616c696420616365737320636f6e74726f6c206d616e61676572206164604482015264647265737360d81b60648201526084016102c0565b609780546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa09101610785565b6001600160a01b0382165f90815260c9602052604081205480156109d8578091506109e4565b6109e184610a62565b91505b5f6109f0846012611090565b90506109fd81600a611183565b610a07908461118e565b925050505b92915050565b606580546001600160a01b03191690556103d981610ccd565b5f54610100900460ff16610a515760405162461bcd60e51b81526004016102c0906111a5565b610a59610d1e565b6103d981610d4c565b6001600160a01b038082165f90815260ca602052604081205490911680610a9b5760405162461bcd60e51b81526004016102c090610f81565b6001600160a01b038084165f90815260ca6020908152604080832081516060810183528154861681526001820154909516858401819052600290910154858301819052825163313ce56760e01b81529251919490939092859263313ce567926004808401939192918290030181865afa158015610b1a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b3e9190610fb0565b610b499060126111f0565b60ff1690505f80846001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610b8c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb09190611222565b509350509250505f8213610c065760405162461bcd60e51b815260206004820181905260248201527f636861696e6c696e6b207072696365206d75737420626520706f73697469766560448201526064016102c0565b80421015610c565760405162461bcd60e51b815260206004820152601c60248201527f757064617465644174206578636565647320626c6f636b2074696d650000000060448201526064016102c0565b4281900384811115610caa5760405162461bcd60e51b815260206004820152601760248201527f636861696e6c696e6b207072696365206578706972656400000000000000000060448201526064016102c0565b610cb584600a611183565b610cbf908461118e565b9a9950505050505050505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff16610d445760405162461bcd60e51b81526004016102c0906111a5565b61060b610d72565b5f54610100900460ff166103d05760405162461bcd60e51b81526004016102c0906111a5565b5f54610100900460ff16610d985760405162461bcd60e51b81526004016102c0906111a5565b61060b33610a12565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610dde57610dde610da1565b604052919050565b80356001600160a01b0381168114610dfc575f80fd5b919050565b5f60608284031215610e11575f80fd5b6040516060810181811067ffffffffffffffff82111715610e3457610e34610da1565b604052905080610e4383610de6565b8152610e5160208401610de6565b6020820152604083013560408201525092915050565b5f6020808385031215610e78575f80fd5b823567ffffffffffffffff80821115610e8f575f80fd5b818501915085601f830112610ea2575f80fd5b813581811115610eb457610eb4610da1565b610ec2848260051b01610db5565b81815284810192506060918202840185019188831115610ee0575f80fd5b938501935b82851015610f0657610ef78986610e01565b84529384019392850192610ee5565b50979650505050505050565b5f8060408385031215610f23575f80fd5b610f2c83610de6565b946020939093013593505050565b5f60208284031215610f4a575f80fd5b6105f382610de6565b5f60608284031215610f63575f80fd5b6105f38383610e01565b634e487b7160e01b5f52603260045260245ffd5b60208082526015908201527463616e2774206265207a65726f206164647265737360581b604082015260600190565b5f60208284031215610fc0575f80fd5b815160ff811681146105f3575f80fd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6001600160a01b03831681526040602082018190525f9061102190830184610fd0565b949350505050565b5f60208284031215611039575f80fd5b815180151581146105f3575f80fd5b6001600160a01b038481168252831660208201526060604082018190525f9061107390830184610fd0565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610a0c57610a0c61107c565b600181815b808511156110dd57815f19048211156110c3576110c361107c565b808516156110d057918102915b93841c93908002906110a8565b509250929050565b5f826110f357506001610a0c565b816110ff57505f610a0c565b8160018114611115576002811461111f5761113b565b6001915050610a0c565b60ff8411156111305761113061107c565b50506001821b610a0c565b5060208310610133831016604e8410600b841016171561115e575081810a610a0c565b61116883836110a3565b805f190482111561117b5761117b61107c565b029392505050565b5f6105f383836110e5565b8082028115828204841417610a0c57610a0c61107c565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60ff8281168282160390811115610a0c57610a0c61107c565b805169ffffffffffffffffffff81168114610dfc575f80fd5b5f805f805f60a08688031215611236575f80fd5b61123f86611209565b945060208601519350604086015192506060860151915061126260808701611209565b9050929550929590935056fea2646970667358221220ac43248fe95a18d2de313853802035d40bcd4b1bcdaadb88f3c1536bcf21ab6b64736f6c63430008190033", - "deployedBytecode": "0x608060405234801561000f575f80fd5b50600436106100f0575f3560e01c806379ba509711610093578063c4d66de811610063578063c4d66de81461022a578063cfed246b1461023d578063e30c39781461025c578063f2fde38b1461026d575f80fd5b806379ba5097146101d15780638da5cb5b146101d9578063a9534f8a146101fe578063b4a0bdf314610219575f80fd5b80631b69dc5f116100ce5780631b69dc5f1461012f578063392787d21461019557806341976e09146101a8578063715018a6146101c9575f80fd5b80630431710e146100f457806309a8acb0146101095780630e32cb861461011c575b5f80fd5b610107610102366004610e67565b610280565b005b610107610117366004610f12565b610304565b61010761012a366004610f3a565b6103c8565b61016a61013d366004610f3a565b60ca6020525f90815260409020805460018201546002909201546001600160a01b03918216929091169083565b604080516001600160a01b039485168152939092166020840152908201526060015b60405180910390f35b6101076101a3366004610f53565b6103dc565b6101bb6101b6366004610f3a565b61054f565b60405190815260200161018c565b6101076105fa565b61010761060d565b6033546001600160a01b03165b6040516001600160a01b03909116815260200161018c565b6101e673bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb81565b6097546001600160a01b03166101e6565b610107610238366004610f3a565b610684565b6101bb61024b366004610f3a565b60c96020525f908152604090205481565b6065546001600160a01b03166101e6565b61010761027b366004610f3a565b610792565b80515f036102c95760405162461bcd60e51b815260206004820152601160248201527006c656e6774682063616e2774206265203607c1b60448201526064015b60405180910390fd5b80515f5b818110156102ff576102f78382815181106102ea576102ea610f6d565b60200260200101516103dc565b6001016102cd565b505050565b816001600160a01b03811661032b5760405162461bcd60e51b81526004016102c090610f81565b6103696040518060400160405280601f81526020017f736574446972656374507269636528616464726573732c75696e743235362900815250610803565b6001600160a01b0383165f81815260c96020908152604091829020805490869055825181815291820186905292917fa0844d44570b5ec5ac55e9e7d1e7fc8149b4f33b4b61f3c8fc08bacce058faee910160405180910390a250505050565b6103d061089a565b6103d9816108f4565b50565b80516001600160a01b0381166104045760405162461bcd60e51b81526004016102c090610f81565b60208201516001600160a01b03811661042f5760405162461bcd60e51b81526004016102c090610f81565b61046d6040518060400160405280601b81526020017f736574546f6b656e436f6e66696728546f6b656e436f6e666967290000000000815250610803565b82604001515f036104c05760405162461bcd60e51b815260206004820152601a60248201527f7374616c6520706572696f642063616e2774206265207a65726f00000000000060448201526064016102c0565b82516001600160a01b039081165f90815260ca6020908152604091829020865181549085166001600160a01b0319918216811783558389015160018401805491909716921682179095558388015160029092018290558351908152918201527f3cc8d9cb9370a23a8b9ffa75efa24cecb65c4693980e58260841adc474983c5f910160405180910390a2505050565b5f8073bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba196001600160a01b0384160161057e575060126105e9565b5f839050806001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105be573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105e29190610fb0565b60ff169150505b6105f383826109b2565b9392505050565b61060261089a565b61060b5f610a12565b565b60655433906001600160a01b0316811461067b5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084016102c0565b6103d981610a12565b5f54610100900460ff16158080156106a257505f54600160ff909116105b806106bb5750303b1580156106bb57505f5460ff166001145b61071e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016102c0565b5f805460ff19166001179055801561073f575f805461ff0019166101001790555b61074882610a2b565b801561078e575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b5050565b61079a61089a565b606580546001600160a01b0383166001600160a01b031990911681179091556107cb6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6097546040516318c5e8ab60e01b81525f916001600160a01b0316906318c5e8ab906108359033908690600401610ffe565b602060405180830381865afa158015610850573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108749190611029565b90508061078e57333083604051634a3fa29360e01b81526004016102c093929190611048565b6033546001600160a01b0316331461060b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102c0565b6001600160a01b0381166109585760405162461bcd60e51b815260206004820152602560248201527f696e76616c696420616365737320636f6e74726f6c206d616e61676572206164604482015264647265737360d81b60648201526084016102c0565b609780546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa09101610785565b6001600160a01b0382165f90815260c9602052604081205480156109d8578091506109e4565b6109e184610a62565b91505b5f6109f0846012611090565b90506109fd81600a611183565b610a07908461118e565b925050505b92915050565b606580546001600160a01b03191690556103d981610ccd565b5f54610100900460ff16610a515760405162461bcd60e51b81526004016102c0906111a5565b610a59610d1e565b6103d981610d4c565b6001600160a01b038082165f90815260ca602052604081205490911680610a9b5760405162461bcd60e51b81526004016102c090610f81565b6001600160a01b038084165f90815260ca6020908152604080832081516060810183528154861681526001820154909516858401819052600290910154858301819052825163313ce56760e01b81529251919490939092859263313ce567926004808401939192918290030181865afa158015610b1a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b3e9190610fb0565b610b499060126111f0565b60ff1690505f80846001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610b8c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb09190611222565b509350509250505f8213610c065760405162461bcd60e51b815260206004820181905260248201527f636861696e6c696e6b207072696365206d75737420626520706f73697469766560448201526064016102c0565b80421015610c565760405162461bcd60e51b815260206004820152601c60248201527f757064617465644174206578636565647320626c6f636b2074696d650000000060448201526064016102c0565b4281900384811115610caa5760405162461bcd60e51b815260206004820152601760248201527f636861696e6c696e6b207072696365206578706972656400000000000000000060448201526064016102c0565b610cb584600a611183565b610cbf908461118e565b9a9950505050505050505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff16610d445760405162461bcd60e51b81526004016102c0906111a5565b61060b610d72565b5f54610100900460ff166103d05760405162461bcd60e51b81526004016102c0906111a5565b5f54610100900460ff16610d985760405162461bcd60e51b81526004016102c0906111a5565b61060b33610a12565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610dde57610dde610da1565b604052919050565b80356001600160a01b0381168114610dfc575f80fd5b919050565b5f60608284031215610e11575f80fd5b6040516060810181811067ffffffffffffffff82111715610e3457610e34610da1565b604052905080610e4383610de6565b8152610e5160208401610de6565b6020820152604083013560408201525092915050565b5f6020808385031215610e78575f80fd5b823567ffffffffffffffff80821115610e8f575f80fd5b818501915085601f830112610ea2575f80fd5b813581811115610eb457610eb4610da1565b610ec2848260051b01610db5565b81815284810192506060918202840185019188831115610ee0575f80fd5b938501935b82851015610f0657610ef78986610e01565b84529384019392850192610ee5565b50979650505050505050565b5f8060408385031215610f23575f80fd5b610f2c83610de6565b946020939093013593505050565b5f60208284031215610f4a575f80fd5b6105f382610de6565b5f60608284031215610f63575f80fd5b6105f38383610e01565b634e487b7160e01b5f52603260045260245ffd5b60208082526015908201527463616e2774206265207a65726f206164647265737360581b604082015260600190565b5f60208284031215610fc0575f80fd5b815160ff811681146105f3575f80fd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6001600160a01b03831681526040602082018190525f9061102190830184610fd0565b949350505050565b5f60208284031215611039575f80fd5b815180151581146105f3575f80fd5b6001600160a01b038481168252831660208201526060604082018190525f9061107390830184610fd0565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610a0c57610a0c61107c565b600181815b808511156110dd57815f19048211156110c3576110c361107c565b808516156110d057918102915b93841c93908002906110a8565b509250929050565b5f826110f357506001610a0c565b816110ff57505f610a0c565b8160018114611115576002811461111f5761113b565b6001915050610a0c565b60ff8411156111305761113061107c565b50506001821b610a0c565b5060208310610133831016604e8410600b841016171561115e575081810a610a0c565b61116883836110a3565b805f190482111561117b5761117b61107c565b029392505050565b5f6105f383836110e5565b8082028115828204841417610a0c57610a0c61107c565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60ff8281168282160390811115610a0c57610a0c61107c565b805169ffffffffffffffffffff81168114610dfc575f80fd5b5f805f805f60a08688031215611236575f80fd5b61123f86611209565b945060208601519350604086015192506060860151915061126260808701611209565b9050929550929590935056fea2646970667358221220ac43248fe95a18d2de313853802035d40bcd4b1bcdaadb88f3c1536bcf21ab6b64736f6c63430008190033", - "devdoc": { - "author": "Venus", - "events": { - "Initialized(uint8)": { - "details": "Triggered when the contract has been initialized or reinitialized." - } - }, - "kind": "dev", - "methods": { - "acceptOwnership()": { - "details": "The new owner accepts the ownership transfer." - }, - "constructor": { - "custom:oz-upgrades-unsafe-allow": "constructor" - }, - "getPrice(address)": { - "params": { - "asset": "Address of the asset" - }, - "returns": { - "_0": "Price in USD from Chainlink or a manually set price for the asset" - } - }, - "initialize(address)": { - "params": { - "accessControlManager_": "Address of the access control manager contract" - } - }, - "owner()": { - "details": "Returns the address of the current owner." - }, - "pendingOwner()": { - "details": "Returns the address of the pending owner." - }, - "renounceOwnership()": { - "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner." - }, - "setAccessControlManager(address)": { - "custom:access": "Only Governance", - "custom:event": "Emits NewAccessControlManager event", - "details": "Admin function to set address of AccessControlManager", - "params": { - "accessControlManager_": "The new address of the AccessControlManager" - } - }, - "setDirectPrice(address,uint256)": { - "custom:access": "Only Governance", - "custom:event": "Emits PricePosted event on successfully setup of asset price", - "params": { - "asset": "Asset address", - "price": "Asset price in 18 decimals" - } - }, - "setTokenConfig((address,address,uint256))": { - "custom:access": "Only Governance", - "custom:error": "NotNullAddress error is thrown if asset address is nullNotNullAddress error is thrown if token feed address is nullRange error is thrown if maxStale period of token is not greater than zero", - "custom:event": "Emits TokenConfigAdded event on successfully setting of the token config", - "params": { - "tokenConfig": "Token config struct" - } - }, - "setTokenConfigs((address,address,uint256)[])": { - "custom:access": "Only Governance", - "custom:error": "Zero length error thrown, if length of the array in parameter is 0", - "params": { - "tokenConfigs_": "config array" - } - }, - "transferOwnership(address)": { - "details": "Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner." - } - }, - "title": "ChainlinkOracle", - "version": 1 - }, - "userdoc": { - "errors": { - "Unauthorized(address,address,string)": [ - { - "notice": "Thrown when the action is prohibited by AccessControlManager" - } - ] - }, - "events": { - "NewAccessControlManager(address,address)": { - "notice": "Emitted when access control manager contract address is changed" - }, - "PricePosted(address,uint256,uint256)": { - "notice": "Emit when a price is manually set" - }, - "TokenConfigAdded(address,address,uint256)": { - "notice": "Emit when a token config is added" - } - }, - "kind": "user", - "methods": { - "NATIVE_TOKEN_ADDR()": { - "notice": "Set this as asset address for native token on each chain. This is the underlying address for vBNB on BNB chain or an underlying asset for a native market on any chain." - }, - "accessControlManager()": { - "notice": "Returns the address of the access control manager contract" - }, - "constructor": { - "notice": "Constructor for the implementation contract." - }, - "getPrice(address)": { - "notice": "Gets the price of a asset from the chainlink oracle" - }, - "initialize(address)": { - "notice": "Initializes the owner of the contract" - }, - "prices(address)": { - "notice": "Manually set an override price, useful under extenuating conditions such as price feed failure" - }, - "setAccessControlManager(address)": { - "notice": "Sets the address of AccessControlManager" - }, - "setDirectPrice(address,uint256)": { - "notice": "Manually set the price of a given asset" - }, - "setTokenConfig((address,address,uint256))": { - "notice": "Add single token config. asset & feed cannot be null addresses and maxStalePeriod must be positive" - }, - "setTokenConfigs((address,address,uint256)[])": { - "notice": "Add multiple token configs at the same time" - }, - "tokenConfigs(address)": { - "notice": "Token config by assets" - } - }, - "notice": "This oracle fetches prices of assets from the Chainlink oracle.", - "version": 1 - }, - "storageLayout": { - "storage": [ - { - "astId": 349, - "contract": "contracts/oracles/ChainlinkOracle.sol:ChainlinkOracle", - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8" - }, - { - "astId": 352, - "contract": "contracts/oracles/ChainlinkOracle.sol:ChainlinkOracle", - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool" - }, - { - "astId": 1019, - "contract": "contracts/oracles/ChainlinkOracle.sol:ChainlinkOracle", - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage" - }, - { - "astId": 221, - "contract": "contracts/oracles/ChainlinkOracle.sol:ChainlinkOracle", - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address" - }, - { - "astId": 341, - "contract": "contracts/oracles/ChainlinkOracle.sol:ChainlinkOracle", - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 114, - "contract": "contracts/oracles/ChainlinkOracle.sol:ChainlinkOracle", - "label": "_pendingOwner", - "offset": 0, - "slot": "101", - "type": "t_address" - }, - { - "astId": 208, - "contract": "contracts/oracles/ChainlinkOracle.sol:ChainlinkOracle", - "label": "__gap", - "offset": 0, - "slot": "102", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 3586, - "contract": "contracts/oracles/ChainlinkOracle.sol:ChainlinkOracle", - "label": "_accessControlManager", - "offset": 0, - "slot": "151", - "type": "t_contract(IAccessControlManagerV8)3771" - }, - { - "astId": 3591, - "contract": "contracts/oracles/ChainlinkOracle.sol:ChainlinkOracle", - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 6613, - "contract": "contracts/oracles/ChainlinkOracle.sol:ChainlinkOracle", - "label": "prices", - "offset": 0, - "slot": "201", - "type": "t_mapping(t_address,t_uint256)" - }, - { - "astId": 6619, - "contract": "contracts/oracles/ChainlinkOracle.sol:ChainlinkOracle", - "label": "tokenConfigs", - "offset": 0, - "slot": "202", - "type": "t_mapping(t_address,t_struct(TokenConfig)6604_storage)" - } - ], - "types": { - "t_address": { - "encoding": "inplace", - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "base": "t_uint256", - "encoding": "inplace", - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "base": "t_uint256", - "encoding": "inplace", - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "encoding": "inplace", - "label": "bool", - "numberOfBytes": "1" - }, - "t_contract(IAccessControlManagerV8)3771": { - "encoding": "inplace", - "label": "contract IAccessControlManagerV8", - "numberOfBytes": "20" - }, - "t_mapping(t_address,t_struct(TokenConfig)6604_storage)": { - "encoding": "mapping", - "key": "t_address", - "label": "mapping(address => struct ChainlinkOracle.TokenConfig)", - "numberOfBytes": "32", - "value": "t_struct(TokenConfig)6604_storage" - }, - "t_mapping(t_address,t_uint256)": { - "encoding": "mapping", - "key": "t_address", - "label": "mapping(address => uint256)", - "numberOfBytes": "32", - "value": "t_uint256" - }, - "t_struct(TokenConfig)6604_storage": { - "encoding": "inplace", - "label": "struct ChainlinkOracle.TokenConfig", - "members": [ - { - "astId": 6597, - "contract": "contracts/oracles/ChainlinkOracle.sol:ChainlinkOracle", - "label": "asset", - "offset": 0, - "slot": "0", - "type": "t_address" - }, - { - "astId": 6600, - "contract": "contracts/oracles/ChainlinkOracle.sol:ChainlinkOracle", - "label": "feed", - "offset": 0, - "slot": "1", - "type": "t_address" - }, - { - "astId": 6603, - "contract": "contracts/oracles/ChainlinkOracle.sol:ChainlinkOracle", - "label": "maxStalePeriod", - "offset": 0, - "slot": "2", - "type": "t_uint256" - } - ], - "numberOfBytes": "96" - }, - "t_uint256": { - "encoding": "inplace", - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "encoding": "inplace", - "label": "uint8", - "numberOfBytes": "1" - } - } - } -} diff --git a/deployments/berachainbepolia/ChainlinkOracle_Proxy.json b/deployments/berachainbepolia/ChainlinkOracle_Proxy.json deleted file mode 100644 index 20af9322..00000000 --- a/deployments/berachainbepolia/ChainlinkOracle_Proxy.json +++ /dev/null @@ -1,262 +0,0 @@ -{ - "address": "0xF7451caCcb32E6E3695e4B4bcF42152D57B73aD5", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "admin_", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "stateMutability": "payable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "beacon", - "type": "address" - } - ], - "name": "BeaconUpgraded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "stateMutability": "payable", - "type": "fallback" - }, - { - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "admin_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "implementation_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "stateMutability": "payable", - "type": "receive" - } - ], - "transactionHash": "0xf918daf7963ac3f8f5f17845a8a6aff659201f2a226dfd5528a81c2ef0e14d16", - "receipt": { - "to": null, - "from": "0x18BDb05DD1A95677f4381cfb4db52D342dF5C00d", - "contractAddress": "0xF7451caCcb32E6E3695e4B4bcF42152D57B73aD5", - "transactionIndex": 2, - "gasUsed": "589258", - "logsBloom": "0x00000000000000000000000000000002400000000000000000800000000000000000001000000000000000000000000000000000000000000000000000008040000000000000000000001000000002000001000000000000000000000100000000000000020000000000020000000800000000800000000000000000000000400000000000000000000000000000000000400000000082000000000000800000000000000000200000000000000400000000000000800000000000000000000000000020000000000000000000040000000000000400000000000000000020000000000000000000000000000000000000000800000000000000000000000000", - "blockHash": "0xb3863e9a8e48064c6f5231a4f7cdfe39f91bf0ba56598dfb144ca837865851fb", - "transactionHash": "0xf918daf7963ac3f8f5f17845a8a6aff659201f2a226dfd5528a81c2ef0e14d16", - "logs": [ - { - "transactionIndex": 2, - "blockNumber": 2923600, - "transactionHash": "0xf918daf7963ac3f8f5f17845a8a6aff659201f2a226dfd5528a81c2ef0e14d16", - "address": "0xF7451caCcb32E6E3695e4B4bcF42152D57B73aD5", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000009ea68754e5ab4717b2b0dd310f7fa03a9c57c0df" - ], - "data": "0x", - "logIndex": 40, - "blockHash": "0xb3863e9a8e48064c6f5231a4f7cdfe39f91bf0ba56598dfb144ca837865851fb" - }, - { - "transactionIndex": 2, - "blockNumber": 2923600, - "transactionHash": "0xf918daf7963ac3f8f5f17845a8a6aff659201f2a226dfd5528a81c2ef0e14d16", - "address": "0xF7451caCcb32E6E3695e4B4bcF42152D57B73aD5", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x00000000000000000000000018bdb05dd1a95677f4381cfb4db52d342df5c00d" - ], - "data": "0x", - "logIndex": 41, - "blockHash": "0xb3863e9a8e48064c6f5231a4f7cdfe39f91bf0ba56598dfb144ca837865851fb" - }, - { - "transactionIndex": 2, - "blockNumber": 2923600, - "transactionHash": "0xf918daf7963ac3f8f5f17845a8a6aff659201f2a226dfd5528a81c2ef0e14d16", - "address": "0xF7451caCcb32E6E3695e4B4bcF42152D57B73aD5", - "topics": ["0x66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa0"], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000243313c1cc198ff80756ed2ef14d9dcd94ee762b", - "logIndex": 42, - "blockHash": "0xb3863e9a8e48064c6f5231a4f7cdfe39f91bf0ba56598dfb144ca837865851fb" - }, - { - "transactionIndex": 2, - "blockNumber": 2923600, - "transactionHash": "0xf918daf7963ac3f8f5f17845a8a6aff659201f2a226dfd5528a81c2ef0e14d16", - "address": "0xF7451caCcb32E6E3695e4B4bcF42152D57B73aD5", - "topics": ["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "logIndex": 43, - "blockHash": "0xb3863e9a8e48064c6f5231a4f7cdfe39f91bf0ba56598dfb144ca837865851fb" - }, - { - "transactionIndex": 2, - "blockNumber": 2923600, - "transactionHash": "0xf918daf7963ac3f8f5f17845a8a6aff659201f2a226dfd5528a81c2ef0e14d16", - "address": "0xF7451caCcb32E6E3695e4B4bcF42152D57B73aD5", - "topics": ["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"], - "data": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009f0cf4ed50ed01994900ce9ee1ae85bfecd5c66", - "logIndex": 44, - "blockHash": "0xb3863e9a8e48064c6f5231a4f7cdfe39f91bf0ba56598dfb144ca837865851fb" - } - ], - "blockNumber": 2923600, - "cumulativeGasUsed": "1797744", - "status": 1, - "byzantium": true - }, - "args": [ - "0x9eA68754e5AB4717b2b0Dd310f7fA03A9c57c0Df", - "0x09f0Cf4eD50ed01994900CE9ee1ae85BFECd5c66", - "0xc4d66de8000000000000000000000000243313c1cc198ff80756ed2ef14d9dcd94ee762b" - ], - "numDeployments": 1, - "solcInputHash": "9703a470efb9e8d7aa23c7bd832fbb1c", - "metadata": "{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_logic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"implementation_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \\\"admin cannot fallback to proxy target\\\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\",\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is upgraded.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"admin()\":{\"details\":\"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\"},\"constructor\":{\"details\":\"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\"},\"implementation()\":{\"details\":\"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\"},\"upgradeTo(address)\":{\"details\":\"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\"},\"upgradeToAndCall(address,bytes)\":{\"details\":\"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"hardhat-deploy/solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol\":\"OptimizedTransparentUpgradeableProxy\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"hardhat-deploy/solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x93b4e21c931252739a1ec13ea31d3d35a5c068be3163ccab83e4d70c40355f03\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializating the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256(\\\"eip1967.proxy.implementation\\\")) - 1));\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n\",\"keccak256\":\"0x6309f9f39dc6f4f45a24f296543867aa358e32946cd6b2874627a996d606b3a0\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967Upgrade {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view virtual returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Emitted when the beacon is upgraded.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(Address.isContract(IBeacon(newBeacon).implementation()), \\\"ERC1967: beacon implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(\\n address newBeacon,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x17668652127feebed0ce8d9431ef95ccc8c4292f03e3b8cf06c6ca16af396633\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internall call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overriden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xd5d1fd16e9faff7fcb3a52e02a8d49156f42a38a03f07b5f1810c21c2149a8ab\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n }\\n}\\n\",\"keccak256\":\"0x3777e696b62134e6177440dbe6e6601c0c156a443f57167194b67e75527439de\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/StorageSlot.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xfe1b7a9aa2a530a9e705b220e26cd584e2fbdc9602a3a1066032b12816b46aca\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/transparent/TransparentUpgradeableProxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../openzeppelin/proxy/ERC1967/ERC1967Proxy.sol\\\";\\n\\n/**\\n * @dev This contract implements a proxy that is upgradeable by an admin.\\n *\\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\\n * clashing], which can potentially be used in an attack, this contract uses the\\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\\n * things that go hand in hand:\\n *\\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\\n * that call matches one of the admin functions exposed by the proxy itself.\\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\\n * \\\"admin cannot fallback to proxy target\\\".\\n *\\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\\n * the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due\\n * to sudden errors when trying to call a function from the proxy implementation.\\n *\\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\\n */\\ncontract OptimizedTransparentUpgradeableProxy is ERC1967Proxy {\\n address internal immutable _ADMIN;\\n\\n /**\\n * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\\n * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\\n */\\n constructor(\\n address _logic,\\n address admin_,\\n bytes memory _data\\n ) payable ERC1967Proxy(_logic, _data) {\\n assert(_ADMIN_SLOT == bytes32(uint256(keccak256(\\\"eip1967.proxy.admin\\\")) - 1));\\n _ADMIN = admin_;\\n\\n // still store it to work with EIP-1967\\n bytes32 slot = _ADMIN_SLOT;\\n // solhint-disable-next-line no-inline-assembly\\n assembly {\\n sstore(slot, admin_)\\n }\\n emit AdminChanged(address(0), admin_);\\n }\\n\\n /**\\n * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\\n */\\n modifier ifAdmin() {\\n if (msg.sender == _getAdmin()) {\\n _;\\n } else {\\n _fallback();\\n }\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n */\\n function admin() external ifAdmin returns (address admin_) {\\n admin_ = _getAdmin();\\n }\\n\\n /**\\n * @dev Returns the current implementation.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\\n */\\n function implementation() external ifAdmin returns (address implementation_) {\\n implementation_ = _implementation();\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\\n */\\n function upgradeTo(address newImplementation) external ifAdmin {\\n _upgradeToAndCall(newImplementation, bytes(\\\"\\\"), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\\n * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\\n * proxied contract.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\\n */\\n function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {\\n _upgradeToAndCall(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _admin() internal view virtual returns (address) {\\n return _getAdmin();\\n }\\n\\n /**\\n * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.\\n */\\n function _beforeFallback() internal virtual override {\\n require(msg.sender != _getAdmin(), \\\"TransparentUpgradeableProxy: admin cannot fallback to proxy target\\\");\\n super._beforeFallback();\\n }\\n\\n function _getAdmin() internal view virtual override returns (address) {\\n return _ADMIN;\\n }\\n}\\n\",\"keccak256\":\"0xa30117644e27fa5b49e162aae2f62b36c1aca02f801b8c594d46e2024963a534\",\"license\":\"MIT\"}},\"version\":1}", - "bytecode": "0x60a0604052604051610c8f380380610c8f8339810160408190526100229161039f565b828161004f60017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd61046a565b5f80516020610c488339815191521461006a5761006a610489565b61007582825f610123565b506100a3905060017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610461046a565b5f80516020610c28833981519152146100be576100be610489565b6001600160a01b03821660808190525f80516020610c28833981519152838155604080515f8152602081019390935290917f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a1505050506104e8565b61012c8361014e565b5f825111806101385750805b1561014957610147838361018d565b505b505050565b610157816101bb565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606101b28383604051806060016040528060278152602001610c686027913961025b565b90505b92915050565b6001600160a01b0381163b61022d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b5f80516020610c4883398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b60606001600160a01b0384163b6102c35760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610224565b5f80856001600160a01b0316856040516102dd919061049d565b5f60405180830381855af49150503d805f8114610315576040519150601f19603f3d011682016040523d82523d5f602084013e61031a565b606091505b50909250905061032b828286610337565b925050505b9392505050565b60608315610346575081610330565b8251156103565782518084602001fd5b8160405162461bcd60e51b815260040161022491906104b3565b80516001600160a01b0381168114610386575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f805f606084860312156103b1575f80fd5b6103ba84610370565b92506103c860208501610370565b60408501519092506001600160401b03808211156103e4575f80fd5b818601915086601f8301126103f7575f80fd5b8151818111156104095761040961038b565b604051601f8201601f19908116603f011681019083821181831017156104315761043161038b565b81604052828152896020848701011115610449575f80fd5b8260208601602083015e5f6020848301015280955050505050509250925092565b818103818111156101b557634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52600160045260245ffd5b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6080516107066105225f395f818160eb0152818161013f015281816101bf0152818161020801528181610239015261025d01526107065ff3fe608060405260043610610042575f3560e01c80633659cfe6146100595780634f1ef286146100785780635c60da1b1461008b578063f851a440146100bb57610051565b366100515761004f6100cf565b005b61004f6100cf565b348015610064575f80fd5b5061004f6100733660046105c9565b6100e9565b61004f6100863660046105e2565b61013d565b348015610096575f80fd5b5061009f6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c6575f80fd5b5061009f610205565b6100d761025b565b6100e76100e2610309565b61033b565b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610135576101328160405180602001604052805f8152505f610359565b50565b6101326100cf565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101b4576101af8383838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525060019250610359915050565b505050565b6101af6100cf565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101fa576101f5610309565b905090565b6102026100cf565b90565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101fa57507f000000000000000000000000000000000000000000000000000000000000000090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036100e75760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b5f6101f57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b365f80375f80365f845af43d5f803e808015610355573d5ff35b3d5ffd5b61036283610383565b5f8251118061036e5750805b156101af5761037d83836103c2565b50505050565b61038c816103ee565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103e783836040518060600160405280602781526020016106aa6027913961049c565b9392505050565b6001600160a01b0381163b61045b5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610300565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60606001600160a01b0384163b6105045760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610300565b5f80856001600160a01b03168560405161051e919061065e565b5f60405180830381855af49150503d805f8114610556576040519150601f19603f3d011682016040523d82523d5f602084013e61055b565b606091505b509150915061056b828286610575565b9695505050505050565b606083156105845750816103e7565b8251156105945782518084602001fd5b8160405162461bcd60e51b81526004016103009190610674565b80356001600160a01b03811681146105c4575f80fd5b919050565b5f602082840312156105d9575f80fd5b6103e7826105ae565b5f805f604084860312156105f4575f80fd5b6105fd846105ae565b9250602084013567ffffffffffffffff80821115610619575f80fd5b818601915086601f83011261062c575f80fd5b81358181111561063a575f80fd5b87602082850101111561064b575f80fd5b6020830194508093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d447ec2a4b47962d9e959ca0ec6571d77747999259501e773b66fdcaef0e50bf64736f6c63430008190033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564", - "deployedBytecode": "0x608060405260043610610042575f3560e01c80633659cfe6146100595780634f1ef286146100785780635c60da1b1461008b578063f851a440146100bb57610051565b366100515761004f6100cf565b005b61004f6100cf565b348015610064575f80fd5b5061004f6100733660046105c9565b6100e9565b61004f6100863660046105e2565b61013d565b348015610096575f80fd5b5061009f6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c6575f80fd5b5061009f610205565b6100d761025b565b6100e76100e2610309565b61033b565b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610135576101328160405180602001604052805f8152505f610359565b50565b6101326100cf565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101b4576101af8383838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525060019250610359915050565b505050565b6101af6100cf565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101fa576101f5610309565b905090565b6102026100cf565b90565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101fa57507f000000000000000000000000000000000000000000000000000000000000000090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036100e75760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b5f6101f57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b365f80375f80365f845af43d5f803e808015610355573d5ff35b3d5ffd5b61036283610383565b5f8251118061036e5750805b156101af5761037d83836103c2565b50505050565b61038c816103ee565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103e783836040518060600160405280602781526020016106aa6027913961049c565b9392505050565b6001600160a01b0381163b61045b5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610300565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60606001600160a01b0384163b6105045760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610300565b5f80856001600160a01b03168560405161051e919061065e565b5f60405180830381855af49150503d805f8114610556576040519150601f19603f3d011682016040523d82523d5f602084013e61055b565b606091505b509150915061056b828286610575565b9695505050505050565b606083156105845750816103e7565b8251156105945782518084602001fd5b8160405162461bcd60e51b81526004016103009190610674565b80356001600160a01b03811681146105c4575f80fd5b919050565b5f602082840312156105d9575f80fd5b6103e7826105ae565b5f805f604084860312156105f4575f80fd5b6105fd846105ae565b9250602084013567ffffffffffffffff80821115610619575f80fd5b818601915086601f83011261062c575f80fd5b81358181111561063a575f80fd5b87602082850101111561064b575f80fd5b6020830194508093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d447ec2a4b47962d9e959ca0ec6571d77747999259501e773b66fdcaef0e50bf64736f6c63430008190033", - "devdoc": { - "details": "This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \"admin cannot fallback to proxy target\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.", - "events": { - "AdminChanged(address,address)": { - "details": "Emitted when the admin account has changed." - }, - "BeaconUpgraded(address)": { - "details": "Emitted when the beacon is upgraded." - }, - "Upgraded(address)": { - "details": "Emitted when the implementation is upgraded." - } - }, - "kind": "dev", - "methods": { - "admin()": { - "details": "Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`" - }, - "constructor": { - "details": "Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}." - }, - "implementation()": { - "details": "Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`" - }, - "upgradeTo(address)": { - "details": "Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}." - }, - "upgradeToAndCall(address,bytes)": { - "details": "Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}." - } - }, - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": {}, - "version": 1 - }, - "storageLayout": { - "storage": [], - "types": null - } -} diff --git a/deployments/berachainbepolia/DefaultProxyAdmin.json b/deployments/berachainbepolia/DefaultProxyAdmin.json deleted file mode 100644 index b2ec3951..00000000 --- a/deployments/berachainbepolia/DefaultProxyAdmin.json +++ /dev/null @@ -1,200 +0,0 @@ -{ - "address": "0x09f0Cf4eD50ed01994900CE9ee1ae85BFECd5c66", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "initialOwner", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "contract TransparentUpgradeableProxy", - "name": "proxy", - "type": "address" - }, - { - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "changeProxyAdmin", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "contract TransparentUpgradeableProxy", - "name": "proxy", - "type": "address" - } - ], - "name": "getProxyAdmin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "contract TransparentUpgradeableProxy", - "name": "proxy", - "type": "address" - } - ], - "name": "getProxyImplementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "contract TransparentUpgradeableProxy", - "name": "proxy", - "type": "address" - }, - { - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "upgrade", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "contract TransparentUpgradeableProxy", - "name": "proxy", - "type": "address" - }, - { - "internalType": "address", - "name": "implementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeAndCall", - "outputs": [], - "stateMutability": "payable", - "type": "function" - } - ], - "transactionHash": "0x662466a9659876d87a35629bf9aeb8b7b295759b2f26820b47752205f8e2ce56", - "receipt": { - "to": null, - "from": "0x18BDb05DD1A95677f4381cfb4db52D342dF5C00d", - "contractAddress": "0x09f0Cf4eD50ed01994900CE9ee1ae85BFECd5c66", - "transactionIndex": 2, - "gasUsed": "642835", - "logsBloom": "0x00000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000001000000000000004000000000000000000000020000000000000000000800000000000000000000800000000000400000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000020000000000000000000000000000000000000000000000000000400000000000000", - "blockHash": "0xf3851789cd335699f75838d7b19beff088579d1a87643463873bac9b49c6bec4", - "transactionHash": "0x662466a9659876d87a35629bf9aeb8b7b295759b2f26820b47752205f8e2ce56", - "logs": [ - { - "transactionIndex": 2, - "blockNumber": 2922362, - "transactionHash": "0x662466a9659876d87a35629bf9aeb8b7b295759b2f26820b47752205f8e2ce56", - "address": "0x09f0Cf4eD50ed01994900CE9ee1ae85BFECd5c66", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000ab3dba18664b96ad54459d06ca8bd18c9146d5ce" - ], - "data": "0x", - "logIndex": 80, - "blockHash": "0xf3851789cd335699f75838d7b19beff088579d1a87643463873bac9b49c6bec4" - } - ], - "blockNumber": 2922362, - "cumulativeGasUsed": "2857626", - "status": 1, - "byzantium": true - }, - "args": ["0xAb3DBA18664B96AD54459D06Ca8BD18C9146d5CE"], - "numDeployments": 1, - "bytecode": "0x6080604052348015600f57600080fd5b50604051610b09380380610b09833981016040819052602c91608a565b80603481603a565b505060b8565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215609b57600080fd5b81516001600160a01b038116811460b157600080fd5b9392505050565b610a42806100c76000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461012b57806399a88ec41461013e578063f2fde38b1461015e578063f3b7dead1461017e57600080fd5b8063204e1c7a14610080578063715018a6146100c95780637eff275e146100e05780638da5cb5b14610100575b600080fd5b34801561008c57600080fd5b506100a061009b3660046107e4565b61019e565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100d557600080fd5b506100de610255565b005b3480156100ec57600080fd5b506100de6100fb366004610808565b6102e7565b34801561010c57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166100a0565b6100de610139366004610870565b6103ee565b34801561014a57600080fd5b506100de610159366004610808565b6104fc565b34801561016a57600080fd5b506100de6101793660046107e4565b6105d1565b34801561018a57600080fd5b506100a06101993660046107e4565b610701565b60008060008373ffffffffffffffffffffffffffffffffffffffff166040516101ea907f5c60da1b00000000000000000000000000000000000000000000000000000000815260040190565b600060405180830381855afa9150503d8060008114610225576040519150601f19603f3d011682016040523d82523d6000602084013e61022a565b606091505b50915091508161023957600080fd5b8080602001905181019061024d9190610964565b949350505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146102db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6102e5600061074d565b565b60005473ffffffffffffffffffffffffffffffffffffffff163314610368576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102d2565b6040517f8f28397000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152831690638f283970906024015b600060405180830381600087803b1580156103d257600080fd5b505af11580156103e6573d6000803e3d6000fd5b505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461046f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102d2565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906104c59086908690600401610981565b6000604051808303818588803b1580156104de57600080fd5b505af11580156104f2573d6000803e3d6000fd5b5050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461057d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102d2565b6040517f3659cfe600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152831690633659cfe6906024016103b8565b60005473ffffffffffffffffffffffffffffffffffffffff163314610652576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102d2565b73ffffffffffffffffffffffffffffffffffffffff81166106f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016102d2565b6106fe8161074d565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff166040516101ea907ff851a44000000000000000000000000000000000000000000000000000000000815260040190565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff811681146106fe57600080fd5b6000602082840312156107f657600080fd5b8135610801816107c2565b9392505050565b6000806040838503121561081b57600080fd5b8235610826816107c2565b91506020830135610836816107c2565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561088557600080fd5b8335610890816107c2565b925060208401356108a0816107c2565b9150604084013567ffffffffffffffff808211156108bd57600080fd5b818601915086601f8301126108d157600080fd5b8135818111156108e3576108e3610841565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561092957610929610841565b8160405282815289602084870101111561094257600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b60006020828403121561097657600080fd5b8151610801816107c2565b73ffffffffffffffffffffffffffffffffffffffff831681526000602060406020840152835180604085015260005b818110156109cc578581018301518582016060015282016109b0565b5060006060828601015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010192505050939250505056fea2646970667358221220c8b87e24bc510b348206f64f4e9e1d933af610bf37c2ebe141148cb2bdd2610264736f6c63430008190033", - "deployedBytecode": "0x60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461012b57806399a88ec41461013e578063f2fde38b1461015e578063f3b7dead1461017e57600080fd5b8063204e1c7a14610080578063715018a6146100c95780637eff275e146100e05780638da5cb5b14610100575b600080fd5b34801561008c57600080fd5b506100a061009b3660046107e4565b61019e565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100d557600080fd5b506100de610255565b005b3480156100ec57600080fd5b506100de6100fb366004610808565b6102e7565b34801561010c57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166100a0565b6100de610139366004610870565b6103ee565b34801561014a57600080fd5b506100de610159366004610808565b6104fc565b34801561016a57600080fd5b506100de6101793660046107e4565b6105d1565b34801561018a57600080fd5b506100a06101993660046107e4565b610701565b60008060008373ffffffffffffffffffffffffffffffffffffffff166040516101ea907f5c60da1b00000000000000000000000000000000000000000000000000000000815260040190565b600060405180830381855afa9150503d8060008114610225576040519150601f19603f3d011682016040523d82523d6000602084013e61022a565b606091505b50915091508161023957600080fd5b8080602001905181019061024d9190610964565b949350505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146102db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6102e5600061074d565b565b60005473ffffffffffffffffffffffffffffffffffffffff163314610368576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102d2565b6040517f8f28397000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152831690638f283970906024015b600060405180830381600087803b1580156103d257600080fd5b505af11580156103e6573d6000803e3d6000fd5b505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461046f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102d2565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906104c59086908690600401610981565b6000604051808303818588803b1580156104de57600080fd5b505af11580156104f2573d6000803e3d6000fd5b5050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461057d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102d2565b6040517f3659cfe600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152831690633659cfe6906024016103b8565b60005473ffffffffffffffffffffffffffffffffffffffff163314610652576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102d2565b73ffffffffffffffffffffffffffffffffffffffff81166106f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016102d2565b6106fe8161074d565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff166040516101ea907ff851a44000000000000000000000000000000000000000000000000000000000815260040190565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff811681146106fe57600080fd5b6000602082840312156107f657600080fd5b8135610801816107c2565b9392505050565b6000806040838503121561081b57600080fd5b8235610826816107c2565b91506020830135610836816107c2565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561088557600080fd5b8335610890816107c2565b925060208401356108a0816107c2565b9150604084013567ffffffffffffffff808211156108bd57600080fd5b818601915086601f8301126108d157600080fd5b8135818111156108e3576108e3610841565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561092957610929610841565b8160405282815289602084870101111561094257600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b60006020828403121561097657600080fd5b8151610801816107c2565b73ffffffffffffffffffffffffffffffffffffffff831681526000602060406020840152835180604085015260005b818110156109cc578581018301518582016060015282016109b0565b5060006060828601015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010192505050939250505056fea2646970667358221220c8b87e24bc510b348206f64f4e9e1d933af610bf37c2ebe141148cb2bdd2610264736f6c63430008190033" -} diff --git a/deployments/berachainbepolia/RedStoneOracle.json b/deployments/berachainbepolia/RedStoneOracle.json deleted file mode 100644 index cec6dcbf..00000000 --- a/deployments/berachainbepolia/RedStoneOracle.json +++ /dev/null @@ -1,658 +0,0 @@ -{ - "address": "0xedc00668FC314fcc85a574c8DBa0BB205810F247", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "beacon", - "type": "address" - } - ], - "name": "BeaconUpgraded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "stateMutability": "payable", - "type": "fallback" - }, - { - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "admin_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "implementation_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "stateMutability": "payable", - "type": "receive" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "internalType": "address", - "name": "calledContract", - "type": "address" - }, - { - "internalType": "string", - "name": "methodSignature", - "type": "string" - } - ], - "name": "Unauthorized", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "version", - "type": "uint8" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "oldAccessControlManager", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAccessControlManager", - "type": "address" - } - ], - "name": "NewAccessControlManager", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferStarted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "previousPriceMantissa", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "newPriceMantissa", - "type": "uint256" - } - ], - "name": "PricePosted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "feed", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "maxStalePeriod", - "type": "uint256" - } - ], - "name": "TokenConfigAdded", - "type": "event" - }, - { - "inputs": [], - "name": "NATIVE_TOKEN_ADDR", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "acceptOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "accessControlManager", - "outputs": [ - { - "internalType": "contract IAccessControlManagerV8", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - } - ], - "name": "getPrice", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "accessControlManager_", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "prices", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "accessControlManager_", - "type": "address" - } - ], - "name": "setAccessControlManager", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "uint256", - "name": "price", - "type": "uint256" - } - ], - "name": "setDirectPrice", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "address", - "name": "feed", - "type": "address" - }, - { - "internalType": "uint256", - "name": "maxStalePeriod", - "type": "uint256" - } - ], - "internalType": "struct ChainlinkOracle.TokenConfig", - "name": "tokenConfig", - "type": "tuple" - } - ], - "name": "setTokenConfig", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "address", - "name": "feed", - "type": "address" - }, - { - "internalType": "uint256", - "name": "maxStalePeriod", - "type": "uint256" - } - ], - "internalType": "struct ChainlinkOracle.TokenConfig[]", - "name": "tokenConfigs_", - "type": "tuple[]" - } - ], - "name": "setTokenConfigs", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "tokenConfigs", - "outputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "address", - "name": "feed", - "type": "address" - }, - { - "internalType": "uint256", - "name": "maxStalePeriod", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "admin_", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "stateMutability": "payable", - "type": "constructor" - } - ], - "transactionHash": "0x97506f5539c0e66f6faafd5374084fcfe12c931acf5147a5d575a3f9b1a84a7d", - "receipt": { - "to": null, - "from": "0x18BDb05DD1A95677f4381cfb4db52D342dF5C00d", - "contractAddress": "0xedc00668FC314fcc85a574c8DBa0BB205810F247", - "transactionIndex": 1, - "gasUsed": "589258", - "logsBloom": "0x00000000000000000000000000000000400000000000000000804000000000000000000000008000000000000000000000000000000000000000000000008040000000000000000000000000000002000001000000000000000000000100000000000000020000000000020000000800000000800000000000000000000000400000000000000000000000000000000000000000000080000000000000800000000000000008000000000000000400000000000000820000000000000000000000000020000000000000000000040000000000000400000000000000000020000000000000000000000000000000000002000800000000000000000000001000", - "blockHash": "0x7c6cc012a0b972f4e4f5573641229745794207731b682ed827a54bf441b766d4", - "transactionHash": "0x97506f5539c0e66f6faafd5374084fcfe12c931acf5147a5d575a3f9b1a84a7d", - "logs": [ - { - "transactionIndex": 1, - "blockNumber": 2923680, - "transactionHash": "0x97506f5539c0e66f6faafd5374084fcfe12c931acf5147a5d575a3f9b1a84a7d", - "address": "0xedc00668FC314fcc85a574c8DBa0BB205810F247", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x00000000000000000000000033baaa71fdb915275908c80a383874096c5ecdea" - ], - "data": "0x", - "logIndex": 40, - "blockHash": "0x7c6cc012a0b972f4e4f5573641229745794207731b682ed827a54bf441b766d4" - }, - { - "transactionIndex": 1, - "blockNumber": 2923680, - "transactionHash": "0x97506f5539c0e66f6faafd5374084fcfe12c931acf5147a5d575a3f9b1a84a7d", - "address": "0xedc00668FC314fcc85a574c8DBa0BB205810F247", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x00000000000000000000000018bdb05dd1a95677f4381cfb4db52d342df5c00d" - ], - "data": "0x", - "logIndex": 41, - "blockHash": "0x7c6cc012a0b972f4e4f5573641229745794207731b682ed827a54bf441b766d4" - }, - { - "transactionIndex": 1, - "blockNumber": 2923680, - "transactionHash": "0x97506f5539c0e66f6faafd5374084fcfe12c931acf5147a5d575a3f9b1a84a7d", - "address": "0xedc00668FC314fcc85a574c8DBa0BB205810F247", - "topics": ["0x66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa0"], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000243313c1cc198ff80756ed2ef14d9dcd94ee762b", - "logIndex": 42, - "blockHash": "0x7c6cc012a0b972f4e4f5573641229745794207731b682ed827a54bf441b766d4" - }, - { - "transactionIndex": 1, - "blockNumber": 2923680, - "transactionHash": "0x97506f5539c0e66f6faafd5374084fcfe12c931acf5147a5d575a3f9b1a84a7d", - "address": "0xedc00668FC314fcc85a574c8DBa0BB205810F247", - "topics": ["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "logIndex": 43, - "blockHash": "0x7c6cc012a0b972f4e4f5573641229745794207731b682ed827a54bf441b766d4" - }, - { - "transactionIndex": 1, - "blockNumber": 2923680, - "transactionHash": "0x97506f5539c0e66f6faafd5374084fcfe12c931acf5147a5d575a3f9b1a84a7d", - "address": "0xedc00668FC314fcc85a574c8DBa0BB205810F247", - "topics": ["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"], - "data": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009f0cf4ed50ed01994900ce9ee1ae85bfecd5c66", - "logIndex": 44, - "blockHash": "0x7c6cc012a0b972f4e4f5573641229745794207731b682ed827a54bf441b766d4" - } - ], - "blockNumber": 2923680, - "cumulativeGasUsed": "1741557", - "status": 1, - "byzantium": true - }, - "args": [ - "0x33baAA71Fdb915275908c80A383874096c5ecdEa", - "0x09f0Cf4eD50ed01994900CE9ee1ae85BFECd5c66", - "0xc4d66de8000000000000000000000000243313c1cc198ff80756ed2ef14d9dcd94ee762b" - ], - "numDeployments": 1, - "solcInputHash": "9703a470efb9e8d7aa23c7bd832fbb1c", - "metadata": "{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_logic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"implementation_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \\\"admin cannot fallback to proxy target\\\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\",\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is upgraded.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"admin()\":{\"details\":\"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\"},\"constructor\":{\"details\":\"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\"},\"implementation()\":{\"details\":\"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\"},\"upgradeTo(address)\":{\"details\":\"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\"},\"upgradeToAndCall(address,bytes)\":{\"details\":\"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"hardhat-deploy/solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol\":\"OptimizedTransparentUpgradeableProxy\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"hardhat-deploy/solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x93b4e21c931252739a1ec13ea31d3d35a5c068be3163ccab83e4d70c40355f03\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializating the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256(\\\"eip1967.proxy.implementation\\\")) - 1));\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n\",\"keccak256\":\"0x6309f9f39dc6f4f45a24f296543867aa358e32946cd6b2874627a996d606b3a0\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967Upgrade {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view virtual returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Emitted when the beacon is upgraded.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(Address.isContract(IBeacon(newBeacon).implementation()), \\\"ERC1967: beacon implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(\\n address newBeacon,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x17668652127feebed0ce8d9431ef95ccc8c4292f03e3b8cf06c6ca16af396633\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internall call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overriden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xd5d1fd16e9faff7fcb3a52e02a8d49156f42a38a03f07b5f1810c21c2149a8ab\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n }\\n}\\n\",\"keccak256\":\"0x3777e696b62134e6177440dbe6e6601c0c156a443f57167194b67e75527439de\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/StorageSlot.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xfe1b7a9aa2a530a9e705b220e26cd584e2fbdc9602a3a1066032b12816b46aca\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/transparent/TransparentUpgradeableProxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../openzeppelin/proxy/ERC1967/ERC1967Proxy.sol\\\";\\n\\n/**\\n * @dev This contract implements a proxy that is upgradeable by an admin.\\n *\\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\\n * clashing], which can potentially be used in an attack, this contract uses the\\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\\n * things that go hand in hand:\\n *\\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\\n * that call matches one of the admin functions exposed by the proxy itself.\\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\\n * \\\"admin cannot fallback to proxy target\\\".\\n *\\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\\n * the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due\\n * to sudden errors when trying to call a function from the proxy implementation.\\n *\\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\\n */\\ncontract OptimizedTransparentUpgradeableProxy is ERC1967Proxy {\\n address internal immutable _ADMIN;\\n\\n /**\\n * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\\n * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\\n */\\n constructor(\\n address _logic,\\n address admin_,\\n bytes memory _data\\n ) payable ERC1967Proxy(_logic, _data) {\\n assert(_ADMIN_SLOT == bytes32(uint256(keccak256(\\\"eip1967.proxy.admin\\\")) - 1));\\n _ADMIN = admin_;\\n\\n // still store it to work with EIP-1967\\n bytes32 slot = _ADMIN_SLOT;\\n // solhint-disable-next-line no-inline-assembly\\n assembly {\\n sstore(slot, admin_)\\n }\\n emit AdminChanged(address(0), admin_);\\n }\\n\\n /**\\n * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\\n */\\n modifier ifAdmin() {\\n if (msg.sender == _getAdmin()) {\\n _;\\n } else {\\n _fallback();\\n }\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n */\\n function admin() external ifAdmin returns (address admin_) {\\n admin_ = _getAdmin();\\n }\\n\\n /**\\n * @dev Returns the current implementation.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\\n */\\n function implementation() external ifAdmin returns (address implementation_) {\\n implementation_ = _implementation();\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\\n */\\n function upgradeTo(address newImplementation) external ifAdmin {\\n _upgradeToAndCall(newImplementation, bytes(\\\"\\\"), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\\n * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\\n * proxied contract.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\\n */\\n function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {\\n _upgradeToAndCall(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _admin() internal view virtual returns (address) {\\n return _getAdmin();\\n }\\n\\n /**\\n * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.\\n */\\n function _beforeFallback() internal virtual override {\\n require(msg.sender != _getAdmin(), \\\"TransparentUpgradeableProxy: admin cannot fallback to proxy target\\\");\\n super._beforeFallback();\\n }\\n\\n function _getAdmin() internal view virtual override returns (address) {\\n return _ADMIN;\\n }\\n}\\n\",\"keccak256\":\"0xa30117644e27fa5b49e162aae2f62b36c1aca02f801b8c594d46e2024963a534\",\"license\":\"MIT\"}},\"version\":1}", - "bytecode": "0x60a0604052604051610c8f380380610c8f8339810160408190526100229161039f565b828161004f60017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd61046a565b5f80516020610c488339815191521461006a5761006a610489565b61007582825f610123565b506100a3905060017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610461046a565b5f80516020610c28833981519152146100be576100be610489565b6001600160a01b03821660808190525f80516020610c28833981519152838155604080515f8152602081019390935290917f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a1505050506104e8565b61012c8361014e565b5f825111806101385750805b1561014957610147838361018d565b505b505050565b610157816101bb565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606101b28383604051806060016040528060278152602001610c686027913961025b565b90505b92915050565b6001600160a01b0381163b61022d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b5f80516020610c4883398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b60606001600160a01b0384163b6102c35760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610224565b5f80856001600160a01b0316856040516102dd919061049d565b5f60405180830381855af49150503d805f8114610315576040519150601f19603f3d011682016040523d82523d5f602084013e61031a565b606091505b50909250905061032b828286610337565b925050505b9392505050565b60608315610346575081610330565b8251156103565782518084602001fd5b8160405162461bcd60e51b815260040161022491906104b3565b80516001600160a01b0381168114610386575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f805f606084860312156103b1575f80fd5b6103ba84610370565b92506103c860208501610370565b60408501519092506001600160401b03808211156103e4575f80fd5b818601915086601f8301126103f7575f80fd5b8151818111156104095761040961038b565b604051601f8201601f19908116603f011681019083821181831017156104315761043161038b565b81604052828152896020848701011115610449575f80fd5b8260208601602083015e5f6020848301015280955050505050509250925092565b818103818111156101b557634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52600160045260245ffd5b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6080516107066105225f395f818160eb0152818161013f015281816101bf0152818161020801528181610239015261025d01526107065ff3fe608060405260043610610042575f3560e01c80633659cfe6146100595780634f1ef286146100785780635c60da1b1461008b578063f851a440146100bb57610051565b366100515761004f6100cf565b005b61004f6100cf565b348015610064575f80fd5b5061004f6100733660046105c9565b6100e9565b61004f6100863660046105e2565b61013d565b348015610096575f80fd5b5061009f6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c6575f80fd5b5061009f610205565b6100d761025b565b6100e76100e2610309565b61033b565b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610135576101328160405180602001604052805f8152505f610359565b50565b6101326100cf565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101b4576101af8383838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525060019250610359915050565b505050565b6101af6100cf565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101fa576101f5610309565b905090565b6102026100cf565b90565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101fa57507f000000000000000000000000000000000000000000000000000000000000000090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036100e75760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b5f6101f57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b365f80375f80365f845af43d5f803e808015610355573d5ff35b3d5ffd5b61036283610383565b5f8251118061036e5750805b156101af5761037d83836103c2565b50505050565b61038c816103ee565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103e783836040518060600160405280602781526020016106aa6027913961049c565b9392505050565b6001600160a01b0381163b61045b5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610300565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60606001600160a01b0384163b6105045760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610300565b5f80856001600160a01b03168560405161051e919061065e565b5f60405180830381855af49150503d805f8114610556576040519150601f19603f3d011682016040523d82523d5f602084013e61055b565b606091505b509150915061056b828286610575565b9695505050505050565b606083156105845750816103e7565b8251156105945782518084602001fd5b8160405162461bcd60e51b81526004016103009190610674565b80356001600160a01b03811681146105c4575f80fd5b919050565b5f602082840312156105d9575f80fd5b6103e7826105ae565b5f805f604084860312156105f4575f80fd5b6105fd846105ae565b9250602084013567ffffffffffffffff80821115610619575f80fd5b818601915086601f83011261062c575f80fd5b81358181111561063a575f80fd5b87602082850101111561064b575f80fd5b6020830194508093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d447ec2a4b47962d9e959ca0ec6571d77747999259501e773b66fdcaef0e50bf64736f6c63430008190033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564", - "deployedBytecode": "0x608060405260043610610042575f3560e01c80633659cfe6146100595780634f1ef286146100785780635c60da1b1461008b578063f851a440146100bb57610051565b366100515761004f6100cf565b005b61004f6100cf565b348015610064575f80fd5b5061004f6100733660046105c9565b6100e9565b61004f6100863660046105e2565b61013d565b348015610096575f80fd5b5061009f6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c6575f80fd5b5061009f610205565b6100d761025b565b6100e76100e2610309565b61033b565b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610135576101328160405180602001604052805f8152505f610359565b50565b6101326100cf565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101b4576101af8383838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525060019250610359915050565b505050565b6101af6100cf565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101fa576101f5610309565b905090565b6102026100cf565b90565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101fa57507f000000000000000000000000000000000000000000000000000000000000000090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036100e75760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b5f6101f57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b365f80375f80365f845af43d5f803e808015610355573d5ff35b3d5ffd5b61036283610383565b5f8251118061036e5750805b156101af5761037d83836103c2565b50505050565b61038c816103ee565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103e783836040518060600160405280602781526020016106aa6027913961049c565b9392505050565b6001600160a01b0381163b61045b5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610300565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60606001600160a01b0384163b6105045760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610300565b5f80856001600160a01b03168560405161051e919061065e565b5f60405180830381855af49150503d805f8114610556576040519150601f19603f3d011682016040523d82523d5f602084013e61055b565b606091505b509150915061056b828286610575565b9695505050505050565b606083156105845750816103e7565b8251156105945782518084602001fd5b8160405162461bcd60e51b81526004016103009190610674565b80356001600160a01b03811681146105c4575f80fd5b919050565b5f602082840312156105d9575f80fd5b6103e7826105ae565b5f805f604084860312156105f4575f80fd5b6105fd846105ae565b9250602084013567ffffffffffffffff80821115610619575f80fd5b818601915086601f83011261062c575f80fd5b81358181111561063a575f80fd5b87602082850101111561064b575f80fd5b6020830194508093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d447ec2a4b47962d9e959ca0ec6571d77747999259501e773b66fdcaef0e50bf64736f6c63430008190033", - "execute": { - "methodName": "initialize", - "args": ["0x243313C1cC198FF80756ed2ef14D9dcd94Ee762b"] - }, - "implementation": "0x33baAA71Fdb915275908c80A383874096c5ecdEa", - "devdoc": { - "details": "This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \"admin cannot fallback to proxy target\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.", - "events": { - "AdminChanged(address,address)": { - "details": "Emitted when the admin account has changed." - }, - "BeaconUpgraded(address)": { - "details": "Emitted when the beacon is upgraded." - }, - "Upgraded(address)": { - "details": "Emitted when the implementation is upgraded." - } - }, - "kind": "dev", - "methods": { - "admin()": { - "details": "Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`" - }, - "constructor": { - "details": "Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}." - }, - "implementation()": { - "details": "Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`" - }, - "upgradeTo(address)": { - "details": "Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}." - }, - "upgradeToAndCall(address,bytes)": { - "details": "Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}." - } - }, - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": {}, - "version": 1 - }, - "storageLayout": { - "storage": [], - "types": null - } -} diff --git a/deployments/berachainbepolia/RedStoneOracle_Implementation.json b/deployments/berachainbepolia/RedStoneOracle_Implementation.json deleted file mode 100644 index 93248dee..00000000 --- a/deployments/berachainbepolia/RedStoneOracle_Implementation.json +++ /dev/null @@ -1,743 +0,0 @@ -{ - "address": "0x33baAA71Fdb915275908c80A383874096c5ecdEa", - "abi": [ - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "internalType": "address", - "name": "calledContract", - "type": "address" - }, - { - "internalType": "string", - "name": "methodSignature", - "type": "string" - } - ], - "name": "Unauthorized", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "version", - "type": "uint8" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "oldAccessControlManager", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAccessControlManager", - "type": "address" - } - ], - "name": "NewAccessControlManager", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferStarted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "previousPriceMantissa", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "newPriceMantissa", - "type": "uint256" - } - ], - "name": "PricePosted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "feed", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "maxStalePeriod", - "type": "uint256" - } - ], - "name": "TokenConfigAdded", - "type": "event" - }, - { - "inputs": [], - "name": "NATIVE_TOKEN_ADDR", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "acceptOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "accessControlManager", - "outputs": [ - { - "internalType": "contract IAccessControlManagerV8", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - } - ], - "name": "getPrice", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "accessControlManager_", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "prices", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "accessControlManager_", - "type": "address" - } - ], - "name": "setAccessControlManager", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "uint256", - "name": "price", - "type": "uint256" - } - ], - "name": "setDirectPrice", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "address", - "name": "feed", - "type": "address" - }, - { - "internalType": "uint256", - "name": "maxStalePeriod", - "type": "uint256" - } - ], - "internalType": "struct ChainlinkOracle.TokenConfig", - "name": "tokenConfig", - "type": "tuple" - } - ], - "name": "setTokenConfig", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "address", - "name": "feed", - "type": "address" - }, - { - "internalType": "uint256", - "name": "maxStalePeriod", - "type": "uint256" - } - ], - "internalType": "struct ChainlinkOracle.TokenConfig[]", - "name": "tokenConfigs_", - "type": "tuple[]" - } - ], - "name": "setTokenConfigs", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "tokenConfigs", - "outputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "address", - "name": "feed", - "type": "address" - }, - { - "internalType": "uint256", - "name": "maxStalePeriod", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "transactionHash": "0xbb125423032d055e9b2d77b01152b0296998b775913da58138fb13d111c7396a", - "receipt": { - "to": null, - "from": "0x18BDb05DD1A95677f4381cfb4db52D342dF5C00d", - "contractAddress": "0x33baAA71Fdb915275908c80A383874096c5ecdEa", - "transactionIndex": 0, - "gasUsed": "1111576", - "logsBloom": "0x00000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000400000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x8a33efddba29458a7208ea378d7c208f8ce55fc37a202f61ecee421fc9473c12", - "transactionHash": "0xbb125423032d055e9b2d77b01152b0296998b775913da58138fb13d111c7396a", - "logs": [ - { - "transactionIndex": 0, - "blockNumber": 2923676, - "transactionHash": "0xbb125423032d055e9b2d77b01152b0296998b775913da58138fb13d111c7396a", - "address": "0x33baAA71Fdb915275908c80A383874096c5ecdEa", - "topics": ["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"], - "data": "0x00000000000000000000000000000000000000000000000000000000000000ff", - "logIndex": 0, - "blockHash": "0x8a33efddba29458a7208ea378d7c208f8ce55fc37a202f61ecee421fc9473c12" - } - ], - "blockNumber": 2923676, - "cumulativeGasUsed": "1111576", - "status": 1, - "byzantium": true - }, - "args": [], - "numDeployments": 1, - "solcInputHash": "9703a470efb9e8d7aa23c7bd832fbb1c", - "metadata": "{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"calledContract\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"methodSignature\",\"type\":\"string\"}],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldAccessControlManager\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAccessControlManager\",\"type\":\"address\"}],\"name\":\"NewAccessControlManager\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"previousPriceMantissa\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newPriceMantissa\",\"type\":\"uint256\"}],\"name\":\"PricePosted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"feed\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxStalePeriod\",\"type\":\"uint256\"}],\"name\":\"TokenConfigAdded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"NATIVE_TOKEN_ADDR\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"accessControlManager\",\"outputs\":[{\"internalType\":\"contract IAccessControlManagerV8\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"accessControlManager_\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"prices\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"accessControlManager_\",\"type\":\"address\"}],\"name\":\"setAccessControlManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"setDirectPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feed\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxStalePeriod\",\"type\":\"uint256\"}],\"internalType\":\"struct ChainlinkOracle.TokenConfig\",\"name\":\"tokenConfig\",\"type\":\"tuple\"}],\"name\":\"setTokenConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feed\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxStalePeriod\",\"type\":\"uint256\"}],\"internalType\":\"struct ChainlinkOracle.TokenConfig[]\",\"name\":\"tokenConfigs_\",\"type\":\"tuple[]\"}],\"name\":\"setTokenConfigs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"tokenConfigs\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feed\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxStalePeriod\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Venus\",\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"The new owner accepts the ownership transfer.\"},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"getPrice(address)\":{\"params\":{\"asset\":\"Address of the asset\"},\"returns\":{\"_0\":\"Price in USD from Chainlink or a manually set price for the asset\"}},\"initialize(address)\":{\"params\":{\"accessControlManager_\":\"Address of the access control manager contract\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pendingOwner()\":{\"details\":\"Returns the address of the pending owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setAccessControlManager(address)\":{\"custom:access\":\"Only Governance\",\"custom:event\":\"Emits NewAccessControlManager event\",\"details\":\"Admin function to set address of AccessControlManager\",\"params\":{\"accessControlManager_\":\"The new address of the AccessControlManager\"}},\"setDirectPrice(address,uint256)\":{\"custom:access\":\"Only Governance\",\"custom:event\":\"Emits PricePosted event on successfully setup of asset price\",\"params\":{\"asset\":\"Asset address\",\"price\":\"Asset price in 18 decimals\"}},\"setTokenConfig((address,address,uint256))\":{\"custom:access\":\"Only Governance\",\"custom:error\":\"NotNullAddress error is thrown if asset address is nullNotNullAddress error is thrown if token feed address is nullRange error is thrown if maxStale period of token is not greater than zero\",\"custom:event\":\"Emits TokenConfigAdded event on successfully setting of the token config\",\"params\":{\"tokenConfig\":\"Token config struct\"}},\"setTokenConfigs((address,address,uint256)[])\":{\"custom:access\":\"Only Governance\",\"custom:error\":\"Zero length error thrown, if length of the array in parameter is 0\",\"params\":{\"tokenConfigs_\":\"config array\"}},\"transferOwnership(address)\":{\"details\":\"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner.\"}},\"title\":\"ChainlinkOracle\",\"version\":1},\"userdoc\":{\"errors\":{\"Unauthorized(address,address,string)\":[{\"notice\":\"Thrown when the action is prohibited by AccessControlManager\"}]},\"events\":{\"NewAccessControlManager(address,address)\":{\"notice\":\"Emitted when access control manager contract address is changed\"},\"PricePosted(address,uint256,uint256)\":{\"notice\":\"Emit when a price is manually set\"},\"TokenConfigAdded(address,address,uint256)\":{\"notice\":\"Emit when a token config is added\"}},\"kind\":\"user\",\"methods\":{\"NATIVE_TOKEN_ADDR()\":{\"notice\":\"Set this as asset address for native token on each chain. This is the underlying address for vBNB on BNB chain or an underlying asset for a native market on any chain.\"},\"accessControlManager()\":{\"notice\":\"Returns the address of the access control manager contract\"},\"constructor\":{\"notice\":\"Constructor for the implementation contract.\"},\"getPrice(address)\":{\"notice\":\"Gets the price of a asset from the chainlink oracle\"},\"initialize(address)\":{\"notice\":\"Initializes the owner of the contract\"},\"prices(address)\":{\"notice\":\"Manually set an override price, useful under extenuating conditions such as price feed failure\"},\"setAccessControlManager(address)\":{\"notice\":\"Sets the address of AccessControlManager\"},\"setDirectPrice(address,uint256)\":{\"notice\":\"Manually set the price of a given asset\"},\"setTokenConfig((address,address,uint256))\":{\"notice\":\"Add single token config. asset & feed cannot be null addresses and maxStalePeriod must be positive\"},\"setTokenConfigs((address,address,uint256)[])\":{\"notice\":\"Add multiple token configs at the same time\"},\"tokenConfigs(address)\":{\"notice\":\"Token config by assets\"}},\"notice\":\"This oracle fetches prices of assets from the Chainlink oracle.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracles/ChainlinkOracle.sol\":\"ChainlinkOracle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\ninterface AggregatorV3Interface {\\n function decimals() external view returns (uint8);\\n\\n function description() external view returns (string memory);\\n\\n function version() external view returns (uint256);\\n\\n function getRoundData(uint80 _roundId)\\n external\\n view\\n returns (\\n uint80 roundId,\\n int256 answer,\\n uint256 startedAt,\\n uint256 updatedAt,\\n uint80 answeredInRound\\n );\\n\\n function latestRoundData()\\n external\\n view\\n returns (\\n uint80 roundId,\\n int256 answer,\\n uint256 startedAt,\\n uint256 updatedAt,\\n uint80 answeredInRound\\n );\\n}\\n\",\"keccak256\":\"0x6e6e4b0835904509406b070ee173b5bc8f677c19421b76be38aea3b1b3d30846\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable2Step.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./OwnableUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership} and {acceptOwnership}.\\n *\\n * This module is used through inheritance. It will make available all functions\\n * from parent (Ownable).\\n */\\nabstract contract Ownable2StepUpgradeable is Initializable, OwnableUpgradeable {\\n address private _pendingOwner;\\n\\n event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner);\\n\\n function __Ownable2Step_init() internal onlyInitializing {\\n __Ownable_init_unchained();\\n }\\n\\n function __Ownable2Step_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Returns the address of the pending owner.\\n */\\n function pendingOwner() public view virtual returns (address) {\\n return _pendingOwner;\\n }\\n\\n /**\\n * @dev Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one.\\n * Can only be called by the current owner.\\n */\\n function transferOwnership(address newOwner) public virtual override onlyOwner {\\n _pendingOwner = newOwner;\\n emit OwnershipTransferStarted(owner(), newOwner);\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`) and deletes any pending owner.\\n * Internal function without access restriction.\\n */\\n function _transferOwnership(address newOwner) internal virtual override {\\n delete _pendingOwner;\\n super._transferOwnership(newOwner);\\n }\\n\\n /**\\n * @dev The new owner accepts the ownership transfer.\\n */\\n function acceptOwnership() public virtual {\\n address sender = _msgSender();\\n require(pendingOwner() == sender, \\\"Ownable2Step: caller is not the new owner\\\");\\n _transferOwnership(sender);\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x9140dabc466abab21b48b72dbda26736b1183a310d0e677d3719d201df026510\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/ContextUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\\n address private _owner;\\n\\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n /**\\n * @dev Initializes the contract setting the deployer as the initial owner.\\n */\\n function __Ownable_init() internal onlyInitializing {\\n __Ownable_init_unchained();\\n }\\n\\n function __Ownable_init_unchained() internal onlyInitializing {\\n _transferOwnership(_msgSender());\\n }\\n\\n /**\\n * @dev Throws if called by any account other than the owner.\\n */\\n modifier onlyOwner() {\\n _checkOwner();\\n _;\\n }\\n\\n /**\\n * @dev Returns the address of the current owner.\\n */\\n function owner() public view virtual returns (address) {\\n return _owner;\\n }\\n\\n /**\\n * @dev Throws if the sender is not the owner.\\n */\\n function _checkOwner() internal view virtual {\\n require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n /**\\n * @dev Leaves the contract without owner. It will not be possible to call\\n * `onlyOwner` functions. Can only be called by the current owner.\\n *\\n * NOTE: Renouncing ownership will leave the contract without an owner,\\n * thereby disabling any functionality that is only available to the owner.\\n */\\n function renounceOwnership() public virtual onlyOwner {\\n _transferOwnership(address(0));\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Can only be called by the current owner.\\n */\\n function transferOwnership(address newOwner) public virtual onlyOwner {\\n require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n _transferOwnership(newOwner);\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Internal function without access restriction.\\n */\\n function _transferOwnership(address newOwner) internal virtual {\\n address oldOwner = _owner;\\n _owner = newOwner;\\n emit OwnershipTransferred(oldOwner, newOwner);\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x359a1ab89b46b9aba7bcad3fb651924baf4893d15153049b9976b0fc9be1358e\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev External interface of AccessControl declared to support ERC165 detection.\\n */\\ninterface IAccessControl {\\n /**\\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\\n *\\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\\n * {RoleAdminChanged} not being emitted signaling this.\\n *\\n * _Available since v3.1._\\n */\\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\\n\\n /**\\n * @dev Emitted when `account` is granted `role`.\\n *\\n * `sender` is the account that originated the contract call, an admin role\\n * bearer except when using {AccessControl-_setupRole}.\\n */\\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Emitted when `account` is revoked `role`.\\n *\\n * `sender` is the account that originated the contract call:\\n * - if using `revokeRole`, it is the admin role bearer\\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\\n */\\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Returns `true` if `account` has been granted `role`.\\n */\\n function hasRole(bytes32 role, address account) external view returns (bool);\\n\\n /**\\n * @dev Returns the admin role that controls `role`. See {grantRole} and\\n * {revokeRole}.\\n *\\n * To change a role's admin, use {AccessControl-_setRoleAdmin}.\\n */\\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function grantRole(bytes32 role, address account) external;\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function revokeRole(bytes32 role, address account) external;\\n\\n /**\\n * @dev Revokes `role` from the calling account.\\n *\\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n * purpose is to provide a mechanism for accounts to lose their privileges\\n * if they are compromised (such as when a trusted device is misplaced).\\n *\\n * If the calling account had been granted `role`, emits a {RoleRevoked}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must be `account`.\\n */\\n function renounceRole(bytes32 role, address account) external;\\n}\\n\",\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n *\\n * _Available since v4.1._\\n */\\ninterface IERC20Metadata is IERC20 {\\n /**\\n * @dev Returns the name of the token.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the symbol of the token.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the decimals places of the token.\\n */\\n function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\"},\"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.25;\\n\\nimport \\\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\\\";\\nimport \\\"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol\\\";\\n\\nimport \\\"./IAccessControlManagerV8.sol\\\";\\n\\n/**\\n * @title AccessControlledV8\\n * @author Venus\\n * @notice This contract is helper between access control manager and actual contract. This contract further inherited by other contract (using solidity 0.8.13)\\n * to integrate access controlled mechanism. It provides initialise methods and verifying access methods.\\n */\\nabstract contract AccessControlledV8 is Initializable, Ownable2StepUpgradeable {\\n /// @notice Access control manager contract\\n IAccessControlManagerV8 private _accessControlManager;\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[49] private __gap;\\n\\n /// @notice Emitted when access control manager contract address is changed\\n event NewAccessControlManager(address oldAccessControlManager, address newAccessControlManager);\\n\\n /// @notice Thrown when the action is prohibited by AccessControlManager\\n error Unauthorized(address sender, address calledContract, string methodSignature);\\n\\n function __AccessControlled_init(address accessControlManager_) internal onlyInitializing {\\n __Ownable2Step_init();\\n __AccessControlled_init_unchained(accessControlManager_);\\n }\\n\\n function __AccessControlled_init_unchained(address accessControlManager_) internal onlyInitializing {\\n _setAccessControlManager(accessControlManager_);\\n }\\n\\n /**\\n * @notice Sets the address of AccessControlManager\\n * @dev Admin function to set address of AccessControlManager\\n * @param accessControlManager_ The new address of the AccessControlManager\\n * @custom:event Emits NewAccessControlManager event\\n * @custom:access Only Governance\\n */\\n function setAccessControlManager(address accessControlManager_) external onlyOwner {\\n _setAccessControlManager(accessControlManager_);\\n }\\n\\n /**\\n * @notice Returns the address of the access control manager contract\\n */\\n function accessControlManager() external view returns (IAccessControlManagerV8) {\\n return _accessControlManager;\\n }\\n\\n /**\\n * @dev Internal function to set address of AccessControlManager\\n * @param accessControlManager_ The new address of the AccessControlManager\\n */\\n function _setAccessControlManager(address accessControlManager_) internal {\\n require(address(accessControlManager_) != address(0), \\\"invalid acess control manager address\\\");\\n address oldAccessControlManager = address(_accessControlManager);\\n _accessControlManager = IAccessControlManagerV8(accessControlManager_);\\n emit NewAccessControlManager(oldAccessControlManager, accessControlManager_);\\n }\\n\\n /**\\n * @notice Reverts if the call is not allowed by AccessControlManager\\n * @param signature Method signature\\n */\\n function _checkAccessAllowed(string memory signature) internal view {\\n bool isAllowedToCall = _accessControlManager.isAllowedToCall(msg.sender, signature);\\n\\n if (!isAllowedToCall) {\\n revert Unauthorized(msg.sender, address(this), signature);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x0dcf283925f4dddc23ca0ee71d2cb96a9dd6e4cf08061b69fde1697ea39dc514\",\"license\":\"BSD-3-Clause\"},\"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\nimport \\\"@openzeppelin/contracts/access/IAccessControl.sol\\\";\\n\\n/**\\n * @title IAccessControlManagerV8\\n * @author Venus\\n * @notice Interface implemented by the `AccessControlManagerV8` contract.\\n */\\ninterface IAccessControlManagerV8 is IAccessControl {\\n function giveCallPermission(address contractAddress, string calldata functionSig, address accountToPermit) external;\\n\\n function revokeCallPermission(\\n address contractAddress,\\n string calldata functionSig,\\n address accountToRevoke\\n ) external;\\n\\n function isAllowedToCall(address account, string calldata functionSig) external view returns (bool);\\n\\n function hasPermission(\\n address account,\\n address contractAddress,\\n string calldata functionSig\\n ) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xaa29b098440d0b3a131c5ecdf25ce548790c1b5ac7bf9b5c0264b6af6f7a1e0b\",\"license\":\"BSD-3-Clause\"},\"contracts/interfaces/OracleInterface.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\ninterface OracleInterface {\\n function getPrice(address asset) external view returns (uint256);\\n}\\n\\ninterface ResilientOracleInterface is OracleInterface {\\n function updatePrice(address vToken) external;\\n\\n function updateAssetPrice(address asset) external;\\n\\n function getUnderlyingPrice(address vToken) external view returns (uint256);\\n}\\n\\ninterface TwapInterface is OracleInterface {\\n function updateTwap(address asset) external returns (uint256);\\n}\\n\\ninterface BoundValidatorInterface {\\n function validatePriceWithAnchorPrice(\\n address asset,\\n uint256 reporterPrice,\\n uint256 anchorPrice\\n ) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x2432799b0d824fc701beb4c30146e912b9aeecf77b5c1635dde6c5fbe6bfc3a7\",\"license\":\"BSD-3-Clause\"},\"contracts/interfaces/VBep20Interface.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\nimport \\\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\\\";\\n\\ninterface VBep20Interface is IERC20Metadata {\\n /**\\n * @notice Underlying asset for this VToken\\n */\\n function underlying() external view returns (address);\\n}\\n\",\"keccak256\":\"0x6e71c3df86501df5c0e4bace1333c0c91f9f9cced252a54fb99eeda219b789d5\",\"license\":\"BSD-3-Clause\"},\"contracts/oracles/ChainlinkOracle.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.25;\\n\\nimport \\\"../interfaces/VBep20Interface.sol\\\";\\nimport \\\"../interfaces/OracleInterface.sol\\\";\\nimport \\\"@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol\\\";\\nimport \\\"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol\\\";\\n\\n/**\\n * @title ChainlinkOracle\\n * @author Venus\\n * @notice This oracle fetches prices of assets from the Chainlink oracle.\\n */\\ncontract ChainlinkOracle is AccessControlledV8, OracleInterface {\\n struct TokenConfig {\\n /// @notice Underlying token address, which can't be a null address\\n /// @notice Used to check if a token is supported\\n /// @notice 0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB address for native tokens\\n /// (e.g BNB for BNB chain, ETH for Ethereum network)\\n address asset;\\n /// @notice Chainlink feed address\\n address feed;\\n /// @notice Price expiration period of this asset\\n uint256 maxStalePeriod;\\n }\\n\\n /// @notice Set this as asset address for native token on each chain.\\n /// This is the underlying address for vBNB on BNB chain or an underlying asset for a native market on any chain.\\n address public constant NATIVE_TOKEN_ADDR = 0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB;\\n\\n /// @notice Manually set an override price, useful under extenuating conditions such as price feed failure\\n mapping(address => uint256) public prices;\\n\\n /// @notice Token config by assets\\n mapping(address => TokenConfig) public tokenConfigs;\\n\\n /// @notice Emit when a price is manually set\\n event PricePosted(address indexed asset, uint256 previousPriceMantissa, uint256 newPriceMantissa);\\n\\n /// @notice Emit when a token config is added\\n event TokenConfigAdded(address indexed asset, address feed, uint256 maxStalePeriod);\\n\\n modifier notNullAddress(address someone) {\\n if (someone == address(0)) revert(\\\"can't be zero address\\\");\\n _;\\n }\\n\\n /// @notice Constructor for the implementation contract.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /**\\n * @notice Initializes the owner of the contract\\n * @param accessControlManager_ Address of the access control manager contract\\n */\\n function initialize(address accessControlManager_) external initializer {\\n __AccessControlled_init(accessControlManager_);\\n }\\n\\n /**\\n * @notice Manually set the price of a given asset\\n * @param asset Asset address\\n * @param price Asset price in 18 decimals\\n * @custom:access Only Governance\\n * @custom:event Emits PricePosted event on successfully setup of asset price\\n */\\n function setDirectPrice(address asset, uint256 price) external notNullAddress(asset) {\\n _checkAccessAllowed(\\\"setDirectPrice(address,uint256)\\\");\\n\\n uint256 previousPriceMantissa = prices[asset];\\n prices[asset] = price;\\n emit PricePosted(asset, previousPriceMantissa, price);\\n }\\n\\n /**\\n * @notice Add multiple token configs at the same time\\n * @param tokenConfigs_ config array\\n * @custom:access Only Governance\\n * @custom:error Zero length error thrown, if length of the array in parameter is 0\\n */\\n function setTokenConfigs(TokenConfig[] memory tokenConfigs_) external {\\n if (tokenConfigs_.length == 0) revert(\\\"length can't be 0\\\");\\n uint256 numTokenConfigs = tokenConfigs_.length;\\n for (uint256 i; i < numTokenConfigs; ) {\\n setTokenConfig(tokenConfigs_[i]);\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @notice Add single token config. asset & feed cannot be null addresses and maxStalePeriod must be positive\\n * @param tokenConfig Token config struct\\n * @custom:access Only Governance\\n * @custom:error NotNullAddress error is thrown if asset address is null\\n * @custom:error NotNullAddress error is thrown if token feed address is null\\n * @custom:error Range error is thrown if maxStale period of token is not greater than zero\\n * @custom:event Emits TokenConfigAdded event on successfully setting of the token config\\n */\\n function setTokenConfig(\\n TokenConfig memory tokenConfig\\n ) public notNullAddress(tokenConfig.asset) notNullAddress(tokenConfig.feed) {\\n _checkAccessAllowed(\\\"setTokenConfig(TokenConfig)\\\");\\n\\n if (tokenConfig.maxStalePeriod == 0) revert(\\\"stale period can't be zero\\\");\\n tokenConfigs[tokenConfig.asset] = tokenConfig;\\n emit TokenConfigAdded(tokenConfig.asset, tokenConfig.feed, tokenConfig.maxStalePeriod);\\n }\\n\\n /**\\n * @notice Gets the price of a asset from the chainlink oracle\\n * @param asset Address of the asset\\n * @return Price in USD from Chainlink or a manually set price for the asset\\n */\\n function getPrice(address asset) public view virtual returns (uint256) {\\n uint256 decimals;\\n\\n if (asset == NATIVE_TOKEN_ADDR) {\\n decimals = 18;\\n } else {\\n IERC20Metadata token = IERC20Metadata(asset);\\n decimals = token.decimals();\\n }\\n\\n return _getPriceInternal(asset, decimals);\\n }\\n\\n /**\\n * @notice Gets the Chainlink price for a given asset\\n * @param asset address of the asset\\n * @param decimals decimals of the asset\\n * @return price Asset price in USD or a manually set price of the asset\\n */\\n function _getPriceInternal(address asset, uint256 decimals) internal view returns (uint256 price) {\\n uint256 tokenPrice = prices[asset];\\n if (tokenPrice != 0) {\\n price = tokenPrice;\\n } else {\\n price = _getChainlinkPrice(asset);\\n }\\n\\n uint256 decimalDelta = 18 - decimals;\\n return price * (10 ** decimalDelta);\\n }\\n\\n /**\\n * @notice Get the Chainlink price for an asset, revert if token config doesn't exist\\n * @dev The precision of the price feed is used to ensure the returned price has 18 decimals of precision\\n * @param asset Address of the asset\\n * @return price Price in USD, with 18 decimals of precision\\n * @custom:error NotNullAddress error is thrown if the asset address is null\\n * @custom:error Price error is thrown if the Chainlink price of asset is not greater than zero\\n * @custom:error Timing error is thrown if current timestamp is less than the last updatedAt timestamp\\n * @custom:error Timing error is thrown if time difference between current time and last updated time\\n * is greater than maxStalePeriod\\n */\\n function _getChainlinkPrice(\\n address asset\\n ) private view notNullAddress(tokenConfigs[asset].asset) returns (uint256) {\\n TokenConfig memory tokenConfig = tokenConfigs[asset];\\n AggregatorV3Interface feed = AggregatorV3Interface(tokenConfig.feed);\\n\\n // note: maxStalePeriod cannot be 0\\n uint256 maxStalePeriod = tokenConfig.maxStalePeriod;\\n\\n // Chainlink USD-denominated feeds store answers at 8 decimals, mostly\\n uint256 decimalDelta = 18 - feed.decimals();\\n\\n (, int256 answer, , uint256 updatedAt, ) = feed.latestRoundData();\\n if (answer <= 0) revert(\\\"chainlink price must be positive\\\");\\n if (block.timestamp < updatedAt) revert(\\\"updatedAt exceeds block time\\\");\\n\\n uint256 deltaTime;\\n unchecked {\\n deltaTime = block.timestamp - updatedAt;\\n }\\n\\n if (deltaTime > maxStalePeriod) revert(\\\"chainlink price expired\\\");\\n\\n return uint256(answer) * (10 ** decimalDelta);\\n }\\n}\\n\",\"keccak256\":\"0x131ce5a60e3dd3dd3cfa2f4e0a542a24c66ef55144c72107e715c450be4f79cb\",\"license\":\"BSD-3-Clause\"}},\"version\":1}", - "bytecode": "0x6080604052348015600e575f80fd5b5060156019565b60d3565b5f54610100900460ff161560835760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff9081161460d1575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6112a4806100e05f395ff3fe608060405234801561000f575f80fd5b50600436106100f0575f3560e01c806379ba509711610093578063c4d66de811610063578063c4d66de81461022a578063cfed246b1461023d578063e30c39781461025c578063f2fde38b1461026d575f80fd5b806379ba5097146101d15780638da5cb5b146101d9578063a9534f8a146101fe578063b4a0bdf314610219575f80fd5b80631b69dc5f116100ce5780631b69dc5f1461012f578063392787d21461019557806341976e09146101a8578063715018a6146101c9575f80fd5b80630431710e146100f457806309a8acb0146101095780630e32cb861461011c575b5f80fd5b610107610102366004610e67565b610280565b005b610107610117366004610f12565b610304565b61010761012a366004610f3a565b6103c8565b61016a61013d366004610f3a565b60ca6020525f90815260409020805460018201546002909201546001600160a01b03918216929091169083565b604080516001600160a01b039485168152939092166020840152908201526060015b60405180910390f35b6101076101a3366004610f53565b6103dc565b6101bb6101b6366004610f3a565b61054f565b60405190815260200161018c565b6101076105fa565b61010761060d565b6033546001600160a01b03165b6040516001600160a01b03909116815260200161018c565b6101e673bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb81565b6097546001600160a01b03166101e6565b610107610238366004610f3a565b610684565b6101bb61024b366004610f3a565b60c96020525f908152604090205481565b6065546001600160a01b03166101e6565b61010761027b366004610f3a565b610792565b80515f036102c95760405162461bcd60e51b815260206004820152601160248201527006c656e6774682063616e2774206265203607c1b60448201526064015b60405180910390fd5b80515f5b818110156102ff576102f78382815181106102ea576102ea610f6d565b60200260200101516103dc565b6001016102cd565b505050565b816001600160a01b03811661032b5760405162461bcd60e51b81526004016102c090610f81565b6103696040518060400160405280601f81526020017f736574446972656374507269636528616464726573732c75696e743235362900815250610803565b6001600160a01b0383165f81815260c96020908152604091829020805490869055825181815291820186905292917fa0844d44570b5ec5ac55e9e7d1e7fc8149b4f33b4b61f3c8fc08bacce058faee910160405180910390a250505050565b6103d061089a565b6103d9816108f4565b50565b80516001600160a01b0381166104045760405162461bcd60e51b81526004016102c090610f81565b60208201516001600160a01b03811661042f5760405162461bcd60e51b81526004016102c090610f81565b61046d6040518060400160405280601b81526020017f736574546f6b656e436f6e66696728546f6b656e436f6e666967290000000000815250610803565b82604001515f036104c05760405162461bcd60e51b815260206004820152601a60248201527f7374616c6520706572696f642063616e2774206265207a65726f00000000000060448201526064016102c0565b82516001600160a01b039081165f90815260ca6020908152604091829020865181549085166001600160a01b0319918216811783558389015160018401805491909716921682179095558388015160029092018290558351908152918201527f3cc8d9cb9370a23a8b9ffa75efa24cecb65c4693980e58260841adc474983c5f910160405180910390a2505050565b5f8073bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba196001600160a01b0384160161057e575060126105e9565b5f839050806001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105be573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105e29190610fb0565b60ff169150505b6105f383826109b2565b9392505050565b61060261089a565b61060b5f610a12565b565b60655433906001600160a01b0316811461067b5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084016102c0565b6103d981610a12565b5f54610100900460ff16158080156106a257505f54600160ff909116105b806106bb5750303b1580156106bb57505f5460ff166001145b61071e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016102c0565b5f805460ff19166001179055801561073f575f805461ff0019166101001790555b61074882610a2b565b801561078e575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b5050565b61079a61089a565b606580546001600160a01b0383166001600160a01b031990911681179091556107cb6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6097546040516318c5e8ab60e01b81525f916001600160a01b0316906318c5e8ab906108359033908690600401610ffe565b602060405180830381865afa158015610850573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108749190611029565b90508061078e57333083604051634a3fa29360e01b81526004016102c093929190611048565b6033546001600160a01b0316331461060b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102c0565b6001600160a01b0381166109585760405162461bcd60e51b815260206004820152602560248201527f696e76616c696420616365737320636f6e74726f6c206d616e61676572206164604482015264647265737360d81b60648201526084016102c0565b609780546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa09101610785565b6001600160a01b0382165f90815260c9602052604081205480156109d8578091506109e4565b6109e184610a62565b91505b5f6109f0846012611090565b90506109fd81600a611183565b610a07908461118e565b925050505b92915050565b606580546001600160a01b03191690556103d981610ccd565b5f54610100900460ff16610a515760405162461bcd60e51b81526004016102c0906111a5565b610a59610d1e565b6103d981610d4c565b6001600160a01b038082165f90815260ca602052604081205490911680610a9b5760405162461bcd60e51b81526004016102c090610f81565b6001600160a01b038084165f90815260ca6020908152604080832081516060810183528154861681526001820154909516858401819052600290910154858301819052825163313ce56760e01b81529251919490939092859263313ce567926004808401939192918290030181865afa158015610b1a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b3e9190610fb0565b610b499060126111f0565b60ff1690505f80846001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610b8c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb09190611222565b509350509250505f8213610c065760405162461bcd60e51b815260206004820181905260248201527f636861696e6c696e6b207072696365206d75737420626520706f73697469766560448201526064016102c0565b80421015610c565760405162461bcd60e51b815260206004820152601c60248201527f757064617465644174206578636565647320626c6f636b2074696d650000000060448201526064016102c0565b4281900384811115610caa5760405162461bcd60e51b815260206004820152601760248201527f636861696e6c696e6b207072696365206578706972656400000000000000000060448201526064016102c0565b610cb584600a611183565b610cbf908461118e565b9a9950505050505050505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff16610d445760405162461bcd60e51b81526004016102c0906111a5565b61060b610d72565b5f54610100900460ff166103d05760405162461bcd60e51b81526004016102c0906111a5565b5f54610100900460ff16610d985760405162461bcd60e51b81526004016102c0906111a5565b61060b33610a12565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610dde57610dde610da1565b604052919050565b80356001600160a01b0381168114610dfc575f80fd5b919050565b5f60608284031215610e11575f80fd5b6040516060810181811067ffffffffffffffff82111715610e3457610e34610da1565b604052905080610e4383610de6565b8152610e5160208401610de6565b6020820152604083013560408201525092915050565b5f6020808385031215610e78575f80fd5b823567ffffffffffffffff80821115610e8f575f80fd5b818501915085601f830112610ea2575f80fd5b813581811115610eb457610eb4610da1565b610ec2848260051b01610db5565b81815284810192506060918202840185019188831115610ee0575f80fd5b938501935b82851015610f0657610ef78986610e01565b84529384019392850192610ee5565b50979650505050505050565b5f8060408385031215610f23575f80fd5b610f2c83610de6565b946020939093013593505050565b5f60208284031215610f4a575f80fd5b6105f382610de6565b5f60608284031215610f63575f80fd5b6105f38383610e01565b634e487b7160e01b5f52603260045260245ffd5b60208082526015908201527463616e2774206265207a65726f206164647265737360581b604082015260600190565b5f60208284031215610fc0575f80fd5b815160ff811681146105f3575f80fd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6001600160a01b03831681526040602082018190525f9061102190830184610fd0565b949350505050565b5f60208284031215611039575f80fd5b815180151581146105f3575f80fd5b6001600160a01b038481168252831660208201526060604082018190525f9061107390830184610fd0565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610a0c57610a0c61107c565b600181815b808511156110dd57815f19048211156110c3576110c361107c565b808516156110d057918102915b93841c93908002906110a8565b509250929050565b5f826110f357506001610a0c565b816110ff57505f610a0c565b8160018114611115576002811461111f5761113b565b6001915050610a0c565b60ff8411156111305761113061107c565b50506001821b610a0c565b5060208310610133831016604e8410600b841016171561115e575081810a610a0c565b61116883836110a3565b805f190482111561117b5761117b61107c565b029392505050565b5f6105f383836110e5565b8082028115828204841417610a0c57610a0c61107c565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60ff8281168282160390811115610a0c57610a0c61107c565b805169ffffffffffffffffffff81168114610dfc575f80fd5b5f805f805f60a08688031215611236575f80fd5b61123f86611209565b945060208601519350604086015192506060860151915061126260808701611209565b9050929550929590935056fea2646970667358221220ac43248fe95a18d2de313853802035d40bcd4b1bcdaadb88f3c1536bcf21ab6b64736f6c63430008190033", - "deployedBytecode": "0x608060405234801561000f575f80fd5b50600436106100f0575f3560e01c806379ba509711610093578063c4d66de811610063578063c4d66de81461022a578063cfed246b1461023d578063e30c39781461025c578063f2fde38b1461026d575f80fd5b806379ba5097146101d15780638da5cb5b146101d9578063a9534f8a146101fe578063b4a0bdf314610219575f80fd5b80631b69dc5f116100ce5780631b69dc5f1461012f578063392787d21461019557806341976e09146101a8578063715018a6146101c9575f80fd5b80630431710e146100f457806309a8acb0146101095780630e32cb861461011c575b5f80fd5b610107610102366004610e67565b610280565b005b610107610117366004610f12565b610304565b61010761012a366004610f3a565b6103c8565b61016a61013d366004610f3a565b60ca6020525f90815260409020805460018201546002909201546001600160a01b03918216929091169083565b604080516001600160a01b039485168152939092166020840152908201526060015b60405180910390f35b6101076101a3366004610f53565b6103dc565b6101bb6101b6366004610f3a565b61054f565b60405190815260200161018c565b6101076105fa565b61010761060d565b6033546001600160a01b03165b6040516001600160a01b03909116815260200161018c565b6101e673bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb81565b6097546001600160a01b03166101e6565b610107610238366004610f3a565b610684565b6101bb61024b366004610f3a565b60c96020525f908152604090205481565b6065546001600160a01b03166101e6565b61010761027b366004610f3a565b610792565b80515f036102c95760405162461bcd60e51b815260206004820152601160248201527006c656e6774682063616e2774206265203607c1b60448201526064015b60405180910390fd5b80515f5b818110156102ff576102f78382815181106102ea576102ea610f6d565b60200260200101516103dc565b6001016102cd565b505050565b816001600160a01b03811661032b5760405162461bcd60e51b81526004016102c090610f81565b6103696040518060400160405280601f81526020017f736574446972656374507269636528616464726573732c75696e743235362900815250610803565b6001600160a01b0383165f81815260c96020908152604091829020805490869055825181815291820186905292917fa0844d44570b5ec5ac55e9e7d1e7fc8149b4f33b4b61f3c8fc08bacce058faee910160405180910390a250505050565b6103d061089a565b6103d9816108f4565b50565b80516001600160a01b0381166104045760405162461bcd60e51b81526004016102c090610f81565b60208201516001600160a01b03811661042f5760405162461bcd60e51b81526004016102c090610f81565b61046d6040518060400160405280601b81526020017f736574546f6b656e436f6e66696728546f6b656e436f6e666967290000000000815250610803565b82604001515f036104c05760405162461bcd60e51b815260206004820152601a60248201527f7374616c6520706572696f642063616e2774206265207a65726f00000000000060448201526064016102c0565b82516001600160a01b039081165f90815260ca6020908152604091829020865181549085166001600160a01b0319918216811783558389015160018401805491909716921682179095558388015160029092018290558351908152918201527f3cc8d9cb9370a23a8b9ffa75efa24cecb65c4693980e58260841adc474983c5f910160405180910390a2505050565b5f8073bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba196001600160a01b0384160161057e575060126105e9565b5f839050806001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105be573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105e29190610fb0565b60ff169150505b6105f383826109b2565b9392505050565b61060261089a565b61060b5f610a12565b565b60655433906001600160a01b0316811461067b5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084016102c0565b6103d981610a12565b5f54610100900460ff16158080156106a257505f54600160ff909116105b806106bb5750303b1580156106bb57505f5460ff166001145b61071e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016102c0565b5f805460ff19166001179055801561073f575f805461ff0019166101001790555b61074882610a2b565b801561078e575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b5050565b61079a61089a565b606580546001600160a01b0383166001600160a01b031990911681179091556107cb6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6097546040516318c5e8ab60e01b81525f916001600160a01b0316906318c5e8ab906108359033908690600401610ffe565b602060405180830381865afa158015610850573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108749190611029565b90508061078e57333083604051634a3fa29360e01b81526004016102c093929190611048565b6033546001600160a01b0316331461060b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102c0565b6001600160a01b0381166109585760405162461bcd60e51b815260206004820152602560248201527f696e76616c696420616365737320636f6e74726f6c206d616e61676572206164604482015264647265737360d81b60648201526084016102c0565b609780546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa09101610785565b6001600160a01b0382165f90815260c9602052604081205480156109d8578091506109e4565b6109e184610a62565b91505b5f6109f0846012611090565b90506109fd81600a611183565b610a07908461118e565b925050505b92915050565b606580546001600160a01b03191690556103d981610ccd565b5f54610100900460ff16610a515760405162461bcd60e51b81526004016102c0906111a5565b610a59610d1e565b6103d981610d4c565b6001600160a01b038082165f90815260ca602052604081205490911680610a9b5760405162461bcd60e51b81526004016102c090610f81565b6001600160a01b038084165f90815260ca6020908152604080832081516060810183528154861681526001820154909516858401819052600290910154858301819052825163313ce56760e01b81529251919490939092859263313ce567926004808401939192918290030181865afa158015610b1a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b3e9190610fb0565b610b499060126111f0565b60ff1690505f80846001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610b8c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb09190611222565b509350509250505f8213610c065760405162461bcd60e51b815260206004820181905260248201527f636861696e6c696e6b207072696365206d75737420626520706f73697469766560448201526064016102c0565b80421015610c565760405162461bcd60e51b815260206004820152601c60248201527f757064617465644174206578636565647320626c6f636b2074696d650000000060448201526064016102c0565b4281900384811115610caa5760405162461bcd60e51b815260206004820152601760248201527f636861696e6c696e6b207072696365206578706972656400000000000000000060448201526064016102c0565b610cb584600a611183565b610cbf908461118e565b9a9950505050505050505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff16610d445760405162461bcd60e51b81526004016102c0906111a5565b61060b610d72565b5f54610100900460ff166103d05760405162461bcd60e51b81526004016102c0906111a5565b5f54610100900460ff16610d985760405162461bcd60e51b81526004016102c0906111a5565b61060b33610a12565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610dde57610dde610da1565b604052919050565b80356001600160a01b0381168114610dfc575f80fd5b919050565b5f60608284031215610e11575f80fd5b6040516060810181811067ffffffffffffffff82111715610e3457610e34610da1565b604052905080610e4383610de6565b8152610e5160208401610de6565b6020820152604083013560408201525092915050565b5f6020808385031215610e78575f80fd5b823567ffffffffffffffff80821115610e8f575f80fd5b818501915085601f830112610ea2575f80fd5b813581811115610eb457610eb4610da1565b610ec2848260051b01610db5565b81815284810192506060918202840185019188831115610ee0575f80fd5b938501935b82851015610f0657610ef78986610e01565b84529384019392850192610ee5565b50979650505050505050565b5f8060408385031215610f23575f80fd5b610f2c83610de6565b946020939093013593505050565b5f60208284031215610f4a575f80fd5b6105f382610de6565b5f60608284031215610f63575f80fd5b6105f38383610e01565b634e487b7160e01b5f52603260045260245ffd5b60208082526015908201527463616e2774206265207a65726f206164647265737360581b604082015260600190565b5f60208284031215610fc0575f80fd5b815160ff811681146105f3575f80fd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6001600160a01b03831681526040602082018190525f9061102190830184610fd0565b949350505050565b5f60208284031215611039575f80fd5b815180151581146105f3575f80fd5b6001600160a01b038481168252831660208201526060604082018190525f9061107390830184610fd0565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610a0c57610a0c61107c565b600181815b808511156110dd57815f19048211156110c3576110c361107c565b808516156110d057918102915b93841c93908002906110a8565b509250929050565b5f826110f357506001610a0c565b816110ff57505f610a0c565b8160018114611115576002811461111f5761113b565b6001915050610a0c565b60ff8411156111305761113061107c565b50506001821b610a0c565b5060208310610133831016604e8410600b841016171561115e575081810a610a0c565b61116883836110a3565b805f190482111561117b5761117b61107c565b029392505050565b5f6105f383836110e5565b8082028115828204841417610a0c57610a0c61107c565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60ff8281168282160390811115610a0c57610a0c61107c565b805169ffffffffffffffffffff81168114610dfc575f80fd5b5f805f805f60a08688031215611236575f80fd5b61123f86611209565b945060208601519350604086015192506060860151915061126260808701611209565b9050929550929590935056fea2646970667358221220ac43248fe95a18d2de313853802035d40bcd4b1bcdaadb88f3c1536bcf21ab6b64736f6c63430008190033", - "devdoc": { - "author": "Venus", - "events": { - "Initialized(uint8)": { - "details": "Triggered when the contract has been initialized or reinitialized." - } - }, - "kind": "dev", - "methods": { - "acceptOwnership()": { - "details": "The new owner accepts the ownership transfer." - }, - "constructor": { - "custom:oz-upgrades-unsafe-allow": "constructor" - }, - "getPrice(address)": { - "params": { - "asset": "Address of the asset" - }, - "returns": { - "_0": "Price in USD from Chainlink or a manually set price for the asset" - } - }, - "initialize(address)": { - "params": { - "accessControlManager_": "Address of the access control manager contract" - } - }, - "owner()": { - "details": "Returns the address of the current owner." - }, - "pendingOwner()": { - "details": "Returns the address of the pending owner." - }, - "renounceOwnership()": { - "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner." - }, - "setAccessControlManager(address)": { - "custom:access": "Only Governance", - "custom:event": "Emits NewAccessControlManager event", - "details": "Admin function to set address of AccessControlManager", - "params": { - "accessControlManager_": "The new address of the AccessControlManager" - } - }, - "setDirectPrice(address,uint256)": { - "custom:access": "Only Governance", - "custom:event": "Emits PricePosted event on successfully setup of asset price", - "params": { - "asset": "Asset address", - "price": "Asset price in 18 decimals" - } - }, - "setTokenConfig((address,address,uint256))": { - "custom:access": "Only Governance", - "custom:error": "NotNullAddress error is thrown if asset address is nullNotNullAddress error is thrown if token feed address is nullRange error is thrown if maxStale period of token is not greater than zero", - "custom:event": "Emits TokenConfigAdded event on successfully setting of the token config", - "params": { - "tokenConfig": "Token config struct" - } - }, - "setTokenConfigs((address,address,uint256)[])": { - "custom:access": "Only Governance", - "custom:error": "Zero length error thrown, if length of the array in parameter is 0", - "params": { - "tokenConfigs_": "config array" - } - }, - "transferOwnership(address)": { - "details": "Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner." - } - }, - "title": "ChainlinkOracle", - "version": 1 - }, - "userdoc": { - "errors": { - "Unauthorized(address,address,string)": [ - { - "notice": "Thrown when the action is prohibited by AccessControlManager" - } - ] - }, - "events": { - "NewAccessControlManager(address,address)": { - "notice": "Emitted when access control manager contract address is changed" - }, - "PricePosted(address,uint256,uint256)": { - "notice": "Emit when a price is manually set" - }, - "TokenConfigAdded(address,address,uint256)": { - "notice": "Emit when a token config is added" - } - }, - "kind": "user", - "methods": { - "NATIVE_TOKEN_ADDR()": { - "notice": "Set this as asset address for native token on each chain. This is the underlying address for vBNB on BNB chain or an underlying asset for a native market on any chain." - }, - "accessControlManager()": { - "notice": "Returns the address of the access control manager contract" - }, - "constructor": { - "notice": "Constructor for the implementation contract." - }, - "getPrice(address)": { - "notice": "Gets the price of a asset from the chainlink oracle" - }, - "initialize(address)": { - "notice": "Initializes the owner of the contract" - }, - "prices(address)": { - "notice": "Manually set an override price, useful under extenuating conditions such as price feed failure" - }, - "setAccessControlManager(address)": { - "notice": "Sets the address of AccessControlManager" - }, - "setDirectPrice(address,uint256)": { - "notice": "Manually set the price of a given asset" - }, - "setTokenConfig((address,address,uint256))": { - "notice": "Add single token config. asset & feed cannot be null addresses and maxStalePeriod must be positive" - }, - "setTokenConfigs((address,address,uint256)[])": { - "notice": "Add multiple token configs at the same time" - }, - "tokenConfigs(address)": { - "notice": "Token config by assets" - } - }, - "notice": "This oracle fetches prices of assets from the Chainlink oracle.", - "version": 1 - }, - "storageLayout": { - "storage": [ - { - "astId": 349, - "contract": "contracts/oracles/ChainlinkOracle.sol:ChainlinkOracle", - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8" - }, - { - "astId": 352, - "contract": "contracts/oracles/ChainlinkOracle.sol:ChainlinkOracle", - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool" - }, - { - "astId": 1019, - "contract": "contracts/oracles/ChainlinkOracle.sol:ChainlinkOracle", - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage" - }, - { - "astId": 221, - "contract": "contracts/oracles/ChainlinkOracle.sol:ChainlinkOracle", - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address" - }, - { - "astId": 341, - "contract": "contracts/oracles/ChainlinkOracle.sol:ChainlinkOracle", - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 114, - "contract": "contracts/oracles/ChainlinkOracle.sol:ChainlinkOracle", - "label": "_pendingOwner", - "offset": 0, - "slot": "101", - "type": "t_address" - }, - { - "astId": 208, - "contract": "contracts/oracles/ChainlinkOracle.sol:ChainlinkOracle", - "label": "__gap", - "offset": 0, - "slot": "102", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 3586, - "contract": "contracts/oracles/ChainlinkOracle.sol:ChainlinkOracle", - "label": "_accessControlManager", - "offset": 0, - "slot": "151", - "type": "t_contract(IAccessControlManagerV8)3771" - }, - { - "astId": 3591, - "contract": "contracts/oracles/ChainlinkOracle.sol:ChainlinkOracle", - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 6613, - "contract": "contracts/oracles/ChainlinkOracle.sol:ChainlinkOracle", - "label": "prices", - "offset": 0, - "slot": "201", - "type": "t_mapping(t_address,t_uint256)" - }, - { - "astId": 6619, - "contract": "contracts/oracles/ChainlinkOracle.sol:ChainlinkOracle", - "label": "tokenConfigs", - "offset": 0, - "slot": "202", - "type": "t_mapping(t_address,t_struct(TokenConfig)6604_storage)" - } - ], - "types": { - "t_address": { - "encoding": "inplace", - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "base": "t_uint256", - "encoding": "inplace", - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "base": "t_uint256", - "encoding": "inplace", - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "encoding": "inplace", - "label": "bool", - "numberOfBytes": "1" - }, - "t_contract(IAccessControlManagerV8)3771": { - "encoding": "inplace", - "label": "contract IAccessControlManagerV8", - "numberOfBytes": "20" - }, - "t_mapping(t_address,t_struct(TokenConfig)6604_storage)": { - "encoding": "mapping", - "key": "t_address", - "label": "mapping(address => struct ChainlinkOracle.TokenConfig)", - "numberOfBytes": "32", - "value": "t_struct(TokenConfig)6604_storage" - }, - "t_mapping(t_address,t_uint256)": { - "encoding": "mapping", - "key": "t_address", - "label": "mapping(address => uint256)", - "numberOfBytes": "32", - "value": "t_uint256" - }, - "t_struct(TokenConfig)6604_storage": { - "encoding": "inplace", - "label": "struct ChainlinkOracle.TokenConfig", - "members": [ - { - "astId": 6597, - "contract": "contracts/oracles/ChainlinkOracle.sol:ChainlinkOracle", - "label": "asset", - "offset": 0, - "slot": "0", - "type": "t_address" - }, - { - "astId": 6600, - "contract": "contracts/oracles/ChainlinkOracle.sol:ChainlinkOracle", - "label": "feed", - "offset": 0, - "slot": "1", - "type": "t_address" - }, - { - "astId": 6603, - "contract": "contracts/oracles/ChainlinkOracle.sol:ChainlinkOracle", - "label": "maxStalePeriod", - "offset": 0, - "slot": "2", - "type": "t_uint256" - } - ], - "numberOfBytes": "96" - }, - "t_uint256": { - "encoding": "inplace", - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "encoding": "inplace", - "label": "uint8", - "numberOfBytes": "1" - } - } - } -} diff --git a/deployments/berachainbepolia/RedStoneOracle_Proxy.json b/deployments/berachainbepolia/RedStoneOracle_Proxy.json deleted file mode 100644 index acedd97f..00000000 --- a/deployments/berachainbepolia/RedStoneOracle_Proxy.json +++ /dev/null @@ -1,262 +0,0 @@ -{ - "address": "0xedc00668FC314fcc85a574c8DBa0BB205810F247", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "admin_", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "stateMutability": "payable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "beacon", - "type": "address" - } - ], - "name": "BeaconUpgraded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "stateMutability": "payable", - "type": "fallback" - }, - { - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "admin_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "implementation_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "stateMutability": "payable", - "type": "receive" - } - ], - "transactionHash": "0x97506f5539c0e66f6faafd5374084fcfe12c931acf5147a5d575a3f9b1a84a7d", - "receipt": { - "to": null, - "from": "0x18BDb05DD1A95677f4381cfb4db52D342dF5C00d", - "contractAddress": "0xedc00668FC314fcc85a574c8DBa0BB205810F247", - "transactionIndex": 1, - "gasUsed": "589258", - "logsBloom": "0x00000000000000000000000000000000400000000000000000804000000000000000000000008000000000000000000000000000000000000000000000008040000000000000000000000000000002000001000000000000000000000100000000000000020000000000020000000800000000800000000000000000000000400000000000000000000000000000000000000000000080000000000000800000000000000008000000000000000400000000000000820000000000000000000000000020000000000000000000040000000000000400000000000000000020000000000000000000000000000000000002000800000000000000000000001000", - "blockHash": "0x7c6cc012a0b972f4e4f5573641229745794207731b682ed827a54bf441b766d4", - "transactionHash": "0x97506f5539c0e66f6faafd5374084fcfe12c931acf5147a5d575a3f9b1a84a7d", - "logs": [ - { - "transactionIndex": 1, - "blockNumber": 2923680, - "transactionHash": "0x97506f5539c0e66f6faafd5374084fcfe12c931acf5147a5d575a3f9b1a84a7d", - "address": "0xedc00668FC314fcc85a574c8DBa0BB205810F247", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x00000000000000000000000033baaa71fdb915275908c80a383874096c5ecdea" - ], - "data": "0x", - "logIndex": 40, - "blockHash": "0x7c6cc012a0b972f4e4f5573641229745794207731b682ed827a54bf441b766d4" - }, - { - "transactionIndex": 1, - "blockNumber": 2923680, - "transactionHash": "0x97506f5539c0e66f6faafd5374084fcfe12c931acf5147a5d575a3f9b1a84a7d", - "address": "0xedc00668FC314fcc85a574c8DBa0BB205810F247", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x00000000000000000000000018bdb05dd1a95677f4381cfb4db52d342df5c00d" - ], - "data": "0x", - "logIndex": 41, - "blockHash": "0x7c6cc012a0b972f4e4f5573641229745794207731b682ed827a54bf441b766d4" - }, - { - "transactionIndex": 1, - "blockNumber": 2923680, - "transactionHash": "0x97506f5539c0e66f6faafd5374084fcfe12c931acf5147a5d575a3f9b1a84a7d", - "address": "0xedc00668FC314fcc85a574c8DBa0BB205810F247", - "topics": ["0x66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa0"], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000243313c1cc198ff80756ed2ef14d9dcd94ee762b", - "logIndex": 42, - "blockHash": "0x7c6cc012a0b972f4e4f5573641229745794207731b682ed827a54bf441b766d4" - }, - { - "transactionIndex": 1, - "blockNumber": 2923680, - "transactionHash": "0x97506f5539c0e66f6faafd5374084fcfe12c931acf5147a5d575a3f9b1a84a7d", - "address": "0xedc00668FC314fcc85a574c8DBa0BB205810F247", - "topics": ["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "logIndex": 43, - "blockHash": "0x7c6cc012a0b972f4e4f5573641229745794207731b682ed827a54bf441b766d4" - }, - { - "transactionIndex": 1, - "blockNumber": 2923680, - "transactionHash": "0x97506f5539c0e66f6faafd5374084fcfe12c931acf5147a5d575a3f9b1a84a7d", - "address": "0xedc00668FC314fcc85a574c8DBa0BB205810F247", - "topics": ["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"], - "data": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009f0cf4ed50ed01994900ce9ee1ae85bfecd5c66", - "logIndex": 44, - "blockHash": "0x7c6cc012a0b972f4e4f5573641229745794207731b682ed827a54bf441b766d4" - } - ], - "blockNumber": 2923680, - "cumulativeGasUsed": "1741557", - "status": 1, - "byzantium": true - }, - "args": [ - "0x33baAA71Fdb915275908c80A383874096c5ecdEa", - "0x09f0Cf4eD50ed01994900CE9ee1ae85BFECd5c66", - "0xc4d66de8000000000000000000000000243313c1cc198ff80756ed2ef14d9dcd94ee762b" - ], - "numDeployments": 1, - "solcInputHash": "9703a470efb9e8d7aa23c7bd832fbb1c", - "metadata": "{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_logic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"implementation_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \\\"admin cannot fallback to proxy target\\\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\",\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is upgraded.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"admin()\":{\"details\":\"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\"},\"constructor\":{\"details\":\"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\"},\"implementation()\":{\"details\":\"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\"},\"upgradeTo(address)\":{\"details\":\"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\"},\"upgradeToAndCall(address,bytes)\":{\"details\":\"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"hardhat-deploy/solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol\":\"OptimizedTransparentUpgradeableProxy\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"hardhat-deploy/solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x93b4e21c931252739a1ec13ea31d3d35a5c068be3163ccab83e4d70c40355f03\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializating the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256(\\\"eip1967.proxy.implementation\\\")) - 1));\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n\",\"keccak256\":\"0x6309f9f39dc6f4f45a24f296543867aa358e32946cd6b2874627a996d606b3a0\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967Upgrade {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view virtual returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Emitted when the beacon is upgraded.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(Address.isContract(IBeacon(newBeacon).implementation()), \\\"ERC1967: beacon implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(\\n address newBeacon,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x17668652127feebed0ce8d9431ef95ccc8c4292f03e3b8cf06c6ca16af396633\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internall call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overriden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xd5d1fd16e9faff7fcb3a52e02a8d49156f42a38a03f07b5f1810c21c2149a8ab\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n }\\n}\\n\",\"keccak256\":\"0x3777e696b62134e6177440dbe6e6601c0c156a443f57167194b67e75527439de\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/StorageSlot.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xfe1b7a9aa2a530a9e705b220e26cd584e2fbdc9602a3a1066032b12816b46aca\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/transparent/TransparentUpgradeableProxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../openzeppelin/proxy/ERC1967/ERC1967Proxy.sol\\\";\\n\\n/**\\n * @dev This contract implements a proxy that is upgradeable by an admin.\\n *\\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\\n * clashing], which can potentially be used in an attack, this contract uses the\\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\\n * things that go hand in hand:\\n *\\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\\n * that call matches one of the admin functions exposed by the proxy itself.\\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\\n * \\\"admin cannot fallback to proxy target\\\".\\n *\\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\\n * the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due\\n * to sudden errors when trying to call a function from the proxy implementation.\\n *\\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\\n */\\ncontract OptimizedTransparentUpgradeableProxy is ERC1967Proxy {\\n address internal immutable _ADMIN;\\n\\n /**\\n * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\\n * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\\n */\\n constructor(\\n address _logic,\\n address admin_,\\n bytes memory _data\\n ) payable ERC1967Proxy(_logic, _data) {\\n assert(_ADMIN_SLOT == bytes32(uint256(keccak256(\\\"eip1967.proxy.admin\\\")) - 1));\\n _ADMIN = admin_;\\n\\n // still store it to work with EIP-1967\\n bytes32 slot = _ADMIN_SLOT;\\n // solhint-disable-next-line no-inline-assembly\\n assembly {\\n sstore(slot, admin_)\\n }\\n emit AdminChanged(address(0), admin_);\\n }\\n\\n /**\\n * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\\n */\\n modifier ifAdmin() {\\n if (msg.sender == _getAdmin()) {\\n _;\\n } else {\\n _fallback();\\n }\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n */\\n function admin() external ifAdmin returns (address admin_) {\\n admin_ = _getAdmin();\\n }\\n\\n /**\\n * @dev Returns the current implementation.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\\n */\\n function implementation() external ifAdmin returns (address implementation_) {\\n implementation_ = _implementation();\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\\n */\\n function upgradeTo(address newImplementation) external ifAdmin {\\n _upgradeToAndCall(newImplementation, bytes(\\\"\\\"), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\\n * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\\n * proxied contract.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\\n */\\n function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {\\n _upgradeToAndCall(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _admin() internal view virtual returns (address) {\\n return _getAdmin();\\n }\\n\\n /**\\n * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.\\n */\\n function _beforeFallback() internal virtual override {\\n require(msg.sender != _getAdmin(), \\\"TransparentUpgradeableProxy: admin cannot fallback to proxy target\\\");\\n super._beforeFallback();\\n }\\n\\n function _getAdmin() internal view virtual override returns (address) {\\n return _ADMIN;\\n }\\n}\\n\",\"keccak256\":\"0xa30117644e27fa5b49e162aae2f62b36c1aca02f801b8c594d46e2024963a534\",\"license\":\"MIT\"}},\"version\":1}", - "bytecode": "0x60a0604052604051610c8f380380610c8f8339810160408190526100229161039f565b828161004f60017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd61046a565b5f80516020610c488339815191521461006a5761006a610489565b61007582825f610123565b506100a3905060017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610461046a565b5f80516020610c28833981519152146100be576100be610489565b6001600160a01b03821660808190525f80516020610c28833981519152838155604080515f8152602081019390935290917f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a1505050506104e8565b61012c8361014e565b5f825111806101385750805b1561014957610147838361018d565b505b505050565b610157816101bb565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606101b28383604051806060016040528060278152602001610c686027913961025b565b90505b92915050565b6001600160a01b0381163b61022d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b5f80516020610c4883398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b60606001600160a01b0384163b6102c35760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610224565b5f80856001600160a01b0316856040516102dd919061049d565b5f60405180830381855af49150503d805f8114610315576040519150601f19603f3d011682016040523d82523d5f602084013e61031a565b606091505b50909250905061032b828286610337565b925050505b9392505050565b60608315610346575081610330565b8251156103565782518084602001fd5b8160405162461bcd60e51b815260040161022491906104b3565b80516001600160a01b0381168114610386575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f805f606084860312156103b1575f80fd5b6103ba84610370565b92506103c860208501610370565b60408501519092506001600160401b03808211156103e4575f80fd5b818601915086601f8301126103f7575f80fd5b8151818111156104095761040961038b565b604051601f8201601f19908116603f011681019083821181831017156104315761043161038b565b81604052828152896020848701011115610449575f80fd5b8260208601602083015e5f6020848301015280955050505050509250925092565b818103818111156101b557634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52600160045260245ffd5b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6080516107066105225f395f818160eb0152818161013f015281816101bf0152818161020801528181610239015261025d01526107065ff3fe608060405260043610610042575f3560e01c80633659cfe6146100595780634f1ef286146100785780635c60da1b1461008b578063f851a440146100bb57610051565b366100515761004f6100cf565b005b61004f6100cf565b348015610064575f80fd5b5061004f6100733660046105c9565b6100e9565b61004f6100863660046105e2565b61013d565b348015610096575f80fd5b5061009f6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c6575f80fd5b5061009f610205565b6100d761025b565b6100e76100e2610309565b61033b565b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610135576101328160405180602001604052805f8152505f610359565b50565b6101326100cf565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101b4576101af8383838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525060019250610359915050565b505050565b6101af6100cf565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101fa576101f5610309565b905090565b6102026100cf565b90565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101fa57507f000000000000000000000000000000000000000000000000000000000000000090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036100e75760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b5f6101f57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b365f80375f80365f845af43d5f803e808015610355573d5ff35b3d5ffd5b61036283610383565b5f8251118061036e5750805b156101af5761037d83836103c2565b50505050565b61038c816103ee565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103e783836040518060600160405280602781526020016106aa6027913961049c565b9392505050565b6001600160a01b0381163b61045b5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610300565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60606001600160a01b0384163b6105045760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610300565b5f80856001600160a01b03168560405161051e919061065e565b5f60405180830381855af49150503d805f8114610556576040519150601f19603f3d011682016040523d82523d5f602084013e61055b565b606091505b509150915061056b828286610575565b9695505050505050565b606083156105845750816103e7565b8251156105945782518084602001fd5b8160405162461bcd60e51b81526004016103009190610674565b80356001600160a01b03811681146105c4575f80fd5b919050565b5f602082840312156105d9575f80fd5b6103e7826105ae565b5f805f604084860312156105f4575f80fd5b6105fd846105ae565b9250602084013567ffffffffffffffff80821115610619575f80fd5b818601915086601f83011261062c575f80fd5b81358181111561063a575f80fd5b87602082850101111561064b575f80fd5b6020830194508093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d447ec2a4b47962d9e959ca0ec6571d77747999259501e773b66fdcaef0e50bf64736f6c63430008190033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564", - "deployedBytecode": "0x608060405260043610610042575f3560e01c80633659cfe6146100595780634f1ef286146100785780635c60da1b1461008b578063f851a440146100bb57610051565b366100515761004f6100cf565b005b61004f6100cf565b348015610064575f80fd5b5061004f6100733660046105c9565b6100e9565b61004f6100863660046105e2565b61013d565b348015610096575f80fd5b5061009f6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c6575f80fd5b5061009f610205565b6100d761025b565b6100e76100e2610309565b61033b565b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610135576101328160405180602001604052805f8152505f610359565b50565b6101326100cf565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101b4576101af8383838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525060019250610359915050565b505050565b6101af6100cf565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101fa576101f5610309565b905090565b6102026100cf565b90565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101fa57507f000000000000000000000000000000000000000000000000000000000000000090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036100e75760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b5f6101f57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b365f80375f80365f845af43d5f803e808015610355573d5ff35b3d5ffd5b61036283610383565b5f8251118061036e5750805b156101af5761037d83836103c2565b50505050565b61038c816103ee565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103e783836040518060600160405280602781526020016106aa6027913961049c565b9392505050565b6001600160a01b0381163b61045b5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610300565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60606001600160a01b0384163b6105045760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610300565b5f80856001600160a01b03168560405161051e919061065e565b5f60405180830381855af49150503d805f8114610556576040519150601f19603f3d011682016040523d82523d5f602084013e61055b565b606091505b509150915061056b828286610575565b9695505050505050565b606083156105845750816103e7565b8251156105945782518084602001fd5b8160405162461bcd60e51b81526004016103009190610674565b80356001600160a01b03811681146105c4575f80fd5b919050565b5f602082840312156105d9575f80fd5b6103e7826105ae565b5f805f604084860312156105f4575f80fd5b6105fd846105ae565b9250602084013567ffffffffffffffff80821115610619575f80fd5b818601915086601f83011261062c575f80fd5b81358181111561063a575f80fd5b87602082850101111561064b575f80fd5b6020830194508093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d447ec2a4b47962d9e959ca0ec6571d77747999259501e773b66fdcaef0e50bf64736f6c63430008190033", - "devdoc": { - "details": "This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \"admin cannot fallback to proxy target\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.", - "events": { - "AdminChanged(address,address)": { - "details": "Emitted when the admin account has changed." - }, - "BeaconUpgraded(address)": { - "details": "Emitted when the beacon is upgraded." - }, - "Upgraded(address)": { - "details": "Emitted when the implementation is upgraded." - } - }, - "kind": "dev", - "methods": { - "admin()": { - "details": "Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`" - }, - "constructor": { - "details": "Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}." - }, - "implementation()": { - "details": "Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`" - }, - "upgradeTo(address)": { - "details": "Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}." - }, - "upgradeToAndCall(address,bytes)": { - "details": "Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}." - } - }, - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": {}, - "version": 1 - }, - "storageLayout": { - "storage": [], - "types": null - } -} diff --git a/deployments/berachainbepolia/ResilientOracle.json b/deployments/berachainbepolia/ResilientOracle.json deleted file mode 100644 index de3ef185..00000000 --- a/deployments/berachainbepolia/ResilientOracle.json +++ /dev/null @@ -1,884 +0,0 @@ -{ - "address": "0x150B667d42FB80409f162aB84065f0c8E9B3A7a0", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "beacon", - "type": "address" - } - ], - "name": "BeaconUpgraded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "stateMutability": "payable", - "type": "fallback" - }, - { - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "admin_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "implementation_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "stateMutability": "payable", - "type": "receive" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "internalType": "address", - "name": "calledContract", - "type": "address" - }, - { - "internalType": "string", - "name": "methodSignature", - "type": "string" - } - ], - "name": "Unauthorized", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "version", - "type": "uint8" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "oldAccessControlManager", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAccessControlManager", - "type": "address" - } - ], - "name": "NewAccessControlManager", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "role", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "bool", - "name": "enable", - "type": "bool" - } - ], - "name": "OracleEnabled", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "oracle", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "role", - "type": "uint256" - } - ], - "name": "OracleSet", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferStarted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "Paused", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "mainOracle", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "pivotOracle", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "fallbackOracle", - "type": "address" - } - ], - "name": "TokenConfigAdded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "Unpaused", - "type": "event" - }, - { - "inputs": [], - "name": "INVALID_PRICE", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "NATIVE_TOKEN_ADDR", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "acceptOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "accessControlManager", - "outputs": [ - { - "internalType": "contract IAccessControlManagerV8", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "boundValidator", - "outputs": [ - { - "internalType": "contract BoundValidatorInterface", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "enum ResilientOracle.OracleRole", - "name": "role", - "type": "uint8" - }, - { - "internalType": "bool", - "name": "enable", - "type": "bool" - } - ], - "name": "enableOracle", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "enum ResilientOracle.OracleRole", - "name": "role", - "type": "uint8" - } - ], - "name": "getOracle", - "outputs": [ - { - "internalType": "address", - "name": "oracle", - "type": "address" - }, - { - "internalType": "bool", - "name": "enabled", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - } - ], - "name": "getPrice", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - } - ], - "name": "getTokenConfig", - "outputs": [ - { - "components": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "address[3]", - "name": "oracles", - "type": "address[3]" - }, - { - "internalType": "bool[3]", - "name": "enableFlagsForOracles", - "type": "bool[3]" - } - ], - "internalType": "struct ResilientOracle.TokenConfig", - "name": "", - "type": "tuple" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "vToken", - "type": "address" - } - ], - "name": "getUnderlyingPrice", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "accessControlManager_", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "nativeMarket", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "pause", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "paused", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "accessControlManager_", - "type": "address" - } - ], - "name": "setAccessControlManager", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "address", - "name": "oracle", - "type": "address" - }, - { - "internalType": "enum ResilientOracle.OracleRole", - "name": "role", - "type": "uint8" - } - ], - "name": "setOracle", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "address[3]", - "name": "oracles", - "type": "address[3]" - }, - { - "internalType": "bool[3]", - "name": "enableFlagsForOracles", - "type": "bool[3]" - } - ], - "internalType": "struct ResilientOracle.TokenConfig", - "name": "tokenConfig", - "type": "tuple" - } - ], - "name": "setTokenConfig", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "address[3]", - "name": "oracles", - "type": "address[3]" - }, - { - "internalType": "bool[3]", - "name": "enableFlagsForOracles", - "type": "bool[3]" - } - ], - "internalType": "struct ResilientOracle.TokenConfig[]", - "name": "tokenConfigs_", - "type": "tuple[]" - } - ], - "name": "setTokenConfigs", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "unpause", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - } - ], - "name": "updateAssetPrice", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "vToken", - "type": "address" - } - ], - "name": "updatePrice", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "vai", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "admin_", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "stateMutability": "payable", - "type": "constructor" - } - ], - "transactionHash": "0x5285573fbfcb66dd1390866443fdffcf44f29b7361732807abd2a4e7e02601a4", - "receipt": { - "to": null, - "from": "0x18BDb05DD1A95677f4381cfb4db52D342dF5C00d", - "contractAddress": "0x150B667d42FB80409f162aB84065f0c8E9B3A7a0", - "transactionIndex": 0, - "gasUsed": "591851", - "logsBloom": "0x00000004000000000000000000000000400000000000000000800400000000000000000000000000000000001020000002000000000000000000000000008040000000000100000000000000000002000001000000000000000000000100000000000000020000000000020000000800000000800000000000000000000000400000000000000000000000000000000000000000000080000000000000800000000000000000000000000000000400000000000000800000000000000000000000000020000000000000000000040000000000000400000000000000000020000000000000000000000000000000000000000800000000000000000000000000", - "blockHash": "0xd029a4b3cb3e41d956e8febc79205550991cec35c228b6b78efa305998fa00c9", - "transactionHash": "0x5285573fbfcb66dd1390866443fdffcf44f29b7361732807abd2a4e7e02601a4", - "logs": [ - { - "transactionIndex": 0, - "blockNumber": 2923593, - "transactionHash": "0x5285573fbfcb66dd1390866443fdffcf44f29b7361732807abd2a4e7e02601a4", - "address": "0x150B667d42FB80409f162aB84065f0c8E9B3A7a0", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x000000000000000000000000ffcb974c4e2c9ee9107d966530d485bdbd98bbaa" - ], - "data": "0x", - "logIndex": 0, - "blockHash": "0xd029a4b3cb3e41d956e8febc79205550991cec35c228b6b78efa305998fa00c9" - }, - { - "transactionIndex": 0, - "blockNumber": 2923593, - "transactionHash": "0x5285573fbfcb66dd1390866443fdffcf44f29b7361732807abd2a4e7e02601a4", - "address": "0x150B667d42FB80409f162aB84065f0c8E9B3A7a0", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x00000000000000000000000018bdb05dd1a95677f4381cfb4db52d342df5c00d" - ], - "data": "0x", - "logIndex": 1, - "blockHash": "0xd029a4b3cb3e41d956e8febc79205550991cec35c228b6b78efa305998fa00c9" - }, - { - "transactionIndex": 0, - "blockNumber": 2923593, - "transactionHash": "0x5285573fbfcb66dd1390866443fdffcf44f29b7361732807abd2a4e7e02601a4", - "address": "0x150B667d42FB80409f162aB84065f0c8E9B3A7a0", - "topics": ["0x66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa0"], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000243313c1cc198ff80756ed2ef14d9dcd94ee762b", - "logIndex": 2, - "blockHash": "0xd029a4b3cb3e41d956e8febc79205550991cec35c228b6b78efa305998fa00c9" - }, - { - "transactionIndex": 0, - "blockNumber": 2923593, - "transactionHash": "0x5285573fbfcb66dd1390866443fdffcf44f29b7361732807abd2a4e7e02601a4", - "address": "0x150B667d42FB80409f162aB84065f0c8E9B3A7a0", - "topics": ["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "logIndex": 3, - "blockHash": "0xd029a4b3cb3e41d956e8febc79205550991cec35c228b6b78efa305998fa00c9" - }, - { - "transactionIndex": 0, - "blockNumber": 2923593, - "transactionHash": "0x5285573fbfcb66dd1390866443fdffcf44f29b7361732807abd2a4e7e02601a4", - "address": "0x150B667d42FB80409f162aB84065f0c8E9B3A7a0", - "topics": ["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"], - "data": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009f0cf4ed50ed01994900ce9ee1ae85bfecd5c66", - "logIndex": 4, - "blockHash": "0xd029a4b3cb3e41d956e8febc79205550991cec35c228b6b78efa305998fa00c9" - } - ], - "blockNumber": 2923593, - "cumulativeGasUsed": "591851", - "status": 1, - "byzantium": true - }, - "args": [ - "0xffCb974c4E2c9EE9107d966530d485bDBd98bBAA", - "0x09f0Cf4eD50ed01994900CE9ee1ae85BFECd5c66", - "0xc4d66de8000000000000000000000000243313c1cc198ff80756ed2ef14d9dcd94ee762b" - ], - "numDeployments": 1, - "solcInputHash": "9703a470efb9e8d7aa23c7bd832fbb1c", - "metadata": "{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_logic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"implementation_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \\\"admin cannot fallback to proxy target\\\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\",\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is upgraded.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"admin()\":{\"details\":\"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\"},\"constructor\":{\"details\":\"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\"},\"implementation()\":{\"details\":\"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\"},\"upgradeTo(address)\":{\"details\":\"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\"},\"upgradeToAndCall(address,bytes)\":{\"details\":\"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"hardhat-deploy/solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol\":\"OptimizedTransparentUpgradeableProxy\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"hardhat-deploy/solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x93b4e21c931252739a1ec13ea31d3d35a5c068be3163ccab83e4d70c40355f03\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializating the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256(\\\"eip1967.proxy.implementation\\\")) - 1));\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n\",\"keccak256\":\"0x6309f9f39dc6f4f45a24f296543867aa358e32946cd6b2874627a996d606b3a0\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967Upgrade {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view virtual returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Emitted when the beacon is upgraded.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(Address.isContract(IBeacon(newBeacon).implementation()), \\\"ERC1967: beacon implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(\\n address newBeacon,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x17668652127feebed0ce8d9431ef95ccc8c4292f03e3b8cf06c6ca16af396633\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internall call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overriden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xd5d1fd16e9faff7fcb3a52e02a8d49156f42a38a03f07b5f1810c21c2149a8ab\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n }\\n}\\n\",\"keccak256\":\"0x3777e696b62134e6177440dbe6e6601c0c156a443f57167194b67e75527439de\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/StorageSlot.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xfe1b7a9aa2a530a9e705b220e26cd584e2fbdc9602a3a1066032b12816b46aca\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/transparent/TransparentUpgradeableProxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../openzeppelin/proxy/ERC1967/ERC1967Proxy.sol\\\";\\n\\n/**\\n * @dev This contract implements a proxy that is upgradeable by an admin.\\n *\\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\\n * clashing], which can potentially be used in an attack, this contract uses the\\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\\n * things that go hand in hand:\\n *\\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\\n * that call matches one of the admin functions exposed by the proxy itself.\\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\\n * \\\"admin cannot fallback to proxy target\\\".\\n *\\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\\n * the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due\\n * to sudden errors when trying to call a function from the proxy implementation.\\n *\\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\\n */\\ncontract OptimizedTransparentUpgradeableProxy is ERC1967Proxy {\\n address internal immutable _ADMIN;\\n\\n /**\\n * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\\n * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\\n */\\n constructor(\\n address _logic,\\n address admin_,\\n bytes memory _data\\n ) payable ERC1967Proxy(_logic, _data) {\\n assert(_ADMIN_SLOT == bytes32(uint256(keccak256(\\\"eip1967.proxy.admin\\\")) - 1));\\n _ADMIN = admin_;\\n\\n // still store it to work with EIP-1967\\n bytes32 slot = _ADMIN_SLOT;\\n // solhint-disable-next-line no-inline-assembly\\n assembly {\\n sstore(slot, admin_)\\n }\\n emit AdminChanged(address(0), admin_);\\n }\\n\\n /**\\n * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\\n */\\n modifier ifAdmin() {\\n if (msg.sender == _getAdmin()) {\\n _;\\n } else {\\n _fallback();\\n }\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n */\\n function admin() external ifAdmin returns (address admin_) {\\n admin_ = _getAdmin();\\n }\\n\\n /**\\n * @dev Returns the current implementation.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\\n */\\n function implementation() external ifAdmin returns (address implementation_) {\\n implementation_ = _implementation();\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\\n */\\n function upgradeTo(address newImplementation) external ifAdmin {\\n _upgradeToAndCall(newImplementation, bytes(\\\"\\\"), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\\n * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\\n * proxied contract.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\\n */\\n function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {\\n _upgradeToAndCall(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _admin() internal view virtual returns (address) {\\n return _getAdmin();\\n }\\n\\n /**\\n * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.\\n */\\n function _beforeFallback() internal virtual override {\\n require(msg.sender != _getAdmin(), \\\"TransparentUpgradeableProxy: admin cannot fallback to proxy target\\\");\\n super._beforeFallback();\\n }\\n\\n function _getAdmin() internal view virtual override returns (address) {\\n return _ADMIN;\\n }\\n}\\n\",\"keccak256\":\"0xa30117644e27fa5b49e162aae2f62b36c1aca02f801b8c594d46e2024963a534\",\"license\":\"MIT\"}},\"version\":1}", - "bytecode": "0x60a0604052604051610c8f380380610c8f8339810160408190526100229161039f565b828161004f60017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd61046a565b5f80516020610c488339815191521461006a5761006a610489565b61007582825f610123565b506100a3905060017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610461046a565b5f80516020610c28833981519152146100be576100be610489565b6001600160a01b03821660808190525f80516020610c28833981519152838155604080515f8152602081019390935290917f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a1505050506104e8565b61012c8361014e565b5f825111806101385750805b1561014957610147838361018d565b505b505050565b610157816101bb565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606101b28383604051806060016040528060278152602001610c686027913961025b565b90505b92915050565b6001600160a01b0381163b61022d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b5f80516020610c4883398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b60606001600160a01b0384163b6102c35760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610224565b5f80856001600160a01b0316856040516102dd919061049d565b5f60405180830381855af49150503d805f8114610315576040519150601f19603f3d011682016040523d82523d5f602084013e61031a565b606091505b50909250905061032b828286610337565b925050505b9392505050565b60608315610346575081610330565b8251156103565782518084602001fd5b8160405162461bcd60e51b815260040161022491906104b3565b80516001600160a01b0381168114610386575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f805f606084860312156103b1575f80fd5b6103ba84610370565b92506103c860208501610370565b60408501519092506001600160401b03808211156103e4575f80fd5b818601915086601f8301126103f7575f80fd5b8151818111156104095761040961038b565b604051601f8201601f19908116603f011681019083821181831017156104315761043161038b565b81604052828152896020848701011115610449575f80fd5b8260208601602083015e5f6020848301015280955050505050509250925092565b818103818111156101b557634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52600160045260245ffd5b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6080516107066105225f395f818160eb0152818161013f015281816101bf0152818161020801528181610239015261025d01526107065ff3fe608060405260043610610042575f3560e01c80633659cfe6146100595780634f1ef286146100785780635c60da1b1461008b578063f851a440146100bb57610051565b366100515761004f6100cf565b005b61004f6100cf565b348015610064575f80fd5b5061004f6100733660046105c9565b6100e9565b61004f6100863660046105e2565b61013d565b348015610096575f80fd5b5061009f6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c6575f80fd5b5061009f610205565b6100d761025b565b6100e76100e2610309565b61033b565b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610135576101328160405180602001604052805f8152505f610359565b50565b6101326100cf565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101b4576101af8383838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525060019250610359915050565b505050565b6101af6100cf565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101fa576101f5610309565b905090565b6102026100cf565b90565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101fa57507f000000000000000000000000000000000000000000000000000000000000000090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036100e75760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b5f6101f57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b365f80375f80365f845af43d5f803e808015610355573d5ff35b3d5ffd5b61036283610383565b5f8251118061036e5750805b156101af5761037d83836103c2565b50505050565b61038c816103ee565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103e783836040518060600160405280602781526020016106aa6027913961049c565b9392505050565b6001600160a01b0381163b61045b5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610300565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60606001600160a01b0384163b6105045760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610300565b5f80856001600160a01b03168560405161051e919061065e565b5f60405180830381855af49150503d805f8114610556576040519150601f19603f3d011682016040523d82523d5f602084013e61055b565b606091505b509150915061056b828286610575565b9695505050505050565b606083156105845750816103e7565b8251156105945782518084602001fd5b8160405162461bcd60e51b81526004016103009190610674565b80356001600160a01b03811681146105c4575f80fd5b919050565b5f602082840312156105d9575f80fd5b6103e7826105ae565b5f805f604084860312156105f4575f80fd5b6105fd846105ae565b9250602084013567ffffffffffffffff80821115610619575f80fd5b818601915086601f83011261062c575f80fd5b81358181111561063a575f80fd5b87602082850101111561064b575f80fd5b6020830194508093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d447ec2a4b47962d9e959ca0ec6571d77747999259501e773b66fdcaef0e50bf64736f6c63430008190033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564", - "deployedBytecode": "0x608060405260043610610042575f3560e01c80633659cfe6146100595780634f1ef286146100785780635c60da1b1461008b578063f851a440146100bb57610051565b366100515761004f6100cf565b005b61004f6100cf565b348015610064575f80fd5b5061004f6100733660046105c9565b6100e9565b61004f6100863660046105e2565b61013d565b348015610096575f80fd5b5061009f6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c6575f80fd5b5061009f610205565b6100d761025b565b6100e76100e2610309565b61033b565b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610135576101328160405180602001604052805f8152505f610359565b50565b6101326100cf565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101b4576101af8383838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525060019250610359915050565b505050565b6101af6100cf565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101fa576101f5610309565b905090565b6102026100cf565b90565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101fa57507f000000000000000000000000000000000000000000000000000000000000000090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036100e75760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b5f6101f57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b365f80375f80365f845af43d5f803e808015610355573d5ff35b3d5ffd5b61036283610383565b5f8251118061036e5750805b156101af5761037d83836103c2565b50505050565b61038c816103ee565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103e783836040518060600160405280602781526020016106aa6027913961049c565b9392505050565b6001600160a01b0381163b61045b5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610300565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60606001600160a01b0384163b6105045760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610300565b5f80856001600160a01b03168560405161051e919061065e565b5f60405180830381855af49150503d805f8114610556576040519150601f19603f3d011682016040523d82523d5f602084013e61055b565b606091505b509150915061056b828286610575565b9695505050505050565b606083156105845750816103e7565b8251156105945782518084602001fd5b8160405162461bcd60e51b81526004016103009190610674565b80356001600160a01b03811681146105c4575f80fd5b919050565b5f602082840312156105d9575f80fd5b6103e7826105ae565b5f805f604084860312156105f4575f80fd5b6105fd846105ae565b9250602084013567ffffffffffffffff80821115610619575f80fd5b818601915086601f83011261062c575f80fd5b81358181111561063a575f80fd5b87602082850101111561064b575f80fd5b6020830194508093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d447ec2a4b47962d9e959ca0ec6571d77747999259501e773b66fdcaef0e50bf64736f6c63430008190033", - "execute": { - "methodName": "initialize", - "args": ["0x243313C1cC198FF80756ed2ef14D9dcd94Ee762b"] - }, - "implementation": "0xffCb974c4E2c9EE9107d966530d485bDBd98bBAA", - "devdoc": { - "details": "This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \"admin cannot fallback to proxy target\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.", - "events": { - "AdminChanged(address,address)": { - "details": "Emitted when the admin account has changed." - }, - "BeaconUpgraded(address)": { - "details": "Emitted when the beacon is upgraded." - }, - "Upgraded(address)": { - "details": "Emitted when the implementation is upgraded." - } - }, - "kind": "dev", - "methods": { - "admin()": { - "details": "Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`" - }, - "constructor": { - "details": "Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}." - }, - "implementation()": { - "details": "Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`" - }, - "upgradeTo(address)": { - "details": "Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}." - }, - "upgradeToAndCall(address,bytes)": { - "details": "Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}." - } - }, - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": {}, - "version": 1 - }, - "storageLayout": { - "storage": [], - "types": null - } -} diff --git a/deployments/berachainbepolia/ResilientOracle_Implementation.json b/deployments/berachainbepolia/ResilientOracle_Implementation.json deleted file mode 100644 index 27cf864d..00000000 --- a/deployments/berachainbepolia/ResilientOracle_Implementation.json +++ /dev/null @@ -1,1113 +0,0 @@ -{ - "address": "0xffCb974c4E2c9EE9107d966530d485bDBd98bBAA", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "nativeMarketAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "vaiAddress", - "type": "address" - }, - { - "internalType": "contract BoundValidatorInterface", - "name": "_boundValidator", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "internalType": "address", - "name": "calledContract", - "type": "address" - }, - { - "internalType": "string", - "name": "methodSignature", - "type": "string" - } - ], - "name": "Unauthorized", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "version", - "type": "uint8" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "oldAccessControlManager", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAccessControlManager", - "type": "address" - } - ], - "name": "NewAccessControlManager", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "role", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "bool", - "name": "enable", - "type": "bool" - } - ], - "name": "OracleEnabled", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "oracle", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "role", - "type": "uint256" - } - ], - "name": "OracleSet", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferStarted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "Paused", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "mainOracle", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "pivotOracle", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "fallbackOracle", - "type": "address" - } - ], - "name": "TokenConfigAdded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "Unpaused", - "type": "event" - }, - { - "inputs": [], - "name": "INVALID_PRICE", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "NATIVE_TOKEN_ADDR", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "acceptOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "accessControlManager", - "outputs": [ - { - "internalType": "contract IAccessControlManagerV8", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "boundValidator", - "outputs": [ - { - "internalType": "contract BoundValidatorInterface", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "enum ResilientOracle.OracleRole", - "name": "role", - "type": "uint8" - }, - { - "internalType": "bool", - "name": "enable", - "type": "bool" - } - ], - "name": "enableOracle", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "enum ResilientOracle.OracleRole", - "name": "role", - "type": "uint8" - } - ], - "name": "getOracle", - "outputs": [ - { - "internalType": "address", - "name": "oracle", - "type": "address" - }, - { - "internalType": "bool", - "name": "enabled", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - } - ], - "name": "getPrice", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - } - ], - "name": "getTokenConfig", - "outputs": [ - { - "components": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "address[3]", - "name": "oracles", - "type": "address[3]" - }, - { - "internalType": "bool[3]", - "name": "enableFlagsForOracles", - "type": "bool[3]" - } - ], - "internalType": "struct ResilientOracle.TokenConfig", - "name": "", - "type": "tuple" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "vToken", - "type": "address" - } - ], - "name": "getUnderlyingPrice", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "accessControlManager_", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "nativeMarket", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "pause", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "paused", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "accessControlManager_", - "type": "address" - } - ], - "name": "setAccessControlManager", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "address", - "name": "oracle", - "type": "address" - }, - { - "internalType": "enum ResilientOracle.OracleRole", - "name": "role", - "type": "uint8" - } - ], - "name": "setOracle", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "address[3]", - "name": "oracles", - "type": "address[3]" - }, - { - "internalType": "bool[3]", - "name": "enableFlagsForOracles", - "type": "bool[3]" - } - ], - "internalType": "struct ResilientOracle.TokenConfig", - "name": "tokenConfig", - "type": "tuple" - } - ], - "name": "setTokenConfig", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "internalType": "address[3]", - "name": "oracles", - "type": "address[3]" - }, - { - "internalType": "bool[3]", - "name": "enableFlagsForOracles", - "type": "bool[3]" - } - ], - "internalType": "struct ResilientOracle.TokenConfig[]", - "name": "tokenConfigs_", - "type": "tuple[]" - } - ], - "name": "setTokenConfigs", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "unpause", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "asset", - "type": "address" - } - ], - "name": "updateAssetPrice", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "vToken", - "type": "address" - } - ], - "name": "updatePrice", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "vai", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "transactionHash": "0x5b94102349d5bd640f171c13df551c42ae92cb6fd55a2761b1badf7052e2d608", - "receipt": { - "to": null, - "from": "0x18BDb05DD1A95677f4381cfb4db52D342dF5C00d", - "contractAddress": "0xffCb974c4E2c9EE9107d966530d485bDBd98bBAA", - "transactionIndex": 1, - "gasUsed": "1874100", - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000010000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x84d317434fd191dacece9280fba0773917db9d6d747ebfd9292ba268fb473bf5", - "transactionHash": "0x5b94102349d5bd640f171c13df551c42ae92cb6fd55a2761b1badf7052e2d608", - "logs": [ - { - "transactionIndex": 1, - "blockNumber": 2923591, - "transactionHash": "0x5b94102349d5bd640f171c13df551c42ae92cb6fd55a2761b1badf7052e2d608", - "address": "0xffCb974c4E2c9EE9107d966530d485bDBd98bBAA", - "topics": ["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"], - "data": "0x00000000000000000000000000000000000000000000000000000000000000ff", - "logIndex": 40, - "blockHash": "0x84d317434fd191dacece9280fba0773917db9d6d747ebfd9292ba268fb473bf5" - } - ], - "blockNumber": 2923591, - "cumulativeGasUsed": "3026339", - "status": 1, - "byzantium": true - }, - "args": [ - "0x0000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000", - "0xd3A635930300ea87548A1C3428Ac5DDfE3FFE66E" - ], - "numDeployments": 1, - "solcInputHash": "9703a470efb9e8d7aa23c7bd832fbb1c", - "metadata": "{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"nativeMarketAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"vaiAddress\",\"type\":\"address\"},{\"internalType\":\"contract BoundValidatorInterface\",\"name\":\"_boundValidator\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"calledContract\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"methodSignature\",\"type\":\"string\"}],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldAccessControlManager\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAccessControlManager\",\"type\":\"address\"}],\"name\":\"NewAccessControlManager\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"role\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"enable\",\"type\":\"bool\"}],\"name\":\"OracleEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"role\",\"type\":\"uint256\"}],\"name\":\"OracleSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"mainOracle\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pivotOracle\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"fallbackOracle\",\"type\":\"address\"}],\"name\":\"TokenConfigAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"INVALID_PRICE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NATIVE_TOKEN_ADDR\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"accessControlManager\",\"outputs\":[{\"internalType\":\"contract IAccessControlManagerV8\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"boundValidator\",\"outputs\":[{\"internalType\":\"contract BoundValidatorInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"enum ResilientOracle.OracleRole\",\"name\":\"role\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"enable\",\"type\":\"bool\"}],\"name\":\"enableOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"enum ResilientOracle.OracleRole\",\"name\":\"role\",\"type\":\"uint8\"}],\"name\":\"getOracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getTokenConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address[3]\",\"name\":\"oracles\",\"type\":\"address[3]\"},{\"internalType\":\"bool[3]\",\"name\":\"enableFlagsForOracles\",\"type\":\"bool[3]\"}],\"internalType\":\"struct ResilientOracle.TokenConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vToken\",\"type\":\"address\"}],\"name\":\"getUnderlyingPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"accessControlManager_\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nativeMarket\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"accessControlManager_\",\"type\":\"address\"}],\"name\":\"setAccessControlManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"},{\"internalType\":\"enum ResilientOracle.OracleRole\",\"name\":\"role\",\"type\":\"uint8\"}],\"name\":\"setOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address[3]\",\"name\":\"oracles\",\"type\":\"address[3]\"},{\"internalType\":\"bool[3]\",\"name\":\"enableFlagsForOracles\",\"type\":\"bool[3]\"}],\"internalType\":\"struct ResilientOracle.TokenConfig\",\"name\":\"tokenConfig\",\"type\":\"tuple\"}],\"name\":\"setTokenConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address[3]\",\"name\":\"oracles\",\"type\":\"address[3]\"},{\"internalType\":\"bool[3]\",\"name\":\"enableFlagsForOracles\",\"type\":\"bool[3]\"}],\"internalType\":\"struct ResilientOracle.TokenConfig[]\",\"name\":\"tokenConfigs_\",\"type\":\"tuple[]\"}],\"name\":\"setTokenConfigs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"updateAssetPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vToken\",\"type\":\"address\"}],\"name\":\"updatePrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vai\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Venus\",\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"}},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"The new owner accepts the ownership transfer.\"},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\",\"details\":\"nativeMarketAddress can be address(0) if on the chain we do not support native market (e.g vETH on ethereum would not be supported, only vWETH)\",\"params\":{\"_boundValidator\":\"Address of the bound validator contract\",\"nativeMarketAddress\":\"The address of a native market (for bsc it would be vBNB address)\",\"vaiAddress\":\"The address of the VAI token (if there is VAI on the deployed chain). Set to address(0) of VAI is not existent.\"}},\"enableOracle(address,uint8,bool)\":{\"custom:access\":\"Only Governance\",\"custom:error\":\"NotNullAddress error is thrown if asset address is nullTokenConfigExistance error is thrown if token config is not set\",\"details\":\"Configuration for the asset **must** already exist and the asset cannot be 0 address\",\"params\":{\"asset\":\"Asset address\",\"enable\":\"Enabled boolean of the oracle\",\"role\":\"Oracle role\"}},\"getOracle(address,uint8)\":{\"params\":{\"asset\":\"asset address\",\"role\":\"Oracle role\"},\"returns\":{\"enabled\":\"Enabled flag of the oracle based on token config\",\"oracle\":\"Oracle address based on role\"}},\"getPrice(address)\":{\"custom:error\":\"Paused error is thrown when resilent oracle is pausedInvalid resilient oracle price error is thrown if fetched prices from oracle is invalid\",\"params\":{\"asset\":\"asset address\"},\"returns\":{\"_0\":\"price USD price in scaled decimal places.\"}},\"getTokenConfig(address)\":{\"details\":\"Gets token config by asset address\",\"params\":{\"asset\":\"asset address\"},\"returns\":{\"_0\":\"tokenConfig Config for the asset\"}},\"getUnderlyingPrice(address)\":{\"custom:error\":\"Paused error is thrown when resilent oracle is pausedInvalid resilient oracle price error is thrown if fetched prices from oracle is invalid\",\"params\":{\"vToken\":\"vToken address\"},\"returns\":{\"_0\":\"price USD price in scaled decimal places.\"}},\"initialize(address)\":{\"params\":{\"accessControlManager_\":\"Address of the access control manager contract\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pause()\":{\"custom:access\":\"Only Governance\"},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"pendingOwner()\":{\"details\":\"Returns the address of the pending owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setAccessControlManager(address)\":{\"custom:access\":\"Only Governance\",\"custom:event\":\"Emits NewAccessControlManager event\",\"details\":\"Admin function to set address of AccessControlManager\",\"params\":{\"accessControlManager_\":\"The new address of the AccessControlManager\"}},\"setOracle(address,address,uint8)\":{\"custom:access\":\"Only Governance\",\"custom:error\":\"Null address error if main-role oracle address is nullNotNullAddress error is thrown if asset address is nullTokenConfigExistance error is thrown if token config is not set\",\"custom:event\":\"Emits OracleSet event with asset address, oracle address and role of the oracle for the asset\",\"details\":\"Supplied asset **must** exist and main oracle may not be null\",\"params\":{\"asset\":\"Asset address\",\"oracle\":\"Oracle address\",\"role\":\"Oracle role\"}},\"setTokenConfig((address,address[3],bool[3]))\":{\"custom:access\":\"Only Governance\",\"custom:error\":\"NotNullAddress is thrown if asset address is nullNotNullAddress is thrown if main-role oracle address for asset is null\",\"custom:event\":\"Emits TokenConfigAdded event when the asset config is set successfully by the authorized account\",\"details\":\"main oracle **must not** be a null address\",\"params\":{\"tokenConfig\":\"Token config struct\"}},\"setTokenConfigs((address,address[3],bool[3])[])\":{\"custom:access\":\"Only Governance\",\"custom:error\":\"Throws a length error if the length of the token configs array is 0\",\"params\":{\"tokenConfigs_\":\"Token config array\"}},\"transferOwnership(address)\":{\"details\":\"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner.\"},\"unpause()\":{\"custom:access\":\"Only Governance\"},\"updateAssetPrice(address)\":{\"details\":\"This function should always be called before calling getPrice\",\"params\":{\"asset\":\"asset address\"}},\"updatePrice(address)\":{\"details\":\"This function should always be called before calling getUnderlyingPrice\",\"params\":{\"vToken\":\"vToken address\"}}},\"stateVariables\":{\"boundValidator\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable\"},\"nativeMarket\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable\"},\"vai\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable\"}},\"title\":\"ResilientOracle\",\"version\":1},\"userdoc\":{\"errors\":{\"Unauthorized(address,address,string)\":[{\"notice\":\"Thrown when the action is prohibited by AccessControlManager\"}]},\"events\":{\"NewAccessControlManager(address,address)\":{\"notice\":\"Emitted when access control manager contract address is changed\"},\"OracleEnabled(address,uint256,bool)\":{\"notice\":\"Event emitted when an oracle is enabled or disabled\"},\"OracleSet(address,address,uint256)\":{\"notice\":\"Event emitted when an oracle is set\"}},\"kind\":\"user\",\"methods\":{\"NATIVE_TOKEN_ADDR()\":{\"notice\":\"Set this as asset address for Native token on each chain.This is the underlying for vBNB (on bsc) and can serve as any underlying asset of a market that supports native tokens\"},\"accessControlManager()\":{\"notice\":\"Returns the address of the access control manager contract\"},\"boundValidator()\":{\"notice\":\"Bound validator contract address\"},\"constructor\":{\"notice\":\"Constructor for the implementation contract. Sets immutable variables.\"},\"enableOracle(address,uint8,bool)\":{\"notice\":\"Enables/ disables oracle for the input asset. Token config for the input asset **must** exist\"},\"getOracle(address,uint8)\":{\"notice\":\"Gets oracle and enabled status by asset address\"},\"getPrice(address)\":{\"notice\":\"Gets price of the asset\"},\"getUnderlyingPrice(address)\":{\"notice\":\"Gets price of the underlying asset for a given vToken. Validation flow: - Check if the oracle is paused globally - Validate price from main oracle against pivot oracle - Validate price from fallback oracle against pivot oracle if the first validation failed - Validate price from main oracle against fallback oracle if the second validation failed In the case that the pivot oracle is not available but main price is available and validation is successful, main oracle price is returned.\"},\"initialize(address)\":{\"notice\":\"Initializes the contract admin and sets the BoundValidator contract address\"},\"nativeMarket()\":{\"notice\":\"Native market address\"},\"pause()\":{\"notice\":\"Pauses oracle\"},\"setAccessControlManager(address)\":{\"notice\":\"Sets the address of AccessControlManager\"},\"setOracle(address,address,uint8)\":{\"notice\":\"Sets oracle for a given asset and role.\"},\"setTokenConfig((address,address[3],bool[3]))\":{\"notice\":\"Sets/resets single token configs.\"},\"setTokenConfigs((address,address[3],bool[3])[])\":{\"notice\":\"Batch sets token configs\"},\"unpause()\":{\"notice\":\"Unpauses oracle\"},\"updateAssetPrice(address)\":{\"notice\":\"Updates the pivot oracle price. Currently using TWAP\"},\"updatePrice(address)\":{\"notice\":\"Updates the TWAP pivot oracle price.\"},\"vai()\":{\"notice\":\"VAI address\"}},\"notice\":\"The Resilient Oracle is the main contract that the protocol uses to fetch prices of assets. DeFi protocols are vulnerable to price oracle failures including oracle manipulation and incorrectly reported prices. If only one oracle is used, this creates a single point of failure and opens a vector for attacking the protocol. The Resilient Oracle uses multiple sources and fallback mechanisms to provide accurate prices and protect the protocol from oracle attacks. Currently it includes integrations with Chainlink, Pyth, Binance Oracle and TWAP (Time-Weighted Average Price) oracles. TWAP uses PancakeSwap as the on-chain price source. For every market (vToken) we configure the main, pivot and fallback oracles. The oracles are configured per vToken's underlying asset address. The main oracle oracle is the most trustworthy price source, the pivot oracle is used as a loose sanity checker and the fallback oracle is used as a backup price source. To validate prices returned from two oracles, we use an upper and lower bound ratio that is set for every market. The upper bound ratio represents the deviation between reported price (the price that\\u2019s being validated) and the anchor price (the price we are validating against) above which the reported price will be invalidated. The lower bound ratio presents the deviation between reported price and anchor price below which the reported price will be invalidated. So for oracle price to be considered valid the below statement should be true: ``` anchorRatio = anchorPrice/reporterPrice isValid = anchorRatio <= upperBoundAnchorRatio && anchorRatio >= lowerBoundAnchorRatio ``` In most cases, Chainlink is used as the main oracle, TWAP or Pyth oracles are used as the pivot oracle depending on which supports the given market and Binance oracle is used as the fallback oracle. For some markets we may use Pyth or TWAP as the main oracle if the token price is not supported by Chainlink or Binance oracles. For a fetched price to be valid it must be positive and not stagnant. If the price is invalid then we consider the oracle to be stagnant and treat it like it's disabled.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ResilientOracle.sol\":\"ResilientOracle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable2Step.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./OwnableUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership} and {acceptOwnership}.\\n *\\n * This module is used through inheritance. It will make available all functions\\n * from parent (Ownable).\\n */\\nabstract contract Ownable2StepUpgradeable is Initializable, OwnableUpgradeable {\\n address private _pendingOwner;\\n\\n event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner);\\n\\n function __Ownable2Step_init() internal onlyInitializing {\\n __Ownable_init_unchained();\\n }\\n\\n function __Ownable2Step_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Returns the address of the pending owner.\\n */\\n function pendingOwner() public view virtual returns (address) {\\n return _pendingOwner;\\n }\\n\\n /**\\n * @dev Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one.\\n * Can only be called by the current owner.\\n */\\n function transferOwnership(address newOwner) public virtual override onlyOwner {\\n _pendingOwner = newOwner;\\n emit OwnershipTransferStarted(owner(), newOwner);\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`) and deletes any pending owner.\\n * Internal function without access restriction.\\n */\\n function _transferOwnership(address newOwner) internal virtual override {\\n delete _pendingOwner;\\n super._transferOwnership(newOwner);\\n }\\n\\n /**\\n * @dev The new owner accepts the ownership transfer.\\n */\\n function acceptOwnership() public virtual {\\n address sender = _msgSender();\\n require(pendingOwner() == sender, \\\"Ownable2Step: caller is not the new owner\\\");\\n _transferOwnership(sender);\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x9140dabc466abab21b48b72dbda26736b1183a310d0e677d3719d201df026510\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/ContextUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\\n address private _owner;\\n\\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n /**\\n * @dev Initializes the contract setting the deployer as the initial owner.\\n */\\n function __Ownable_init() internal onlyInitializing {\\n __Ownable_init_unchained();\\n }\\n\\n function __Ownable_init_unchained() internal onlyInitializing {\\n _transferOwnership(_msgSender());\\n }\\n\\n /**\\n * @dev Throws if called by any account other than the owner.\\n */\\n modifier onlyOwner() {\\n _checkOwner();\\n _;\\n }\\n\\n /**\\n * @dev Returns the address of the current owner.\\n */\\n function owner() public view virtual returns (address) {\\n return _owner;\\n }\\n\\n /**\\n * @dev Throws if the sender is not the owner.\\n */\\n function _checkOwner() internal view virtual {\\n require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n /**\\n * @dev Leaves the contract without owner. It will not be possible to call\\n * `onlyOwner` functions. Can only be called by the current owner.\\n *\\n * NOTE: Renouncing ownership will leave the contract without an owner,\\n * thereby disabling any functionality that is only available to the owner.\\n */\\n function renounceOwnership() public virtual onlyOwner {\\n _transferOwnership(address(0));\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Can only be called by the current owner.\\n */\\n function transferOwnership(address newOwner) public virtual onlyOwner {\\n require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n _transferOwnership(newOwner);\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Internal function without access restriction.\\n */\\n function _transferOwnership(address newOwner) internal virtual {\\n address oldOwner = _owner;\\n _owner = newOwner;\\n emit OwnershipTransferred(oldOwner, newOwner);\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x359a1ab89b46b9aba7bcad3fb651924baf4893d15153049b9976b0fc9be1358e\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/ContextUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which allows children to implement an emergency stop\\n * mechanism that can be triggered by an authorized account.\\n *\\n * This module is used through inheritance. It will make available the\\n * modifiers `whenNotPaused` and `whenPaused`, which can be applied to\\n * the functions of your contract. Note that they will not be pausable by\\n * simply including this module, only once the modifiers are put in place.\\n */\\nabstract contract PausableUpgradeable is Initializable, ContextUpgradeable {\\n /**\\n * @dev Emitted when the pause is triggered by `account`.\\n */\\n event Paused(address account);\\n\\n /**\\n * @dev Emitted when the pause is lifted by `account`.\\n */\\n event Unpaused(address account);\\n\\n bool private _paused;\\n\\n /**\\n * @dev Initializes the contract in unpaused state.\\n */\\n function __Pausable_init() internal onlyInitializing {\\n __Pausable_init_unchained();\\n }\\n\\n function __Pausable_init_unchained() internal onlyInitializing {\\n _paused = false;\\n }\\n\\n /**\\n * @dev Modifier to make a function callable only when the contract is not paused.\\n *\\n * Requirements:\\n *\\n * - The contract must not be paused.\\n */\\n modifier whenNotPaused() {\\n _requireNotPaused();\\n _;\\n }\\n\\n /**\\n * @dev Modifier to make a function callable only when the contract is paused.\\n *\\n * Requirements:\\n *\\n * - The contract must be paused.\\n */\\n modifier whenPaused() {\\n _requirePaused();\\n _;\\n }\\n\\n /**\\n * @dev Returns true if the contract is paused, and false otherwise.\\n */\\n function paused() public view virtual returns (bool) {\\n return _paused;\\n }\\n\\n /**\\n * @dev Throws if the contract is paused.\\n */\\n function _requireNotPaused() internal view virtual {\\n require(!paused(), \\\"Pausable: paused\\\");\\n }\\n\\n /**\\n * @dev Throws if the contract is not paused.\\n */\\n function _requirePaused() internal view virtual {\\n require(paused(), \\\"Pausable: not paused\\\");\\n }\\n\\n /**\\n * @dev Triggers stopped state.\\n *\\n * Requirements:\\n *\\n * - The contract must not be paused.\\n */\\n function _pause() internal virtual whenNotPaused {\\n _paused = true;\\n emit Paused(_msgSender());\\n }\\n\\n /**\\n * @dev Returns to normal state.\\n *\\n * Requirements:\\n *\\n * - The contract must be paused.\\n */\\n function _unpause() internal virtual whenPaused {\\n _paused = false;\\n emit Unpaused(_msgSender());\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0xad32f6821f860555f9530902a65b54203a4f5db2117f4384ae47a124958078db\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev External interface of AccessControl declared to support ERC165 detection.\\n */\\ninterface IAccessControl {\\n /**\\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\\n *\\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\\n * {RoleAdminChanged} not being emitted signaling this.\\n *\\n * _Available since v3.1._\\n */\\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\\n\\n /**\\n * @dev Emitted when `account` is granted `role`.\\n *\\n * `sender` is the account that originated the contract call, an admin role\\n * bearer except when using {AccessControl-_setupRole}.\\n */\\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Emitted when `account` is revoked `role`.\\n *\\n * `sender` is the account that originated the contract call:\\n * - if using `revokeRole`, it is the admin role bearer\\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\\n */\\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Returns `true` if `account` has been granted `role`.\\n */\\n function hasRole(bytes32 role, address account) external view returns (bool);\\n\\n /**\\n * @dev Returns the admin role that controls `role`. See {grantRole} and\\n * {revokeRole}.\\n *\\n * To change a role's admin, use {AccessControl-_setRoleAdmin}.\\n */\\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function grantRole(bytes32 role, address account) external;\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function revokeRole(bytes32 role, address account) external;\\n\\n /**\\n * @dev Revokes `role` from the calling account.\\n *\\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n * purpose is to provide a mechanism for accounts to lose their privileges\\n * if they are compromised (such as when a trusted device is misplaced).\\n *\\n * If the calling account had been granted `role`, emits a {RoleRevoked}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must be `account`.\\n */\\n function renounceRole(bytes32 role, address account) external;\\n}\\n\",\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n *\\n * _Available since v4.1._\\n */\\ninterface IERC20Metadata is IERC20 {\\n /**\\n * @dev Returns the name of the token.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the symbol of the token.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the decimals places of the token.\\n */\\n function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\"},\"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.25;\\n\\nimport \\\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\\\";\\nimport \\\"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol\\\";\\n\\nimport \\\"./IAccessControlManagerV8.sol\\\";\\n\\n/**\\n * @title AccessControlledV8\\n * @author Venus\\n * @notice This contract is helper between access control manager and actual contract. This contract further inherited by other contract (using solidity 0.8.13)\\n * to integrate access controlled mechanism. It provides initialise methods and verifying access methods.\\n */\\nabstract contract AccessControlledV8 is Initializable, Ownable2StepUpgradeable {\\n /// @notice Access control manager contract\\n IAccessControlManagerV8 private _accessControlManager;\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[49] private __gap;\\n\\n /// @notice Emitted when access control manager contract address is changed\\n event NewAccessControlManager(address oldAccessControlManager, address newAccessControlManager);\\n\\n /// @notice Thrown when the action is prohibited by AccessControlManager\\n error Unauthorized(address sender, address calledContract, string methodSignature);\\n\\n function __AccessControlled_init(address accessControlManager_) internal onlyInitializing {\\n __Ownable2Step_init();\\n __AccessControlled_init_unchained(accessControlManager_);\\n }\\n\\n function __AccessControlled_init_unchained(address accessControlManager_) internal onlyInitializing {\\n _setAccessControlManager(accessControlManager_);\\n }\\n\\n /**\\n * @notice Sets the address of AccessControlManager\\n * @dev Admin function to set address of AccessControlManager\\n * @param accessControlManager_ The new address of the AccessControlManager\\n * @custom:event Emits NewAccessControlManager event\\n * @custom:access Only Governance\\n */\\n function setAccessControlManager(address accessControlManager_) external onlyOwner {\\n _setAccessControlManager(accessControlManager_);\\n }\\n\\n /**\\n * @notice Returns the address of the access control manager contract\\n */\\n function accessControlManager() external view returns (IAccessControlManagerV8) {\\n return _accessControlManager;\\n }\\n\\n /**\\n * @dev Internal function to set address of AccessControlManager\\n * @param accessControlManager_ The new address of the AccessControlManager\\n */\\n function _setAccessControlManager(address accessControlManager_) internal {\\n require(address(accessControlManager_) != address(0), \\\"invalid acess control manager address\\\");\\n address oldAccessControlManager = address(_accessControlManager);\\n _accessControlManager = IAccessControlManagerV8(accessControlManager_);\\n emit NewAccessControlManager(oldAccessControlManager, accessControlManager_);\\n }\\n\\n /**\\n * @notice Reverts if the call is not allowed by AccessControlManager\\n * @param signature Method signature\\n */\\n function _checkAccessAllowed(string memory signature) internal view {\\n bool isAllowedToCall = _accessControlManager.isAllowedToCall(msg.sender, signature);\\n\\n if (!isAllowedToCall) {\\n revert Unauthorized(msg.sender, address(this), signature);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x0dcf283925f4dddc23ca0ee71d2cb96a9dd6e4cf08061b69fde1697ea39dc514\",\"license\":\"BSD-3-Clause\"},\"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\nimport \\\"@openzeppelin/contracts/access/IAccessControl.sol\\\";\\n\\n/**\\n * @title IAccessControlManagerV8\\n * @author Venus\\n * @notice Interface implemented by the `AccessControlManagerV8` contract.\\n */\\ninterface IAccessControlManagerV8 is IAccessControl {\\n function giveCallPermission(address contractAddress, string calldata functionSig, address accountToPermit) external;\\n\\n function revokeCallPermission(\\n address contractAddress,\\n string calldata functionSig,\\n address accountToRevoke\\n ) external;\\n\\n function isAllowedToCall(address account, string calldata functionSig) external view returns (bool);\\n\\n function hasPermission(\\n address account,\\n address contractAddress,\\n string calldata functionSig\\n ) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xaa29b098440d0b3a131c5ecdf25ce548790c1b5ac7bf9b5c0264b6af6f7a1e0b\",\"license\":\"BSD-3-Clause\"},\"contracts/ResilientOracle.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\n// SPDX-FileCopyrightText: 2022 Venus\\npragma solidity 0.8.25;\\n\\nimport \\\"@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol\\\";\\nimport \\\"./interfaces/VBep20Interface.sol\\\";\\nimport \\\"./interfaces/OracleInterface.sol\\\";\\nimport \\\"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol\\\";\\n\\n/**\\n * @title ResilientOracle\\n * @author Venus\\n * @notice The Resilient Oracle is the main contract that the protocol uses to fetch prices of assets.\\n *\\n * DeFi protocols are vulnerable to price oracle failures including oracle manipulation and incorrectly\\n * reported prices. If only one oracle is used, this creates a single point of failure and opens a vector\\n * for attacking the protocol.\\n *\\n * The Resilient Oracle uses multiple sources and fallback mechanisms to provide accurate prices and protect\\n * the protocol from oracle attacks. Currently it includes integrations with Chainlink, Pyth, Binance Oracle\\n * and TWAP (Time-Weighted Average Price) oracles. TWAP uses PancakeSwap as the on-chain price source.\\n *\\n * For every market (vToken) we configure the main, pivot and fallback oracles. The oracles are configured per\\n * vToken's underlying asset address. The main oracle oracle is the most trustworthy price source, the pivot\\n * oracle is used as a loose sanity checker and the fallback oracle is used as a backup price source.\\n *\\n * To validate prices returned from two oracles, we use an upper and lower bound ratio that is set for every\\n * market. The upper bound ratio represents the deviation between reported price (the price that\\u2019s being\\n * validated) and the anchor price (the price we are validating against) above which the reported price will\\n * be invalidated. The lower bound ratio presents the deviation between reported price and anchor price below\\n * which the reported price will be invalidated. So for oracle price to be considered valid the below statement\\n * should be true:\\n\\n```\\nanchorRatio = anchorPrice/reporterPrice\\nisValid = anchorRatio <= upperBoundAnchorRatio && anchorRatio >= lowerBoundAnchorRatio\\n```\\n\\n * In most cases, Chainlink is used as the main oracle, TWAP or Pyth oracles are used as the pivot oracle depending\\n * on which supports the given market and Binance oracle is used as the fallback oracle. For some markets we may\\n * use Pyth or TWAP as the main oracle if the token price is not supported by Chainlink or Binance oracles.\\n *\\n * For a fetched price to be valid it must be positive and not stagnant. If the price is invalid then we consider the\\n * oracle to be stagnant and treat it like it's disabled.\\n */\\ncontract ResilientOracle is PausableUpgradeable, AccessControlledV8, ResilientOracleInterface {\\n /**\\n * @dev Oracle roles:\\n * **main**: The most trustworthy price source\\n * **pivot**: Price oracle used as a loose sanity checker\\n * **fallback**: The backup source when main oracle price is invalidated\\n */\\n enum OracleRole {\\n MAIN,\\n PIVOT,\\n FALLBACK\\n }\\n\\n struct TokenConfig {\\n /// @notice asset address\\n address asset;\\n /// @notice `oracles` stores the oracles based on their role in the following order:\\n /// [main, pivot, fallback],\\n /// It can be indexed with the corresponding enum OracleRole value\\n address[3] oracles;\\n /// @notice `enableFlagsForOracles` stores the enabled state\\n /// for each oracle in the same order as `oracles`\\n bool[3] enableFlagsForOracles;\\n }\\n\\n uint256 public constant INVALID_PRICE = 0;\\n\\n /// @notice Native market address\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\\n address public immutable nativeMarket;\\n\\n /// @notice VAI address\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\\n address public immutable vai;\\n\\n /// @notice Set this as asset address for Native token on each chain.This is the underlying for vBNB (on bsc)\\n /// and can serve as any underlying asset of a market that supports native tokens\\n address public constant NATIVE_TOKEN_ADDR = 0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB;\\n\\n /// @notice Bound validator contract address\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\\n BoundValidatorInterface public immutable boundValidator;\\n\\n mapping(address => TokenConfig) private tokenConfigs;\\n\\n event TokenConfigAdded(\\n address indexed asset,\\n address indexed mainOracle,\\n address indexed pivotOracle,\\n address fallbackOracle\\n );\\n\\n /// Event emitted when an oracle is set\\n event OracleSet(address indexed asset, address indexed oracle, uint256 indexed role);\\n\\n /// Event emitted when an oracle is enabled or disabled\\n event OracleEnabled(address indexed asset, uint256 indexed role, bool indexed enable);\\n\\n /**\\n * @notice Checks whether an address is null or not\\n */\\n modifier notNullAddress(address someone) {\\n if (someone == address(0)) revert(\\\"can't be zero address\\\");\\n _;\\n }\\n\\n /**\\n * @notice Checks whether token config exists by checking whether asset is null address\\n * @dev address can't be null, so it's suitable to be used to check the validity of the config\\n * @param asset asset address\\n */\\n modifier checkTokenConfigExistence(address asset) {\\n if (tokenConfigs[asset].asset == address(0)) revert(\\\"token config must exist\\\");\\n _;\\n }\\n\\n /// @notice Constructor for the implementation contract. Sets immutable variables.\\n /// @dev nativeMarketAddress can be address(0) if on the chain we do not support native market\\n /// (e.g vETH on ethereum would not be supported, only vWETH)\\n /// @param nativeMarketAddress The address of a native market (for bsc it would be vBNB address)\\n /// @param vaiAddress The address of the VAI token (if there is VAI on the deployed chain).\\n /// Set to address(0) of VAI is not existent.\\n /// @param _boundValidator Address of the bound validator contract\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor(\\n address nativeMarketAddress,\\n address vaiAddress,\\n BoundValidatorInterface _boundValidator\\n ) notNullAddress(address(_boundValidator)) {\\n nativeMarket = nativeMarketAddress;\\n vai = vaiAddress;\\n boundValidator = _boundValidator;\\n\\n _disableInitializers();\\n }\\n\\n /**\\n * @notice Initializes the contract admin and sets the BoundValidator contract address\\n * @param accessControlManager_ Address of the access control manager contract\\n */\\n function initialize(address accessControlManager_) external initializer {\\n __AccessControlled_init(accessControlManager_);\\n __Pausable_init();\\n }\\n\\n /**\\n * @notice Pauses oracle\\n * @custom:access Only Governance\\n */\\n function pause() external {\\n _checkAccessAllowed(\\\"pause()\\\");\\n _pause();\\n }\\n\\n /**\\n * @notice Unpauses oracle\\n * @custom:access Only Governance\\n */\\n function unpause() external {\\n _checkAccessAllowed(\\\"unpause()\\\");\\n _unpause();\\n }\\n\\n /**\\n * @notice Batch sets token configs\\n * @param tokenConfigs_ Token config array\\n * @custom:access Only Governance\\n * @custom:error Throws a length error if the length of the token configs array is 0\\n */\\n function setTokenConfigs(TokenConfig[] memory tokenConfigs_) external {\\n if (tokenConfigs_.length == 0) revert(\\\"length can't be 0\\\");\\n uint256 numTokenConfigs = tokenConfigs_.length;\\n for (uint256 i; i < numTokenConfigs; ) {\\n setTokenConfig(tokenConfigs_[i]);\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @notice Sets oracle for a given asset and role.\\n * @dev Supplied asset **must** exist and main oracle may not be null\\n * @param asset Asset address\\n * @param oracle Oracle address\\n * @param role Oracle role\\n * @custom:access Only Governance\\n * @custom:error Null address error if main-role oracle address is null\\n * @custom:error NotNullAddress error is thrown if asset address is null\\n * @custom:error TokenConfigExistance error is thrown if token config is not set\\n * @custom:event Emits OracleSet event with asset address, oracle address and role of the oracle for the asset\\n */\\n function setOracle(\\n address asset,\\n address oracle,\\n OracleRole role\\n ) external notNullAddress(asset) checkTokenConfigExistence(asset) {\\n _checkAccessAllowed(\\\"setOracle(address,address,uint8)\\\");\\n if (oracle == address(0) && role == OracleRole.MAIN) revert(\\\"can't set zero address to main oracle\\\");\\n tokenConfigs[asset].oracles[uint256(role)] = oracle;\\n emit OracleSet(asset, oracle, uint256(role));\\n }\\n\\n /**\\n * @notice Enables/ disables oracle for the input asset. Token config for the input asset **must** exist\\n * @dev Configuration for the asset **must** already exist and the asset cannot be 0 address\\n * @param asset Asset address\\n * @param role Oracle role\\n * @param enable Enabled boolean of the oracle\\n * @custom:access Only Governance\\n * @custom:error NotNullAddress error is thrown if asset address is null\\n * @custom:error TokenConfigExistance error is thrown if token config is not set\\n */\\n function enableOracle(\\n address asset,\\n OracleRole role,\\n bool enable\\n ) external notNullAddress(asset) checkTokenConfigExistence(asset) {\\n _checkAccessAllowed(\\\"enableOracle(address,uint8,bool)\\\");\\n tokenConfigs[asset].enableFlagsForOracles[uint256(role)] = enable;\\n emit OracleEnabled(asset, uint256(role), enable);\\n }\\n\\n /**\\n * @notice Updates the TWAP pivot oracle price.\\n * @dev This function should always be called before calling getUnderlyingPrice\\n * @param vToken vToken address\\n */\\n function updatePrice(address vToken) external override {\\n address asset = _getUnderlyingAsset(vToken);\\n (address pivotOracle, bool pivotOracleEnabled) = getOracle(asset, OracleRole.PIVOT);\\n if (pivotOracle != address(0) && pivotOracleEnabled) {\\n //if pivot oracle is not TwapOracle it will revert so we need to catch the revert\\n try TwapInterface(pivotOracle).updateTwap(asset) {} catch {}\\n }\\n }\\n\\n /**\\n * @notice Updates the pivot oracle price. Currently using TWAP\\n * @dev This function should always be called before calling getPrice\\n * @param asset asset address\\n */\\n function updateAssetPrice(address asset) external {\\n (address pivotOracle, bool pivotOracleEnabled) = getOracle(asset, OracleRole.PIVOT);\\n if (pivotOracle != address(0) && pivotOracleEnabled) {\\n //if pivot oracle is not TwapOracle it will revert so we need to catch the revert\\n try TwapInterface(pivotOracle).updateTwap(asset) {} catch {}\\n }\\n }\\n\\n /**\\n * @dev Gets token config by asset address\\n * @param asset asset address\\n * @return tokenConfig Config for the asset\\n */\\n function getTokenConfig(address asset) external view returns (TokenConfig memory) {\\n return tokenConfigs[asset];\\n }\\n\\n /**\\n * @notice Gets price of the underlying asset for a given vToken. Validation flow:\\n * - Check if the oracle is paused globally\\n * - Validate price from main oracle against pivot oracle\\n * - Validate price from fallback oracle against pivot oracle if the first validation failed\\n * - Validate price from main oracle against fallback oracle if the second validation failed\\n * In the case that the pivot oracle is not available but main price is available and validation is successful,\\n * main oracle price is returned.\\n * @param vToken vToken address\\n * @return price USD price in scaled decimal places.\\n * @custom:error Paused error is thrown when resilent oracle is paused\\n * @custom:error Invalid resilient oracle price error is thrown if fetched prices from oracle is invalid\\n */\\n function getUnderlyingPrice(address vToken) external view override returns (uint256) {\\n if (paused()) revert(\\\"resilient oracle is paused\\\");\\n\\n address asset = _getUnderlyingAsset(vToken);\\n return _getPrice(asset);\\n }\\n\\n /**\\n * @notice Gets price of the asset\\n * @param asset asset address\\n * @return price USD price in scaled decimal places.\\n * @custom:error Paused error is thrown when resilent oracle is paused\\n * @custom:error Invalid resilient oracle price error is thrown if fetched prices from oracle is invalid\\n */\\n function getPrice(address asset) external view override returns (uint256) {\\n if (paused()) revert(\\\"resilient oracle is paused\\\");\\n return _getPrice(asset);\\n }\\n\\n /**\\n * @notice Sets/resets single token configs.\\n * @dev main oracle **must not** be a null address\\n * @param tokenConfig Token config struct\\n * @custom:access Only Governance\\n * @custom:error NotNullAddress is thrown if asset address is null\\n * @custom:error NotNullAddress is thrown if main-role oracle address for asset is null\\n * @custom:event Emits TokenConfigAdded event when the asset config is set successfully by the authorized account\\n */\\n function setTokenConfig(\\n TokenConfig memory tokenConfig\\n ) public notNullAddress(tokenConfig.asset) notNullAddress(tokenConfig.oracles[uint256(OracleRole.MAIN)]) {\\n _checkAccessAllowed(\\\"setTokenConfig(TokenConfig)\\\");\\n\\n tokenConfigs[tokenConfig.asset] = tokenConfig;\\n emit TokenConfigAdded(\\n tokenConfig.asset,\\n tokenConfig.oracles[uint256(OracleRole.MAIN)],\\n tokenConfig.oracles[uint256(OracleRole.PIVOT)],\\n tokenConfig.oracles[uint256(OracleRole.FALLBACK)]\\n );\\n }\\n\\n /**\\n * @notice Gets oracle and enabled status by asset address\\n * @param asset asset address\\n * @param role Oracle role\\n * @return oracle Oracle address based on role\\n * @return enabled Enabled flag of the oracle based on token config\\n */\\n function getOracle(address asset, OracleRole role) public view returns (address oracle, bool enabled) {\\n oracle = tokenConfigs[asset].oracles[uint256(role)];\\n enabled = tokenConfigs[asset].enableFlagsForOracles[uint256(role)];\\n }\\n\\n function _getPrice(address asset) internal view returns (uint256) {\\n uint256 pivotPrice = INVALID_PRICE;\\n\\n // Get pivot oracle price, Invalid price if not available or error\\n (address pivotOracle, bool pivotOracleEnabled) = getOracle(asset, OracleRole.PIVOT);\\n if (pivotOracleEnabled && pivotOracle != address(0)) {\\n try OracleInterface(pivotOracle).getPrice(asset) returns (uint256 pricePivot) {\\n pivotPrice = pricePivot;\\n } catch {}\\n }\\n\\n // Compare main price and pivot price, return main price and if validation was successful\\n // note: In case pivot oracle is not available but main price is available and\\n // validation is successful, the main oracle price is returned.\\n (uint256 mainPrice, bool validatedPivotMain) = _getMainOraclePrice(\\n asset,\\n pivotPrice,\\n pivotOracleEnabled && pivotOracle != address(0)\\n );\\n if (mainPrice != INVALID_PRICE && validatedPivotMain) return mainPrice;\\n\\n // Compare fallback and pivot if main oracle comparision fails with pivot\\n // Return fallback price when fallback price is validated successfully with pivot oracle\\n (uint256 fallbackPrice, bool validatedPivotFallback) = _getFallbackOraclePrice(asset, pivotPrice);\\n if (fallbackPrice != INVALID_PRICE && validatedPivotFallback) return fallbackPrice;\\n\\n // Lastly compare main price and fallback price\\n if (\\n mainPrice != INVALID_PRICE &&\\n fallbackPrice != INVALID_PRICE &&\\n boundValidator.validatePriceWithAnchorPrice(asset, mainPrice, fallbackPrice)\\n ) {\\n return mainPrice;\\n }\\n\\n revert(\\\"invalid resilient oracle price\\\");\\n }\\n\\n /**\\n * @notice Gets a price for the provided asset\\n * @dev This function won't revert when price is 0, because the fallback oracle may still be\\n * able to fetch a correct price\\n * @param asset asset address\\n * @param pivotPrice Pivot oracle price\\n * @param pivotEnabled If pivot oracle is not empty and enabled\\n * @return price USD price in scaled decimals\\n * e.g. asset decimals is 8 then price is returned as 10**18 * 10**(18-8) = 10**28 decimals\\n * @return pivotValidated Boolean representing if the validation of main oracle price\\n * and pivot oracle price were successful\\n * @custom:error Invalid price error is thrown if main oracle fails to fetch price of the asset\\n * @custom:error Invalid price error is thrown if main oracle is not enabled or main oracle\\n * address is null\\n */\\n function _getMainOraclePrice(\\n address asset,\\n uint256 pivotPrice,\\n bool pivotEnabled\\n ) internal view returns (uint256, bool) {\\n (address mainOracle, bool mainOracleEnabled) = getOracle(asset, OracleRole.MAIN);\\n if (mainOracleEnabled && mainOracle != address(0)) {\\n try OracleInterface(mainOracle).getPrice(asset) returns (uint256 mainOraclePrice) {\\n if (!pivotEnabled) {\\n return (mainOraclePrice, true);\\n }\\n if (pivotPrice == INVALID_PRICE) {\\n return (mainOraclePrice, false);\\n }\\n return (\\n mainOraclePrice,\\n boundValidator.validatePriceWithAnchorPrice(asset, mainOraclePrice, pivotPrice)\\n );\\n } catch {\\n return (INVALID_PRICE, false);\\n }\\n }\\n\\n return (INVALID_PRICE, false);\\n }\\n\\n /**\\n * @dev This function won't revert when the price is 0 because getPrice checks if price is > 0\\n * @param asset asset address\\n * @return price USD price in 18 decimals\\n * @return pivotValidated Boolean representing if the validation of fallback oracle price\\n * and pivot oracle price were successfully\\n * @custom:error Invalid price error is thrown if fallback oracle fails to fetch price of the asset\\n * @custom:error Invalid price error is thrown if fallback oracle is not enabled or fallback oracle\\n * address is null\\n */\\n function _getFallbackOraclePrice(address asset, uint256 pivotPrice) private view returns (uint256, bool) {\\n (address fallbackOracle, bool fallbackEnabled) = getOracle(asset, OracleRole.FALLBACK);\\n if (fallbackEnabled && fallbackOracle != address(0)) {\\n try OracleInterface(fallbackOracle).getPrice(asset) returns (uint256 fallbackOraclePrice) {\\n if (pivotPrice == INVALID_PRICE) {\\n return (fallbackOraclePrice, false);\\n }\\n return (\\n fallbackOraclePrice,\\n boundValidator.validatePriceWithAnchorPrice(asset, fallbackOraclePrice, pivotPrice)\\n );\\n } catch {\\n return (INVALID_PRICE, false);\\n }\\n }\\n\\n return (INVALID_PRICE, false);\\n }\\n\\n /**\\n * @dev This function returns the underlying asset of a vToken\\n * @param vToken vToken address\\n * @return asset underlying asset address\\n */\\n function _getUnderlyingAsset(address vToken) private view notNullAddress(vToken) returns (address asset) {\\n if (vToken == nativeMarket) {\\n asset = NATIVE_TOKEN_ADDR;\\n } else if (vToken == vai) {\\n asset = vai;\\n } else {\\n asset = VBep20Interface(vToken).underlying();\\n }\\n }\\n}\\n\",\"keccak256\":\"0xdaaa90daa8ca5bda477729aaa5d5ff3e5305635baec1799a368d564ae2a13c4c\",\"license\":\"BSD-3-Clause\"},\"contracts/interfaces/OracleInterface.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\ninterface OracleInterface {\\n function getPrice(address asset) external view returns (uint256);\\n}\\n\\ninterface ResilientOracleInterface is OracleInterface {\\n function updatePrice(address vToken) external;\\n\\n function updateAssetPrice(address asset) external;\\n\\n function getUnderlyingPrice(address vToken) external view returns (uint256);\\n}\\n\\ninterface TwapInterface is OracleInterface {\\n function updateTwap(address asset) external returns (uint256);\\n}\\n\\ninterface BoundValidatorInterface {\\n function validatePriceWithAnchorPrice(\\n address asset,\\n uint256 reporterPrice,\\n uint256 anchorPrice\\n ) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x2432799b0d824fc701beb4c30146e912b9aeecf77b5c1635dde6c5fbe6bfc3a7\",\"license\":\"BSD-3-Clause\"},\"contracts/interfaces/VBep20Interface.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\nimport \\\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\\\";\\n\\ninterface VBep20Interface is IERC20Metadata {\\n /**\\n * @notice Underlying asset for this VToken\\n */\\n function underlying() external view returns (address);\\n}\\n\",\"keccak256\":\"0x6e71c3df86501df5c0e4bace1333c0c91f9f9cced252a54fb99eeda219b789d5\",\"license\":\"BSD-3-Clause\"}},\"version\":1}", - "bytecode": "0x60e060405234801561000f575f80fd5b5060405161227e38038061227e83398101604081905261002e91610183565b806001600160a01b03811661008a5760405162461bcd60e51b815260206004820152601560248201527f63616e2774206265207a65726f2061646472657373000000000000000000000060448201526064015b60405180910390fd5b6001600160a01b0380851660805283811660a052821660c0526100ab6100b4565b505050506101cd565b5f54610100900460ff161561011b5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401610081565b5f5460ff9081161461016a575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114610180575f80fd5b50565b5f805f60608486031215610195575f80fd5b83516101a08161016c565b60208501519093506101b18161016c565b60408501519092506101c28161016c565b809150509250925092565b60805160a05160c05161205d6102215f395f81816101cb015281816112860152818161168401526117ed01525f818161034f0152818161141e015261145701525f818161028001526113c9015261205d5ff3fe608060405234801561000f575f80fd5b5060043610610187575f3560e01c80638b855da4116100d9578063b62cad6911610093578063cb67e3b11161006e578063cb67e3b114610384578063e30c3978146103a4578063f2fde38b146103b5578063fc57d4df146103c8575f80fd5b8063b62cad6914610337578063b62e4c921461034a578063c4d66de814610371575f80fd5b80638b855da4146102a25780638da5cb5b146102d457806396e85ced146102e5578063a6b1344a146102f8578063a9534f8a1461030b578063b4a0bdf314610326575f80fd5b80634b932b8f11610144578063715018a61161011f578063715018a61461026357806379ba50971461026b5780638456cb59146102735780638a2f7f6d1461027b575f80fd5b80634b932b8f146102335780634bf39cba146102465780635c975abb1461024d575f80fd5b80630e32cb861461018b5780632cfa3871146101a0578063333a21b0146101b357806333d33494146101c65780633f4ba83a1461020a57806341976e0914610212575b5f80fd5b61019e610199366004611b1c565b6103db565b005b61019e6101ae366004611c9d565b6103ef565b61019e6101c1366004611d48565b610473565b6101ed7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61019e6105c4565b610225610220366004611b1c565b6105f8565b604051908152602001610201565b61019e610241366004611d75565b610661565b6102255f81565b60335460ff166040519015158152602001610201565b61019e6107d4565b61019e6107e5565b61019e61085c565b6101ed7f000000000000000000000000000000000000000000000000000000000000000081565b6102b56102b0366004611dbb565b61088c565b604080516001600160a01b039093168352901515602083015201610201565b6065546001600160a01b03166101ed565b61019e6102f3366004611b1c565b61092c565b61019e610306366004611dee565b6109d4565b6101ed73bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb81565b60c9546001600160a01b03166101ed565b61019e610345366004611b1c565b610bd3565b6101ed7f000000000000000000000000000000000000000000000000000000000000000081565b61019e61037f366004611b1c565b610c6d565b610397610392366004611b1c565b610d83565b6040516102019190611e32565b6097546001600160a01b03166101ed565b61019e6103c3366004611b1c565b610e56565b6102256103d6366004611b1c565b610ec7565b6103e3610f3d565b6103ec81610f97565b50565b80515f036104385760405162461bcd60e51b815260206004820152601160248201527006c656e6774682063616e2774206265203607c1b60448201526064015b60405180910390fd5b80515f5b8181101561046e5761046683828151811061045957610459611eab565b6020026020010151610473565b60010161043c565b505050565b80516001600160a01b03811661049b5760405162461bcd60e51b815260040161042f90611ebf565b6020820151516001600160a01b0381166104c75760405162461bcd60e51b815260040161042f90611ebf565b6105056040518060400160405280601b81526020017f736574546f6b656e436f6e66696728546f6b656e436f6e666967290000000000815250611055565b82516001600160a01b039081165f90815260fb60209081526040909120855181546001600160a01b031916931692909217825584015184919061054e90600183019060036119c0565b5060408201516105649060048301906003611a18565b505050602083810151808201518151865160409384015193516001600160a01b039485168152928416949184169316917fa51ad01e2270c314a7b78f0c60fe66c723f2d06c121d63fcdce776e654878fc1910160405180910390a4505050565b6105ee60405180604001604052806009815260200168756e7061757365282960b81b815250611055565b6105f66110ec565b565b5f61060560335460ff1690565b156106525760405162461bcd60e51b815260206004820152601a60248201527f726573696c69656e74206f7261636c6520697320706175736564000000000000604482015260640161042f565b61065b8261113e565b92915050565b826001600160a01b0381166106885760405162461bcd60e51b815260040161042f90611ebf565b6001600160a01b038085165f90815260fb60205260409020548591166106ea5760405162461bcd60e51b81526020600482015260176024820152761d1bdad95b8818dbdb999a59c81b5d5cdd08195e1a5cdd604a1b604482015260640161042f565b6107286040518060400160405280602081526020017f656e61626c654f7261636c6528616464726573732c75696e74382c626f6f6c29815250611055565b6001600160a01b0385165f90815260fb60205260409020839060040185600281111561075657610756611eee565b6003811061076657610766611eab565b602091828204019190066101000a81548160ff02191690831515021790555082151584600281111561079a5761079a611eee565b6040516001600160a01b038816907fcf3cad1ec87208efbde5d82a0557484a78d4182c3ad16926a5463bc1f7234b3d905f90a45050505050565b6107dc610f3d565b6105f65f611349565b60975433906001600160a01b031681146108535760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b606482015260840161042f565b6103ec81611349565b610884604051806040016040528060078152602001667061757365282960c81b815250611055565b6105f6611362565b6001600160a01b0382165f90815260fb6020526040812081906001018360028111156108ba576108ba611eee565b600381106108ca576108ca611eab565b01546001600160a01b038581165f90815260fb60205260409020911692506004018360028111156108fd576108fd611eee565b6003811061090d5761090d611eab565b602091828204019190069054906101000a900460ff1690509250929050565b5f6109368261139f565b90505f8061094583600161088c565b90925090506001600160a01b0382161580159061095f5750805b156109ce5760405163725068a560e01b81526001600160a01b03848116600483015283169063725068a5906024016020604051808303815f875af19250505080156109c7575060408051601f3d908101601f191682019092526109c491810190611f02565b60015b156109ce57505b50505050565b826001600160a01b0381166109fb5760405162461bcd60e51b815260040161042f90611ebf565b6001600160a01b038085165f90815260fb6020526040902054859116610a5d5760405162461bcd60e51b81526020600482015260176024820152761d1bdad95b8818dbdb999a59c81b5d5cdd08195e1a5cdd604a1b604482015260640161042f565b610a9b6040518060400160405280602081526020017f7365744f7261636c6528616464726573732c616464726573732c75696e743829815250611055565b6001600160a01b038416158015610ac257505f836002811115610ac057610ac0611eee565b145b15610b1d5760405162461bcd60e51b815260206004820152602560248201527f63616e277420736574207a65726f206164647265737320746f206d61696e206f6044820152647261636c6560d81b606482015260840161042f565b6001600160a01b0385165f90815260fb602052604090208490600101846002811115610b4b57610b4b611eee565b60038110610b5b57610b5b611eab565b0180546001600160a01b0319166001600160a01b0392909216919091179055826002811115610b8c57610b8c611eee565b846001600160a01b0316866001600160a01b03167fea681d3efb830ef032a9c29a7215b5ceeeb546250d2c463dbf87817aecda1bf160405160405180910390a45050505050565b5f80610be083600161088c565b90925090506001600160a01b03821615801590610bfa5750805b1561046e5760405163725068a560e01b81526001600160a01b03848116600483015283169063725068a5906024016020604051808303815f875af1925050508015610c62575060408051601f3d908101601f19168201909252610c5f91810190611f02565b60015b1561046e5750505050565b5f54610100900460ff1615808015610c8b57505f54600160ff909116105b80610ca45750303b158015610ca457505f5460ff166001145b610d075760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161042f565b5f805460ff191660011790558015610d28575f805461ff0019166101001790555b610d31826114e3565b610d3961151a565b8015610d7f575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b5050565b610d8b611aa2565b6001600160a01b038281165f90815260fb60209081526040918290208251606080820185528254909516815283519485019384905293909291840191600184019060039082845b81546001600160a01b03168152600190910190602001808311610dd2575050509183525050604080516060810191829052602090920191906004840190600390825f855b825461010083900a900460ff161515815260206001928301818104948501949093039092029101808411610e165790505050505050815250509050919050565b610e5e610f3d565b609780546001600160a01b0383166001600160a01b03199091168117909155610e8f6065546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f610ed460335460ff1690565b15610f215760405162461bcd60e51b815260206004820152601a60248201527f726573696c69656e74206f7261636c6520697320706175736564000000000000604482015260640161042f565b5f610f2b8361139f565b9050610f368161113e565b9392505050565b6065546001600160a01b031633146105f65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161042f565b6001600160a01b038116610ffb5760405162461bcd60e51b815260206004820152602560248201527f696e76616c696420616365737320636f6e74726f6c206d616e61676572206164604482015264647265737360d81b606482015260840161042f565b60c980546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa09101610d76565b60c9546040516318c5e8ab60e01b81525f916001600160a01b0316906318c5e8ab906110879033908690600401611f47565b602060405180830381865afa1580156110a2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110c69190611f72565b905080610d7f57333083604051634a3fa29360e01b815260040161042f93929190611f8d565b6110f4611548565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b5f80808061114d85600161088c565b9150915080801561116657506001600160a01b03821615155b156111d5576040516341976e0960e01b81526001600160a01b0386811660048301528316906341976e0990602401602060405180830381865afa9250505080156111cd575060408051601f3d908101601f191682019092526111ca91810190611f02565b60015b156111d55792505b5f806111f687868580156111f157506001600160a01b03871615155b611591565b915091505f82141580156112075750805b15611216575095945050505050565b5f80611222898861170c565b915091505f82141580156112335750805b156112445750979650505050505050565b831580159061125257508115155b80156112ef5750604051634be3819f60e11b81526001600160a01b038a8116600483015260248201869052604482018490527f000000000000000000000000000000000000000000000000000000000000000016906397c7033e90606401602060405180830381865afa1580156112cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112ef9190611f72565b15611301575091979650505050505050565b60405162461bcd60e51b815260206004820152601e60248201527f696e76616c696420726573696c69656e74206f7261636c652070726963650000604482015260640161042f565b609780546001600160a01b03191690556103ec81611874565b61136a6118c5565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586111213390565b5f816001600160a01b0381166113c75760405162461bcd60e51b815260040161042f90611ebf565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03160361141c5773bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb91506114dd565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03160361147d577f000000000000000000000000000000000000000000000000000000000000000091506114dd565b826001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114b9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f369190611fc1565b50919050565b5f54610100900460ff166115095760405162461bcd60e51b815260040161042f90611fdc565b61151161190b565b6103ec81611939565b5f54610100900460ff166115405760405162461bcd60e51b815260040161042f90611fdc565b6105f661195f565b60335460ff166105f65760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015260640161042f565b5f805f8061159f875f61088c565b915091508080156115b857506001600160a01b03821615155b156116fb576040516341976e0960e01b81526001600160a01b0388811660048301528316906341976e0990602401602060405180830381865afa92505050801561161f575060408051601f3d908101601f1916820190925261161c91810190611f02565b60015b611630575f80935093505050611704565b8561164357935060019250611704915050565b866116555793505f9250611704915050565b604051634be3819f60e11b81526001600160a01b038981166004830152602482018390526044820189905282917f0000000000000000000000000000000000000000000000000000000000000000909116906397c7033e90606401602060405180830381865afa1580156116cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116ef9190611f72565b94509450505050611704565b5f809350935050505b935093915050565b5f805f8061171b86600261088c565b9150915080801561173457506001600160a01b03821615155b15611864576040516341976e0960e01b81526001600160a01b0387811660048301528316906341976e0990602401602060405180830381865afa92505050801561179b575060408051601f3d908101601f1916820190925261179891810190611f02565b60015b6117ac575f8093509350505061186d565b856117be5793505f925061186d915050565b604051634be3819f60e11b81526001600160a01b038881166004830152602482018390526044820188905282917f0000000000000000000000000000000000000000000000000000000000000000909116906397c7033e90606401602060405180830381865afa158015611834573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118589190611f72565b9450945050505061186d565b5f809350935050505b9250929050565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60335460ff16156105f65760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161042f565b5f54610100900460ff166119315760405162461bcd60e51b815260040161042f90611fdc565b6105f6611991565b5f54610100900460ff166103e35760405162461bcd60e51b815260040161042f90611fdc565b5f54610100900460ff166119855760405162461bcd60e51b815260040161042f90611fdc565b6033805460ff19169055565b5f54610100900460ff166119b75760405162461bcd60e51b815260040161042f90611fdc565b6105f633611349565b8260038101928215611a08579160200282015b82811115611a0857825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906119d3565b50611a14929150611ad6565b5090565b600183019183908215611a08579160200282015f5b83821115611a6957835183826101000a81548160ff02191690831515021790555092602001926001016020815f01049283019260010302611a2d565b8015611a955782816101000a81549060ff02191690556001016020815f01049283019260010302611a69565b5050611a14929150611ad6565b60405180606001604052805f6001600160a01b03168152602001611ac4611aea565b8152602001611ad1611aea565b905290565b5b80821115611a14575f8155600101611ad7565b60405180606001604052806003906020820280368337509192915050565b6001600160a01b03811681146103ec575f80fd5b5f60208284031215611b2c575f80fd5b8135610f3681611b08565b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715611b6e57611b6e611b37565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611b9d57611b9d611b37565b604052919050565b80151581146103ec575f80fd5b5f82601f830112611bc1575f80fd5b611bc9611b4b565b806060840185811115611bda575f80fd5b845b81811015611bfd578035611bef81611ba5565b845260209384019301611bdc565b509095945050505050565b5f60e08284031215611c18575f80fd5b611c20611b4b565b90508135611c2d81611b08565b81526020603f83018413611c3f575f80fd5b611c47611b4b565b806080850186811115611c58575f80fd5b602086015b81811015611c7d578035611c7081611b08565b8452928401928401611c5d565b50816020860152611c8e8782611bb2565b60408601525050505092915050565b5f6020808385031215611cae575f80fd5b823567ffffffffffffffff80821115611cc5575f80fd5b818501915085601f830112611cd8575f80fd5b813581811115611cea57611cea611b37565b611cf8848260051b01611b74565b818152848101925060e0918202840185019188831115611d16575f80fd5b938501935b82851015611d3c57611d2d8986611c08565b84529384019392850192611d1b565b50979650505050505050565b5f60e08284031215611d58575f80fd5b610f368383611c08565b803560038110611d70575f80fd5b919050565b5f805f60608486031215611d87575f80fd5b8335611d9281611b08565b9250611da060208501611d62565b91506040840135611db081611ba5565b809150509250925092565b5f8060408385031215611dcc575f80fd5b8235611dd781611b08565b9150611de560208401611d62565b90509250929050565b5f805f60608486031215611e00575f80fd5b8335611e0b81611b08565b92506020840135611e1b81611b08565b9150611e2960408501611d62565b90509250925092565b81516001600160a01b03908116825260208084015160e084019291908185015f5b6003811015611e72578251851682529183019190830190600101611e53565b50505060408501519150608084015f5b6003811015611ea1578351151582529282019290820190600101611e82565b5050505092915050565b634e487b7160e01b5f52603260045260245ffd5b60208082526015908201527463616e2774206265207a65726f206164647265737360581b604082015260600190565b634e487b7160e01b5f52602160045260245ffd5b5f60208284031215611f12575f80fd5b5051919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6001600160a01b03831681526040602082018190525f90611f6a90830184611f19565b949350505050565b5f60208284031215611f82575f80fd5b8151610f3681611ba5565b6001600160a01b038481168252831660208201526060604082018190525f90611fb890830184611f19565b95945050505050565b5f60208284031215611fd1575f80fd5b8151610f3681611b08565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fea264697066735822122052bae3ef88d52714e86532a1edb53cf9e4cfabd4eeefe3c5396944c9700b7f3e64736f6c63430008190033", - "deployedBytecode": "0x608060405234801561000f575f80fd5b5060043610610187575f3560e01c80638b855da4116100d9578063b62cad6911610093578063cb67e3b11161006e578063cb67e3b114610384578063e30c3978146103a4578063f2fde38b146103b5578063fc57d4df146103c8575f80fd5b8063b62cad6914610337578063b62e4c921461034a578063c4d66de814610371575f80fd5b80638b855da4146102a25780638da5cb5b146102d457806396e85ced146102e5578063a6b1344a146102f8578063a9534f8a1461030b578063b4a0bdf314610326575f80fd5b80634b932b8f11610144578063715018a61161011f578063715018a61461026357806379ba50971461026b5780638456cb59146102735780638a2f7f6d1461027b575f80fd5b80634b932b8f146102335780634bf39cba146102465780635c975abb1461024d575f80fd5b80630e32cb861461018b5780632cfa3871146101a0578063333a21b0146101b357806333d33494146101c65780633f4ba83a1461020a57806341976e0914610212575b5f80fd5b61019e610199366004611b1c565b6103db565b005b61019e6101ae366004611c9d565b6103ef565b61019e6101c1366004611d48565b610473565b6101ed7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61019e6105c4565b610225610220366004611b1c565b6105f8565b604051908152602001610201565b61019e610241366004611d75565b610661565b6102255f81565b60335460ff166040519015158152602001610201565b61019e6107d4565b61019e6107e5565b61019e61085c565b6101ed7f000000000000000000000000000000000000000000000000000000000000000081565b6102b56102b0366004611dbb565b61088c565b604080516001600160a01b039093168352901515602083015201610201565b6065546001600160a01b03166101ed565b61019e6102f3366004611b1c565b61092c565b61019e610306366004611dee565b6109d4565b6101ed73bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb81565b60c9546001600160a01b03166101ed565b61019e610345366004611b1c565b610bd3565b6101ed7f000000000000000000000000000000000000000000000000000000000000000081565b61019e61037f366004611b1c565b610c6d565b610397610392366004611b1c565b610d83565b6040516102019190611e32565b6097546001600160a01b03166101ed565b61019e6103c3366004611b1c565b610e56565b6102256103d6366004611b1c565b610ec7565b6103e3610f3d565b6103ec81610f97565b50565b80515f036104385760405162461bcd60e51b815260206004820152601160248201527006c656e6774682063616e2774206265203607c1b60448201526064015b60405180910390fd5b80515f5b8181101561046e5761046683828151811061045957610459611eab565b6020026020010151610473565b60010161043c565b505050565b80516001600160a01b03811661049b5760405162461bcd60e51b815260040161042f90611ebf565b6020820151516001600160a01b0381166104c75760405162461bcd60e51b815260040161042f90611ebf565b6105056040518060400160405280601b81526020017f736574546f6b656e436f6e66696728546f6b656e436f6e666967290000000000815250611055565b82516001600160a01b039081165f90815260fb60209081526040909120855181546001600160a01b031916931692909217825584015184919061054e90600183019060036119c0565b5060408201516105649060048301906003611a18565b505050602083810151808201518151865160409384015193516001600160a01b039485168152928416949184169316917fa51ad01e2270c314a7b78f0c60fe66c723f2d06c121d63fcdce776e654878fc1910160405180910390a4505050565b6105ee60405180604001604052806009815260200168756e7061757365282960b81b815250611055565b6105f66110ec565b565b5f61060560335460ff1690565b156106525760405162461bcd60e51b815260206004820152601a60248201527f726573696c69656e74206f7261636c6520697320706175736564000000000000604482015260640161042f565b61065b8261113e565b92915050565b826001600160a01b0381166106885760405162461bcd60e51b815260040161042f90611ebf565b6001600160a01b038085165f90815260fb60205260409020548591166106ea5760405162461bcd60e51b81526020600482015260176024820152761d1bdad95b8818dbdb999a59c81b5d5cdd08195e1a5cdd604a1b604482015260640161042f565b6107286040518060400160405280602081526020017f656e61626c654f7261636c6528616464726573732c75696e74382c626f6f6c29815250611055565b6001600160a01b0385165f90815260fb60205260409020839060040185600281111561075657610756611eee565b6003811061076657610766611eab565b602091828204019190066101000a81548160ff02191690831515021790555082151584600281111561079a5761079a611eee565b6040516001600160a01b038816907fcf3cad1ec87208efbde5d82a0557484a78d4182c3ad16926a5463bc1f7234b3d905f90a45050505050565b6107dc610f3d565b6105f65f611349565b60975433906001600160a01b031681146108535760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b606482015260840161042f565b6103ec81611349565b610884604051806040016040528060078152602001667061757365282960c81b815250611055565b6105f6611362565b6001600160a01b0382165f90815260fb6020526040812081906001018360028111156108ba576108ba611eee565b600381106108ca576108ca611eab565b01546001600160a01b038581165f90815260fb60205260409020911692506004018360028111156108fd576108fd611eee565b6003811061090d5761090d611eab565b602091828204019190069054906101000a900460ff1690509250929050565b5f6109368261139f565b90505f8061094583600161088c565b90925090506001600160a01b0382161580159061095f5750805b156109ce5760405163725068a560e01b81526001600160a01b03848116600483015283169063725068a5906024016020604051808303815f875af19250505080156109c7575060408051601f3d908101601f191682019092526109c491810190611f02565b60015b156109ce57505b50505050565b826001600160a01b0381166109fb5760405162461bcd60e51b815260040161042f90611ebf565b6001600160a01b038085165f90815260fb6020526040902054859116610a5d5760405162461bcd60e51b81526020600482015260176024820152761d1bdad95b8818dbdb999a59c81b5d5cdd08195e1a5cdd604a1b604482015260640161042f565b610a9b6040518060400160405280602081526020017f7365744f7261636c6528616464726573732c616464726573732c75696e743829815250611055565b6001600160a01b038416158015610ac257505f836002811115610ac057610ac0611eee565b145b15610b1d5760405162461bcd60e51b815260206004820152602560248201527f63616e277420736574207a65726f206164647265737320746f206d61696e206f6044820152647261636c6560d81b606482015260840161042f565b6001600160a01b0385165f90815260fb602052604090208490600101846002811115610b4b57610b4b611eee565b60038110610b5b57610b5b611eab565b0180546001600160a01b0319166001600160a01b0392909216919091179055826002811115610b8c57610b8c611eee565b846001600160a01b0316866001600160a01b03167fea681d3efb830ef032a9c29a7215b5ceeeb546250d2c463dbf87817aecda1bf160405160405180910390a45050505050565b5f80610be083600161088c565b90925090506001600160a01b03821615801590610bfa5750805b1561046e5760405163725068a560e01b81526001600160a01b03848116600483015283169063725068a5906024016020604051808303815f875af1925050508015610c62575060408051601f3d908101601f19168201909252610c5f91810190611f02565b60015b1561046e5750505050565b5f54610100900460ff1615808015610c8b57505f54600160ff909116105b80610ca45750303b158015610ca457505f5460ff166001145b610d075760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161042f565b5f805460ff191660011790558015610d28575f805461ff0019166101001790555b610d31826114e3565b610d3961151a565b8015610d7f575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b5050565b610d8b611aa2565b6001600160a01b038281165f90815260fb60209081526040918290208251606080820185528254909516815283519485019384905293909291840191600184019060039082845b81546001600160a01b03168152600190910190602001808311610dd2575050509183525050604080516060810191829052602090920191906004840190600390825f855b825461010083900a900460ff161515815260206001928301818104948501949093039092029101808411610e165790505050505050815250509050919050565b610e5e610f3d565b609780546001600160a01b0383166001600160a01b03199091168117909155610e8f6065546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f610ed460335460ff1690565b15610f215760405162461bcd60e51b815260206004820152601a60248201527f726573696c69656e74206f7261636c6520697320706175736564000000000000604482015260640161042f565b5f610f2b8361139f565b9050610f368161113e565b9392505050565b6065546001600160a01b031633146105f65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161042f565b6001600160a01b038116610ffb5760405162461bcd60e51b815260206004820152602560248201527f696e76616c696420616365737320636f6e74726f6c206d616e61676572206164604482015264647265737360d81b606482015260840161042f565b60c980546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa09101610d76565b60c9546040516318c5e8ab60e01b81525f916001600160a01b0316906318c5e8ab906110879033908690600401611f47565b602060405180830381865afa1580156110a2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110c69190611f72565b905080610d7f57333083604051634a3fa29360e01b815260040161042f93929190611f8d565b6110f4611548565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b5f80808061114d85600161088c565b9150915080801561116657506001600160a01b03821615155b156111d5576040516341976e0960e01b81526001600160a01b0386811660048301528316906341976e0990602401602060405180830381865afa9250505080156111cd575060408051601f3d908101601f191682019092526111ca91810190611f02565b60015b156111d55792505b5f806111f687868580156111f157506001600160a01b03871615155b611591565b915091505f82141580156112075750805b15611216575095945050505050565b5f80611222898861170c565b915091505f82141580156112335750805b156112445750979650505050505050565b831580159061125257508115155b80156112ef5750604051634be3819f60e11b81526001600160a01b038a8116600483015260248201869052604482018490527f000000000000000000000000000000000000000000000000000000000000000016906397c7033e90606401602060405180830381865afa1580156112cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112ef9190611f72565b15611301575091979650505050505050565b60405162461bcd60e51b815260206004820152601e60248201527f696e76616c696420726573696c69656e74206f7261636c652070726963650000604482015260640161042f565b609780546001600160a01b03191690556103ec81611874565b61136a6118c5565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586111213390565b5f816001600160a01b0381166113c75760405162461bcd60e51b815260040161042f90611ebf565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03160361141c5773bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb91506114dd565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03160361147d577f000000000000000000000000000000000000000000000000000000000000000091506114dd565b826001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114b9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f369190611fc1565b50919050565b5f54610100900460ff166115095760405162461bcd60e51b815260040161042f90611fdc565b61151161190b565b6103ec81611939565b5f54610100900460ff166115405760405162461bcd60e51b815260040161042f90611fdc565b6105f661195f565b60335460ff166105f65760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015260640161042f565b5f805f8061159f875f61088c565b915091508080156115b857506001600160a01b03821615155b156116fb576040516341976e0960e01b81526001600160a01b0388811660048301528316906341976e0990602401602060405180830381865afa92505050801561161f575060408051601f3d908101601f1916820190925261161c91810190611f02565b60015b611630575f80935093505050611704565b8561164357935060019250611704915050565b866116555793505f9250611704915050565b604051634be3819f60e11b81526001600160a01b038981166004830152602482018390526044820189905282917f0000000000000000000000000000000000000000000000000000000000000000909116906397c7033e90606401602060405180830381865afa1580156116cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116ef9190611f72565b94509450505050611704565b5f809350935050505b935093915050565b5f805f8061171b86600261088c565b9150915080801561173457506001600160a01b03821615155b15611864576040516341976e0960e01b81526001600160a01b0387811660048301528316906341976e0990602401602060405180830381865afa92505050801561179b575060408051601f3d908101601f1916820190925261179891810190611f02565b60015b6117ac575f8093509350505061186d565b856117be5793505f925061186d915050565b604051634be3819f60e11b81526001600160a01b038881166004830152602482018390526044820188905282917f0000000000000000000000000000000000000000000000000000000000000000909116906397c7033e90606401602060405180830381865afa158015611834573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118589190611f72565b9450945050505061186d565b5f809350935050505b9250929050565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60335460ff16156105f65760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161042f565b5f54610100900460ff166119315760405162461bcd60e51b815260040161042f90611fdc565b6105f6611991565b5f54610100900460ff166103e35760405162461bcd60e51b815260040161042f90611fdc565b5f54610100900460ff166119855760405162461bcd60e51b815260040161042f90611fdc565b6033805460ff19169055565b5f54610100900460ff166119b75760405162461bcd60e51b815260040161042f90611fdc565b6105f633611349565b8260038101928215611a08579160200282015b82811115611a0857825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906119d3565b50611a14929150611ad6565b5090565b600183019183908215611a08579160200282015f5b83821115611a6957835183826101000a81548160ff02191690831515021790555092602001926001016020815f01049283019260010302611a2d565b8015611a955782816101000a81549060ff02191690556001016020815f01049283019260010302611a69565b5050611a14929150611ad6565b60405180606001604052805f6001600160a01b03168152602001611ac4611aea565b8152602001611ad1611aea565b905290565b5b80821115611a14575f8155600101611ad7565b60405180606001604052806003906020820280368337509192915050565b6001600160a01b03811681146103ec575f80fd5b5f60208284031215611b2c575f80fd5b8135610f3681611b08565b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715611b6e57611b6e611b37565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611b9d57611b9d611b37565b604052919050565b80151581146103ec575f80fd5b5f82601f830112611bc1575f80fd5b611bc9611b4b565b806060840185811115611bda575f80fd5b845b81811015611bfd578035611bef81611ba5565b845260209384019301611bdc565b509095945050505050565b5f60e08284031215611c18575f80fd5b611c20611b4b565b90508135611c2d81611b08565b81526020603f83018413611c3f575f80fd5b611c47611b4b565b806080850186811115611c58575f80fd5b602086015b81811015611c7d578035611c7081611b08565b8452928401928401611c5d565b50816020860152611c8e8782611bb2565b60408601525050505092915050565b5f6020808385031215611cae575f80fd5b823567ffffffffffffffff80821115611cc5575f80fd5b818501915085601f830112611cd8575f80fd5b813581811115611cea57611cea611b37565b611cf8848260051b01611b74565b818152848101925060e0918202840185019188831115611d16575f80fd5b938501935b82851015611d3c57611d2d8986611c08565b84529384019392850192611d1b565b50979650505050505050565b5f60e08284031215611d58575f80fd5b610f368383611c08565b803560038110611d70575f80fd5b919050565b5f805f60608486031215611d87575f80fd5b8335611d9281611b08565b9250611da060208501611d62565b91506040840135611db081611ba5565b809150509250925092565b5f8060408385031215611dcc575f80fd5b8235611dd781611b08565b9150611de560208401611d62565b90509250929050565b5f805f60608486031215611e00575f80fd5b8335611e0b81611b08565b92506020840135611e1b81611b08565b9150611e2960408501611d62565b90509250925092565b81516001600160a01b03908116825260208084015160e084019291908185015f5b6003811015611e72578251851682529183019190830190600101611e53565b50505060408501519150608084015f5b6003811015611ea1578351151582529282019290820190600101611e82565b5050505092915050565b634e487b7160e01b5f52603260045260245ffd5b60208082526015908201527463616e2774206265207a65726f206164647265737360581b604082015260600190565b634e487b7160e01b5f52602160045260245ffd5b5f60208284031215611f12575f80fd5b5051919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6001600160a01b03831681526040602082018190525f90611f6a90830184611f19565b949350505050565b5f60208284031215611f82575f80fd5b8151610f3681611ba5565b6001600160a01b038481168252831660208201526060604082018190525f90611fb890830184611f19565b95945050505050565b5f60208284031215611fd1575f80fd5b8151610f3681611b08565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fea264697066735822122052bae3ef88d52714e86532a1edb53cf9e4cfabd4eeefe3c5396944c9700b7f3e64736f6c63430008190033", - "devdoc": { - "author": "Venus", - "events": { - "Initialized(uint8)": { - "details": "Triggered when the contract has been initialized or reinitialized." - }, - "Paused(address)": { - "details": "Emitted when the pause is triggered by `account`." - }, - "Unpaused(address)": { - "details": "Emitted when the pause is lifted by `account`." - } - }, - "kind": "dev", - "methods": { - "acceptOwnership()": { - "details": "The new owner accepts the ownership transfer." - }, - "constructor": { - "custom:oz-upgrades-unsafe-allow": "constructor", - "details": "nativeMarketAddress can be address(0) if on the chain we do not support native market (e.g vETH on ethereum would not be supported, only vWETH)", - "params": { - "_boundValidator": "Address of the bound validator contract", - "nativeMarketAddress": "The address of a native market (for bsc it would be vBNB address)", - "vaiAddress": "The address of the VAI token (if there is VAI on the deployed chain). Set to address(0) of VAI is not existent." - } - }, - "enableOracle(address,uint8,bool)": { - "custom:access": "Only Governance", - "custom:error": "NotNullAddress error is thrown if asset address is nullTokenConfigExistance error is thrown if token config is not set", - "details": "Configuration for the asset **must** already exist and the asset cannot be 0 address", - "params": { - "asset": "Asset address", - "enable": "Enabled boolean of the oracle", - "role": "Oracle role" - } - }, - "getOracle(address,uint8)": { - "params": { - "asset": "asset address", - "role": "Oracle role" - }, - "returns": { - "enabled": "Enabled flag of the oracle based on token config", - "oracle": "Oracle address based on role" - } - }, - "getPrice(address)": { - "custom:error": "Paused error is thrown when resilent oracle is pausedInvalid resilient oracle price error is thrown if fetched prices from oracle is invalid", - "params": { - "asset": "asset address" - }, - "returns": { - "_0": "price USD price in scaled decimal places." - } - }, - "getTokenConfig(address)": { - "details": "Gets token config by asset address", - "params": { - "asset": "asset address" - }, - "returns": { - "_0": "tokenConfig Config for the asset" - } - }, - "getUnderlyingPrice(address)": { - "custom:error": "Paused error is thrown when resilent oracle is pausedInvalid resilient oracle price error is thrown if fetched prices from oracle is invalid", - "params": { - "vToken": "vToken address" - }, - "returns": { - "_0": "price USD price in scaled decimal places." - } - }, - "initialize(address)": { - "params": { - "accessControlManager_": "Address of the access control manager contract" - } - }, - "owner()": { - "details": "Returns the address of the current owner." - }, - "pause()": { - "custom:access": "Only Governance" - }, - "paused()": { - "details": "Returns true if the contract is paused, and false otherwise." - }, - "pendingOwner()": { - "details": "Returns the address of the pending owner." - }, - "renounceOwnership()": { - "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner." - }, - "setAccessControlManager(address)": { - "custom:access": "Only Governance", - "custom:event": "Emits NewAccessControlManager event", - "details": "Admin function to set address of AccessControlManager", - "params": { - "accessControlManager_": "The new address of the AccessControlManager" - } - }, - "setOracle(address,address,uint8)": { - "custom:access": "Only Governance", - "custom:error": "Null address error if main-role oracle address is nullNotNullAddress error is thrown if asset address is nullTokenConfigExistance error is thrown if token config is not set", - "custom:event": "Emits OracleSet event with asset address, oracle address and role of the oracle for the asset", - "details": "Supplied asset **must** exist and main oracle may not be null", - "params": { - "asset": "Asset address", - "oracle": "Oracle address", - "role": "Oracle role" - } - }, - "setTokenConfig((address,address[3],bool[3]))": { - "custom:access": "Only Governance", - "custom:error": "NotNullAddress is thrown if asset address is nullNotNullAddress is thrown if main-role oracle address for asset is null", - "custom:event": "Emits TokenConfigAdded event when the asset config is set successfully by the authorized account", - "details": "main oracle **must not** be a null address", - "params": { - "tokenConfig": "Token config struct" - } - }, - "setTokenConfigs((address,address[3],bool[3])[])": { - "custom:access": "Only Governance", - "custom:error": "Throws a length error if the length of the token configs array is 0", - "params": { - "tokenConfigs_": "Token config array" - } - }, - "transferOwnership(address)": { - "details": "Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner." - }, - "unpause()": { - "custom:access": "Only Governance" - }, - "updateAssetPrice(address)": { - "details": "This function should always be called before calling getPrice", - "params": { - "asset": "asset address" - } - }, - "updatePrice(address)": { - "details": "This function should always be called before calling getUnderlyingPrice", - "params": { - "vToken": "vToken address" - } - } - }, - "stateVariables": { - "boundValidator": { - "custom:oz-upgrades-unsafe-allow": "state-variable-immutable" - }, - "nativeMarket": { - "custom:oz-upgrades-unsafe-allow": "state-variable-immutable" - }, - "vai": { - "custom:oz-upgrades-unsafe-allow": "state-variable-immutable" - } - }, - "title": "ResilientOracle", - "version": 1 - }, - "userdoc": { - "errors": { - "Unauthorized(address,address,string)": [ - { - "notice": "Thrown when the action is prohibited by AccessControlManager" - } - ] - }, - "events": { - "NewAccessControlManager(address,address)": { - "notice": "Emitted when access control manager contract address is changed" - }, - "OracleEnabled(address,uint256,bool)": { - "notice": "Event emitted when an oracle is enabled or disabled" - }, - "OracleSet(address,address,uint256)": { - "notice": "Event emitted when an oracle is set" - } - }, - "kind": "user", - "methods": { - "NATIVE_TOKEN_ADDR()": { - "notice": "Set this as asset address for Native token on each chain.This is the underlying for vBNB (on bsc) and can serve as any underlying asset of a market that supports native tokens" - }, - "accessControlManager()": { - "notice": "Returns the address of the access control manager contract" - }, - "boundValidator()": { - "notice": "Bound validator contract address" - }, - "constructor": { - "notice": "Constructor for the implementation contract. Sets immutable variables." - }, - "enableOracle(address,uint8,bool)": { - "notice": "Enables/ disables oracle for the input asset. Token config for the input asset **must** exist" - }, - "getOracle(address,uint8)": { - "notice": "Gets oracle and enabled status by asset address" - }, - "getPrice(address)": { - "notice": "Gets price of the asset" - }, - "getUnderlyingPrice(address)": { - "notice": "Gets price of the underlying asset for a given vToken. Validation flow: - Check if the oracle is paused globally - Validate price from main oracle against pivot oracle - Validate price from fallback oracle against pivot oracle if the first validation failed - Validate price from main oracle against fallback oracle if the second validation failed In the case that the pivot oracle is not available but main price is available and validation is successful, main oracle price is returned." - }, - "initialize(address)": { - "notice": "Initializes the contract admin and sets the BoundValidator contract address" - }, - "nativeMarket()": { - "notice": "Native market address" - }, - "pause()": { - "notice": "Pauses oracle" - }, - "setAccessControlManager(address)": { - "notice": "Sets the address of AccessControlManager" - }, - "setOracle(address,address,uint8)": { - "notice": "Sets oracle for a given asset and role." - }, - "setTokenConfig((address,address[3],bool[3]))": { - "notice": "Sets/resets single token configs." - }, - "setTokenConfigs((address,address[3],bool[3])[])": { - "notice": "Batch sets token configs" - }, - "unpause()": { - "notice": "Unpauses oracle" - }, - "updateAssetPrice(address)": { - "notice": "Updates the pivot oracle price. Currently using TWAP" - }, - "updatePrice(address)": { - "notice": "Updates the TWAP pivot oracle price." - }, - "vai()": { - "notice": "VAI address" - } - }, - "notice": "The Resilient Oracle is the main contract that the protocol uses to fetch prices of assets. DeFi protocols are vulnerable to price oracle failures including oracle manipulation and incorrectly reported prices. If only one oracle is used, this creates a single point of failure and opens a vector for attacking the protocol. The Resilient Oracle uses multiple sources and fallback mechanisms to provide accurate prices and protect the protocol from oracle attacks. Currently it includes integrations with Chainlink, Pyth, Binance Oracle and TWAP (Time-Weighted Average Price) oracles. TWAP uses PancakeSwap as the on-chain price source. For every market (vToken) we configure the main, pivot and fallback oracles. The oracles are configured per vToken's underlying asset address. The main oracle oracle is the most trustworthy price source, the pivot oracle is used as a loose sanity checker and the fallback oracle is used as a backup price source. To validate prices returned from two oracles, we use an upper and lower bound ratio that is set for every market. The upper bound ratio represents the deviation between reported price (the price that’s being validated) and the anchor price (the price we are validating against) above which the reported price will be invalidated. The lower bound ratio presents the deviation between reported price and anchor price below which the reported price will be invalidated. So for oracle price to be considered valid the below statement should be true: ``` anchorRatio = anchorPrice/reporterPrice isValid = anchorRatio <= upperBoundAnchorRatio && anchorRatio >= lowerBoundAnchorRatio ``` In most cases, Chainlink is used as the main oracle, TWAP or Pyth oracles are used as the pivot oracle depending on which supports the given market and Binance oracle is used as the fallback oracle. For some markets we may use Pyth or TWAP as the main oracle if the token price is not supported by Chainlink or Binance oracles. For a fetched price to be valid it must be positive and not stagnant. If the price is invalid then we consider the oracle to be stagnant and treat it like it's disabled.", - "version": 1 - }, - "storageLayout": { - "storage": [ - { - "astId": 349, - "contract": "contracts/ResilientOracle.sol:ResilientOracle", - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8" - }, - { - "astId": 352, - "contract": "contracts/ResilientOracle.sol:ResilientOracle", - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool" - }, - { - "astId": 1019, - "contract": "contracts/ResilientOracle.sol:ResilientOracle", - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage" - }, - { - "astId": 533, - "contract": "contracts/ResilientOracle.sol:ResilientOracle", - "label": "_paused", - "offset": 0, - "slot": "51", - "type": "t_bool" - }, - { - "astId": 638, - "contract": "contracts/ResilientOracle.sol:ResilientOracle", - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 221, - "contract": "contracts/ResilientOracle.sol:ResilientOracle", - "label": "_owner", - "offset": 0, - "slot": "101", - "type": "t_address" - }, - { - "astId": 341, - "contract": "contracts/ResilientOracle.sol:ResilientOracle", - "label": "__gap", - "offset": 0, - "slot": "102", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 114, - "contract": "contracts/ResilientOracle.sol:ResilientOracle", - "label": "_pendingOwner", - "offset": 0, - "slot": "151", - "type": "t_address" - }, - { - "astId": 208, - "contract": "contracts/ResilientOracle.sol:ResilientOracle", - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 3586, - "contract": "contracts/ResilientOracle.sol:ResilientOracle", - "label": "_accessControlManager", - "offset": 0, - "slot": "201", - "type": "t_contract(IAccessControlManagerV8)3771" - }, - { - "astId": 3591, - "contract": "contracts/ResilientOracle.sol:ResilientOracle", - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 4137, - "contract": "contracts/ResilientOracle.sol:ResilientOracle", - "label": "tokenConfigs", - "offset": 0, - "slot": "251", - "type": "t_mapping(t_address,t_struct(TokenConfig)4115_storage)" - } - ], - "types": { - "t_address": { - "encoding": "inplace", - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_address)3_storage": { - "base": "t_address", - "encoding": "inplace", - "label": "address[3]", - "numberOfBytes": "96" - }, - "t_array(t_bool)3_storage": { - "base": "t_bool", - "encoding": "inplace", - "label": "bool[3]", - "numberOfBytes": "32" - }, - "t_array(t_uint256)49_storage": { - "base": "t_uint256", - "encoding": "inplace", - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "base": "t_uint256", - "encoding": "inplace", - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "encoding": "inplace", - "label": "bool", - "numberOfBytes": "1" - }, - "t_contract(IAccessControlManagerV8)3771": { - "encoding": "inplace", - "label": "contract IAccessControlManagerV8", - "numberOfBytes": "20" - }, - "t_mapping(t_address,t_struct(TokenConfig)4115_storage)": { - "encoding": "mapping", - "key": "t_address", - "label": "mapping(address => struct ResilientOracle.TokenConfig)", - "numberOfBytes": "32", - "value": "t_struct(TokenConfig)4115_storage" - }, - "t_struct(TokenConfig)4115_storage": { - "encoding": "inplace", - "label": "struct ResilientOracle.TokenConfig", - "members": [ - { - "astId": 4104, - "contract": "contracts/ResilientOracle.sol:ResilientOracle", - "label": "asset", - "offset": 0, - "slot": "0", - "type": "t_address" - }, - { - "astId": 4109, - "contract": "contracts/ResilientOracle.sol:ResilientOracle", - "label": "oracles", - "offset": 0, - "slot": "1", - "type": "t_array(t_address)3_storage" - }, - { - "astId": 4114, - "contract": "contracts/ResilientOracle.sol:ResilientOracle", - "label": "enableFlagsForOracles", - "offset": 0, - "slot": "4", - "type": "t_array(t_bool)3_storage" - } - ], - "numberOfBytes": "160" - }, - "t_uint256": { - "encoding": "inplace", - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "encoding": "inplace", - "label": "uint8", - "numberOfBytes": "1" - } - } - } -} diff --git a/deployments/berachainbepolia/ResilientOracle_Proxy.json b/deployments/berachainbepolia/ResilientOracle_Proxy.json deleted file mode 100644 index 8f727afe..00000000 --- a/deployments/berachainbepolia/ResilientOracle_Proxy.json +++ /dev/null @@ -1,262 +0,0 @@ -{ - "address": "0x150B667d42FB80409f162aB84065f0c8E9B3A7a0", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "admin_", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "stateMutability": "payable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "beacon", - "type": "address" - } - ], - "name": "BeaconUpgraded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "stateMutability": "payable", - "type": "fallback" - }, - { - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "admin_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "implementation_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "stateMutability": "payable", - "type": "receive" - } - ], - "transactionHash": "0x5285573fbfcb66dd1390866443fdffcf44f29b7361732807abd2a4e7e02601a4", - "receipt": { - "to": null, - "from": "0x18BDb05DD1A95677f4381cfb4db52D342dF5C00d", - "contractAddress": "0x150B667d42FB80409f162aB84065f0c8E9B3A7a0", - "transactionIndex": 0, - "gasUsed": "591851", - "logsBloom": "0x00000004000000000000000000000000400000000000000000800400000000000000000000000000000000001020000002000000000000000000000000008040000000000100000000000000000002000001000000000000000000000100000000000000020000000000020000000800000000800000000000000000000000400000000000000000000000000000000000000000000080000000000000800000000000000000000000000000000400000000000000800000000000000000000000000020000000000000000000040000000000000400000000000000000020000000000000000000000000000000000000000800000000000000000000000000", - "blockHash": "0xd029a4b3cb3e41d956e8febc79205550991cec35c228b6b78efa305998fa00c9", - "transactionHash": "0x5285573fbfcb66dd1390866443fdffcf44f29b7361732807abd2a4e7e02601a4", - "logs": [ - { - "transactionIndex": 0, - "blockNumber": 2923593, - "transactionHash": "0x5285573fbfcb66dd1390866443fdffcf44f29b7361732807abd2a4e7e02601a4", - "address": "0x150B667d42FB80409f162aB84065f0c8E9B3A7a0", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x000000000000000000000000ffcb974c4e2c9ee9107d966530d485bdbd98bbaa" - ], - "data": "0x", - "logIndex": 0, - "blockHash": "0xd029a4b3cb3e41d956e8febc79205550991cec35c228b6b78efa305998fa00c9" - }, - { - "transactionIndex": 0, - "blockNumber": 2923593, - "transactionHash": "0x5285573fbfcb66dd1390866443fdffcf44f29b7361732807abd2a4e7e02601a4", - "address": "0x150B667d42FB80409f162aB84065f0c8E9B3A7a0", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x00000000000000000000000018bdb05dd1a95677f4381cfb4db52d342df5c00d" - ], - "data": "0x", - "logIndex": 1, - "blockHash": "0xd029a4b3cb3e41d956e8febc79205550991cec35c228b6b78efa305998fa00c9" - }, - { - "transactionIndex": 0, - "blockNumber": 2923593, - "transactionHash": "0x5285573fbfcb66dd1390866443fdffcf44f29b7361732807abd2a4e7e02601a4", - "address": "0x150B667d42FB80409f162aB84065f0c8E9B3A7a0", - "topics": ["0x66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa0"], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000243313c1cc198ff80756ed2ef14d9dcd94ee762b", - "logIndex": 2, - "blockHash": "0xd029a4b3cb3e41d956e8febc79205550991cec35c228b6b78efa305998fa00c9" - }, - { - "transactionIndex": 0, - "blockNumber": 2923593, - "transactionHash": "0x5285573fbfcb66dd1390866443fdffcf44f29b7361732807abd2a4e7e02601a4", - "address": "0x150B667d42FB80409f162aB84065f0c8E9B3A7a0", - "topics": ["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "logIndex": 3, - "blockHash": "0xd029a4b3cb3e41d956e8febc79205550991cec35c228b6b78efa305998fa00c9" - }, - { - "transactionIndex": 0, - "blockNumber": 2923593, - "transactionHash": "0x5285573fbfcb66dd1390866443fdffcf44f29b7361732807abd2a4e7e02601a4", - "address": "0x150B667d42FB80409f162aB84065f0c8E9B3A7a0", - "topics": ["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"], - "data": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009f0cf4ed50ed01994900ce9ee1ae85bfecd5c66", - "logIndex": 4, - "blockHash": "0xd029a4b3cb3e41d956e8febc79205550991cec35c228b6b78efa305998fa00c9" - } - ], - "blockNumber": 2923593, - "cumulativeGasUsed": "591851", - "status": 1, - "byzantium": true - }, - "args": [ - "0xffCb974c4E2c9EE9107d966530d485bDBd98bBAA", - "0x09f0Cf4eD50ed01994900CE9ee1ae85BFECd5c66", - "0xc4d66de8000000000000000000000000243313c1cc198ff80756ed2ef14d9dcd94ee762b" - ], - "numDeployments": 1, - "solcInputHash": "9703a470efb9e8d7aa23c7bd832fbb1c", - "metadata": "{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_logic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"implementation_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \\\"admin cannot fallback to proxy target\\\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\",\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is upgraded.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"admin()\":{\"details\":\"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\"},\"constructor\":{\"details\":\"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\"},\"implementation()\":{\"details\":\"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\"},\"upgradeTo(address)\":{\"details\":\"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\"},\"upgradeToAndCall(address,bytes)\":{\"details\":\"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"hardhat-deploy/solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol\":\"OptimizedTransparentUpgradeableProxy\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"hardhat-deploy/solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x93b4e21c931252739a1ec13ea31d3d35a5c068be3163ccab83e4d70c40355f03\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializating the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256(\\\"eip1967.proxy.implementation\\\")) - 1));\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n\",\"keccak256\":\"0x6309f9f39dc6f4f45a24f296543867aa358e32946cd6b2874627a996d606b3a0\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967Upgrade {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view virtual returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Emitted when the beacon is upgraded.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(Address.isContract(IBeacon(newBeacon).implementation()), \\\"ERC1967: beacon implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(\\n address newBeacon,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x17668652127feebed0ce8d9431ef95ccc8c4292f03e3b8cf06c6ca16af396633\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internall call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overriden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xd5d1fd16e9faff7fcb3a52e02a8d49156f42a38a03f07b5f1810c21c2149a8ab\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n }\\n}\\n\",\"keccak256\":\"0x3777e696b62134e6177440dbe6e6601c0c156a443f57167194b67e75527439de\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/StorageSlot.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xfe1b7a9aa2a530a9e705b220e26cd584e2fbdc9602a3a1066032b12816b46aca\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/transparent/TransparentUpgradeableProxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../openzeppelin/proxy/ERC1967/ERC1967Proxy.sol\\\";\\n\\n/**\\n * @dev This contract implements a proxy that is upgradeable by an admin.\\n *\\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\\n * clashing], which can potentially be used in an attack, this contract uses the\\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\\n * things that go hand in hand:\\n *\\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\\n * that call matches one of the admin functions exposed by the proxy itself.\\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\\n * \\\"admin cannot fallback to proxy target\\\".\\n *\\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\\n * the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due\\n * to sudden errors when trying to call a function from the proxy implementation.\\n *\\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\\n */\\ncontract OptimizedTransparentUpgradeableProxy is ERC1967Proxy {\\n address internal immutable _ADMIN;\\n\\n /**\\n * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\\n * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\\n */\\n constructor(\\n address _logic,\\n address admin_,\\n bytes memory _data\\n ) payable ERC1967Proxy(_logic, _data) {\\n assert(_ADMIN_SLOT == bytes32(uint256(keccak256(\\\"eip1967.proxy.admin\\\")) - 1));\\n _ADMIN = admin_;\\n\\n // still store it to work with EIP-1967\\n bytes32 slot = _ADMIN_SLOT;\\n // solhint-disable-next-line no-inline-assembly\\n assembly {\\n sstore(slot, admin_)\\n }\\n emit AdminChanged(address(0), admin_);\\n }\\n\\n /**\\n * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\\n */\\n modifier ifAdmin() {\\n if (msg.sender == _getAdmin()) {\\n _;\\n } else {\\n _fallback();\\n }\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n */\\n function admin() external ifAdmin returns (address admin_) {\\n admin_ = _getAdmin();\\n }\\n\\n /**\\n * @dev Returns the current implementation.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\\n */\\n function implementation() external ifAdmin returns (address implementation_) {\\n implementation_ = _implementation();\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\\n */\\n function upgradeTo(address newImplementation) external ifAdmin {\\n _upgradeToAndCall(newImplementation, bytes(\\\"\\\"), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\\n * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\\n * proxied contract.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\\n */\\n function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {\\n _upgradeToAndCall(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _admin() internal view virtual returns (address) {\\n return _getAdmin();\\n }\\n\\n /**\\n * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.\\n */\\n function _beforeFallback() internal virtual override {\\n require(msg.sender != _getAdmin(), \\\"TransparentUpgradeableProxy: admin cannot fallback to proxy target\\\");\\n super._beforeFallback();\\n }\\n\\n function _getAdmin() internal view virtual override returns (address) {\\n return _ADMIN;\\n }\\n}\\n\",\"keccak256\":\"0xa30117644e27fa5b49e162aae2f62b36c1aca02f801b8c594d46e2024963a534\",\"license\":\"MIT\"}},\"version\":1}", - "bytecode": "0x60a0604052604051610c8f380380610c8f8339810160408190526100229161039f565b828161004f60017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd61046a565b5f80516020610c488339815191521461006a5761006a610489565b61007582825f610123565b506100a3905060017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610461046a565b5f80516020610c28833981519152146100be576100be610489565b6001600160a01b03821660808190525f80516020610c28833981519152838155604080515f8152602081019390935290917f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a1505050506104e8565b61012c8361014e565b5f825111806101385750805b1561014957610147838361018d565b505b505050565b610157816101bb565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606101b28383604051806060016040528060278152602001610c686027913961025b565b90505b92915050565b6001600160a01b0381163b61022d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b5f80516020610c4883398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b60606001600160a01b0384163b6102c35760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610224565b5f80856001600160a01b0316856040516102dd919061049d565b5f60405180830381855af49150503d805f8114610315576040519150601f19603f3d011682016040523d82523d5f602084013e61031a565b606091505b50909250905061032b828286610337565b925050505b9392505050565b60608315610346575081610330565b8251156103565782518084602001fd5b8160405162461bcd60e51b815260040161022491906104b3565b80516001600160a01b0381168114610386575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f805f606084860312156103b1575f80fd5b6103ba84610370565b92506103c860208501610370565b60408501519092506001600160401b03808211156103e4575f80fd5b818601915086601f8301126103f7575f80fd5b8151818111156104095761040961038b565b604051601f8201601f19908116603f011681019083821181831017156104315761043161038b565b81604052828152896020848701011115610449575f80fd5b8260208601602083015e5f6020848301015280955050505050509250925092565b818103818111156101b557634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52600160045260245ffd5b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6080516107066105225f395f818160eb0152818161013f015281816101bf0152818161020801528181610239015261025d01526107065ff3fe608060405260043610610042575f3560e01c80633659cfe6146100595780634f1ef286146100785780635c60da1b1461008b578063f851a440146100bb57610051565b366100515761004f6100cf565b005b61004f6100cf565b348015610064575f80fd5b5061004f6100733660046105c9565b6100e9565b61004f6100863660046105e2565b61013d565b348015610096575f80fd5b5061009f6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c6575f80fd5b5061009f610205565b6100d761025b565b6100e76100e2610309565b61033b565b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610135576101328160405180602001604052805f8152505f610359565b50565b6101326100cf565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101b4576101af8383838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525060019250610359915050565b505050565b6101af6100cf565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101fa576101f5610309565b905090565b6102026100cf565b90565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101fa57507f000000000000000000000000000000000000000000000000000000000000000090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036100e75760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b5f6101f57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b365f80375f80365f845af43d5f803e808015610355573d5ff35b3d5ffd5b61036283610383565b5f8251118061036e5750805b156101af5761037d83836103c2565b50505050565b61038c816103ee565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103e783836040518060600160405280602781526020016106aa6027913961049c565b9392505050565b6001600160a01b0381163b61045b5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610300565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60606001600160a01b0384163b6105045760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610300565b5f80856001600160a01b03168560405161051e919061065e565b5f60405180830381855af49150503d805f8114610556576040519150601f19603f3d011682016040523d82523d5f602084013e61055b565b606091505b509150915061056b828286610575565b9695505050505050565b606083156105845750816103e7565b8251156105945782518084602001fd5b8160405162461bcd60e51b81526004016103009190610674565b80356001600160a01b03811681146105c4575f80fd5b919050565b5f602082840312156105d9575f80fd5b6103e7826105ae565b5f805f604084860312156105f4575f80fd5b6105fd846105ae565b9250602084013567ffffffffffffffff80821115610619575f80fd5b818601915086601f83011261062c575f80fd5b81358181111561063a575f80fd5b87602082850101111561064b575f80fd5b6020830194508093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d447ec2a4b47962d9e959ca0ec6571d77747999259501e773b66fdcaef0e50bf64736f6c63430008190033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564", - "deployedBytecode": "0x608060405260043610610042575f3560e01c80633659cfe6146100595780634f1ef286146100785780635c60da1b1461008b578063f851a440146100bb57610051565b366100515761004f6100cf565b005b61004f6100cf565b348015610064575f80fd5b5061004f6100733660046105c9565b6100e9565b61004f6100863660046105e2565b61013d565b348015610096575f80fd5b5061009f6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c6575f80fd5b5061009f610205565b6100d761025b565b6100e76100e2610309565b61033b565b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610135576101328160405180602001604052805f8152505f610359565b50565b6101326100cf565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101b4576101af8383838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525060019250610359915050565b505050565b6101af6100cf565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101fa576101f5610309565b905090565b6102026100cf565b90565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101fa57507f000000000000000000000000000000000000000000000000000000000000000090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036100e75760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b5f6101f57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b365f80375f80365f845af43d5f803e808015610355573d5ff35b3d5ffd5b61036283610383565b5f8251118061036e5750805b156101af5761037d83836103c2565b50505050565b61038c816103ee565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103e783836040518060600160405280602781526020016106aa6027913961049c565b9392505050565b6001600160a01b0381163b61045b5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610300565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60606001600160a01b0384163b6105045760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610300565b5f80856001600160a01b03168560405161051e919061065e565b5f60405180830381855af49150503d805f8114610556576040519150601f19603f3d011682016040523d82523d5f602084013e61055b565b606091505b509150915061056b828286610575565b9695505050505050565b606083156105845750816103e7565b8251156105945782518084602001fd5b8160405162461bcd60e51b81526004016103009190610674565b80356001600160a01b03811681146105c4575f80fd5b919050565b5f602082840312156105d9575f80fd5b6103e7826105ae565b5f805f604084860312156105f4575f80fd5b6105fd846105ae565b9250602084013567ffffffffffffffff80821115610619575f80fd5b818601915086601f83011261062c575f80fd5b81358181111561063a575f80fd5b87602082850101111561064b575f80fd5b6020830194508093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d447ec2a4b47962d9e959ca0ec6571d77747999259501e773b66fdcaef0e50bf64736f6c63430008190033", - "devdoc": { - "details": "This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \"admin cannot fallback to proxy target\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.", - "events": { - "AdminChanged(address,address)": { - "details": "Emitted when the admin account has changed." - }, - "BeaconUpgraded(address)": { - "details": "Emitted when the beacon is upgraded." - }, - "Upgraded(address)": { - "details": "Emitted when the implementation is upgraded." - } - }, - "kind": "dev", - "methods": { - "admin()": { - "details": "Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`" - }, - "constructor": { - "details": "Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}." - }, - "implementation()": { - "details": "Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`" - }, - "upgradeTo(address)": { - "details": "Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}." - }, - "upgradeToAndCall(address,bytes)": { - "details": "Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}." - } - }, - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": {}, - "version": 1 - }, - "storageLayout": { - "storage": [], - "types": null - } -} diff --git a/deployments/berachainbepolia/solcInputs/9703a470efb9e8d7aa23c7bd832fbb1c.json b/deployments/berachainbepolia/solcInputs/9703a470efb9e8d7aa23c7bd832fbb1c.json deleted file mode 100644 index 2c8899ea..00000000 --- a/deployments/berachainbepolia/solcInputs/9703a470efb9e8d7aa23c7bd832fbb1c.json +++ /dev/null @@ -1,337 +0,0 @@ -{ - "language": "Solidity", - "sources": { - "@chainlink/contracts/src/v0.8/interfaces/AggregatorInterface.sol": { - "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\ninterface AggregatorInterface {\n function latestAnswer() external view returns (int256);\n\n function latestTimestamp() external view returns (uint256);\n\n function latestRound() external view returns (uint256);\n\n function getAnswer(uint256 roundId) external view returns (int256);\n\n function getTimestamp(uint256 roundId) external view returns (uint256);\n\n event AnswerUpdated(int256 indexed current, uint256 indexed roundId, uint256 updatedAt);\n\n event NewRound(uint256 indexed roundId, address indexed startedBy, uint256 startedAt);\n}\n" - }, - "@chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol": { - "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport \"./AggregatorInterface.sol\";\nimport \"./AggregatorV3Interface.sol\";\n\ninterface AggregatorV2V3Interface is AggregatorInterface, AggregatorV3Interface {}\n" - }, - "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol": { - "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\ninterface AggregatorV3Interface {\n function decimals() external view returns (uint8);\n\n function description() external view returns (string memory);\n\n function version() external view returns (uint256);\n\n function getRoundData(uint80 _roundId)\n external\n view\n returns (\n uint80 roundId,\n int256 answer,\n uint256 startedAt,\n uint256 updatedAt,\n uint80 answeredInRound\n );\n\n function latestRoundData()\n external\n view\n returns (\n uint80 roundId,\n int256 answer,\n uint256 startedAt,\n uint256 updatedAt,\n uint80 answeredInRound\n );\n}\n" - }, - "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol": { - "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable2Step.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./OwnableUpgradeable.sol\";\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Contract module which provides access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership} and {acceptOwnership}.\n *\n * This module is used through inheritance. It will make available all functions\n * from parent (Ownable).\n */\nabstract contract Ownable2StepUpgradeable is Initializable, OwnableUpgradeable {\n address private _pendingOwner;\n\n event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner);\n\n function __Ownable2Step_init() internal onlyInitializing {\n __Ownable_init_unchained();\n }\n\n function __Ownable2Step_init_unchained() internal onlyInitializing {\n }\n /**\n * @dev Returns the address of the pending owner.\n */\n function pendingOwner() public view virtual returns (address) {\n return _pendingOwner;\n }\n\n /**\n * @dev Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one.\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public virtual override onlyOwner {\n _pendingOwner = newOwner;\n emit OwnershipTransferStarted(owner(), newOwner);\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`) and deletes any pending owner.\n * Internal function without access restriction.\n */\n function _transferOwnership(address newOwner) internal virtual override {\n delete _pendingOwner;\n super._transferOwnership(newOwner);\n }\n\n /**\n * @dev The new owner accepts the ownership transfer.\n */\n function acceptOwnership() public virtual {\n address sender = _msgSender();\n require(pendingOwner() == sender, \"Ownable2Step: caller is not the new owner\");\n _transferOwnership(sender);\n }\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[49] private __gap;\n}\n" - }, - "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol": { - "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../utils/ContextUpgradeable.sol\";\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\n address private _owner;\n\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n /**\n * @dev Initializes the contract setting the deployer as the initial owner.\n */\n function __Ownable_init() internal onlyInitializing {\n __Ownable_init_unchained();\n }\n\n function __Ownable_init_unchained() internal onlyInitializing {\n _transferOwnership(_msgSender());\n }\n\n /**\n * @dev Throws if called by any account other than the owner.\n */\n modifier onlyOwner() {\n _checkOwner();\n _;\n }\n\n /**\n * @dev Returns the address of the current owner.\n */\n function owner() public view virtual returns (address) {\n return _owner;\n }\n\n /**\n * @dev Throws if the sender is not the owner.\n */\n function _checkOwner() internal view virtual {\n require(owner() == _msgSender(), \"Ownable: caller is not the owner\");\n }\n\n /**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby disabling any functionality that is only available to the owner.\n */\n function renounceOwnership() public virtual onlyOwner {\n _transferOwnership(address(0));\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public virtual onlyOwner {\n require(newOwner != address(0), \"Ownable: new owner is the zero address\");\n _transferOwnership(newOwner);\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Internal function without access restriction.\n */\n function _transferOwnership(address newOwner) internal virtual {\n address oldOwner = _owner;\n _owner = newOwner;\n emit OwnershipTransferred(oldOwner, newOwner);\n }\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[49] private __gap;\n}\n" - }, - "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol": { - "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\n\npragma solidity ^0.8.2;\n\nimport \"../../utils/AddressUpgradeable.sol\";\n\n/**\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n *\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n * reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n * case an upgrade adds a module that needs to be initialized.\n *\n * For example:\n *\n * [.hljs-theme-light.nopadding]\n * ```solidity\n * contract MyToken is ERC20Upgradeable {\n * function initialize() initializer public {\n * __ERC20_init(\"MyToken\", \"MTK\");\n * }\n * }\n *\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n * function initializeV2() reinitializer(2) public {\n * __ERC20Permit_init(\"MyToken\");\n * }\n * }\n * ```\n *\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n *\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n *\n * [CAUTION]\n * ====\n * Avoid leaving a contract uninitialized.\n *\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n *\n * [.hljs-theme-light.nopadding]\n * ```\n * /// @custom:oz-upgrades-unsafe-allow constructor\n * constructor() {\n * _disableInitializers();\n * }\n * ```\n * ====\n */\nabstract contract Initializable {\n /**\n * @dev Indicates that the contract has been initialized.\n * @custom:oz-retyped-from bool\n */\n uint8 private _initialized;\n\n /**\n * @dev Indicates that the contract is in the process of being initialized.\n */\n bool private _initializing;\n\n /**\n * @dev Triggered when the contract has been initialized or reinitialized.\n */\n event Initialized(uint8 version);\n\n /**\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n * `onlyInitializing` functions can be used to initialize parent contracts.\n *\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\n * constructor.\n *\n * Emits an {Initialized} event.\n */\n modifier initializer() {\n bool isTopLevelCall = !_initializing;\n require(\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\n \"Initializable: contract is already initialized\"\n );\n _initialized = 1;\n if (isTopLevelCall) {\n _initializing = true;\n }\n _;\n if (isTopLevelCall) {\n _initializing = false;\n emit Initialized(1);\n }\n }\n\n /**\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n * used to initialize parent contracts.\n *\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\n * are added through upgrades and that require initialization.\n *\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n * cannot be nested. If one is invoked in the context of another, execution will revert.\n *\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n * a contract, executing them in the right order is up to the developer or operator.\n *\n * WARNING: setting the version to 255 will prevent any future reinitialization.\n *\n * Emits an {Initialized} event.\n */\n modifier reinitializer(uint8 version) {\n require(!_initializing && _initialized < version, \"Initializable: contract is already initialized\");\n _initialized = version;\n _initializing = true;\n _;\n _initializing = false;\n emit Initialized(version);\n }\n\n /**\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\n */\n modifier onlyInitializing() {\n require(_initializing, \"Initializable: contract is not initializing\");\n _;\n }\n\n /**\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n * through proxies.\n *\n * Emits an {Initialized} event the first time it is successfully executed.\n */\n function _disableInitializers() internal virtual {\n require(!_initializing, \"Initializable: contract is initializing\");\n if (_initialized != type(uint8).max) {\n _initialized = type(uint8).max;\n emit Initialized(type(uint8).max);\n }\n }\n\n /**\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\n */\n function _getInitializedVersion() internal view returns (uint8) {\n return _initialized;\n }\n\n /**\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\n */\n function _isInitializing() internal view returns (bool) {\n return _initializing;\n }\n}\n" - }, - "@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol": { - "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../utils/ContextUpgradeable.sol\";\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Contract module which allows children to implement an emergency stop\n * mechanism that can be triggered by an authorized account.\n *\n * This module is used through inheritance. It will make available the\n * modifiers `whenNotPaused` and `whenPaused`, which can be applied to\n * the functions of your contract. Note that they will not be pausable by\n * simply including this module, only once the modifiers are put in place.\n */\nabstract contract PausableUpgradeable is Initializable, ContextUpgradeable {\n /**\n * @dev Emitted when the pause is triggered by `account`.\n */\n event Paused(address account);\n\n /**\n * @dev Emitted when the pause is lifted by `account`.\n */\n event Unpaused(address account);\n\n bool private _paused;\n\n /**\n * @dev Initializes the contract in unpaused state.\n */\n function __Pausable_init() internal onlyInitializing {\n __Pausable_init_unchained();\n }\n\n function __Pausable_init_unchained() internal onlyInitializing {\n _paused = false;\n }\n\n /**\n * @dev Modifier to make a function callable only when the contract is not paused.\n *\n * Requirements:\n *\n * - The contract must not be paused.\n */\n modifier whenNotPaused() {\n _requireNotPaused();\n _;\n }\n\n /**\n * @dev Modifier to make a function callable only when the contract is paused.\n *\n * Requirements:\n *\n * - The contract must be paused.\n */\n modifier whenPaused() {\n _requirePaused();\n _;\n }\n\n /**\n * @dev Returns true if the contract is paused, and false otherwise.\n */\n function paused() public view virtual returns (bool) {\n return _paused;\n }\n\n /**\n * @dev Throws if the contract is paused.\n */\n function _requireNotPaused() internal view virtual {\n require(!paused(), \"Pausable: paused\");\n }\n\n /**\n * @dev Throws if the contract is not paused.\n */\n function _requirePaused() internal view virtual {\n require(paused(), \"Pausable: not paused\");\n }\n\n /**\n * @dev Triggers stopped state.\n *\n * Requirements:\n *\n * - The contract must not be paused.\n */\n function _pause() internal virtual whenNotPaused {\n _paused = true;\n emit Paused(_msgSender());\n }\n\n /**\n * @dev Returns to normal state.\n *\n * Requirements:\n *\n * - The contract must be paused.\n */\n function _unpause() internal virtual whenPaused {\n _paused = false;\n emit Unpaused(_msgSender());\n }\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[49] private __gap;\n}\n" - }, - "@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol": { - "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\n\npragma solidity ^0.8.1;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary AddressUpgradeable {\n /**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n * ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a contract.\n *\n * Among others, `isContract` will return false for the following\n * types of addresses:\n *\n * - an externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a contract lived, but was destroyed\n *\n * Furthermore, `isContract` will also return true if the target contract within\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n * which only has an effect at the end of a transaction.\n * ====\n *\n * [IMPORTANT]\n * ====\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\n *\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n * constructor.\n * ====\n */\n function isContract(address account) internal view returns (bool) {\n // This method relies on extcodesize/address.code.length, which returns 0\n // for contracts in construction, since the code is only stored at the end\n // of the constructor execution.\n\n return account.code.length > 0;\n }\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n (bool success, ) = recipient.call{value: amount}(\"\");\n require(success, \"Address: unable to send value, recipient may have reverted\");\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason, it is bubbled up by this\n * function (like regular Solidity function calls).\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n *\n * _Available since v3.1._\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, \"Address: low-level call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n * `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n * with `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value,\n string memory errorMessage\n ) internal returns (bytes memory) {\n require(address(this).balance >= value, \"Address: insufficient balance for call\");\n (bool success, bytes memory returndata) = target.call{value: value}(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n return functionStaticCall(target, data, \"Address: low-level static call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n (bool success, bytes memory returndata) = target.staticcall(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n *\n * _Available since v4.8._\n */\n function verifyCallResultFromTarget(\n address target,\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n if (success) {\n if (returndata.length == 0) {\n // only check isContract if the call was successful and the return data is empty\n // otherwise we already know that it was a contract\n require(isContract(target), \"Address: call to non-contract\");\n }\n return returndata;\n } else {\n _revert(returndata, errorMessage);\n }\n }\n\n /**\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n * revert reason or using the provided one.\n *\n * _Available since v4.3._\n */\n function verifyCallResult(\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal pure returns (bytes memory) {\n if (success) {\n return returndata;\n } else {\n _revert(returndata, errorMessage);\n }\n }\n\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n /// @solidity memory-safe-assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(errorMessage);\n }\n }\n}\n" - }, - "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol": { - "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\n\npragma solidity ^0.8.0;\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract ContextUpgradeable is Initializable {\n function __Context_init() internal onlyInitializing {\n }\n\n function __Context_init_unchained() internal onlyInitializing {\n }\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n\n function _contextSuffixLength() internal view virtual returns (uint256) {\n return 0;\n }\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[50] private __gap;\n}\n" - }, - "@openzeppelin/contracts/access/IAccessControl.sol": { - "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev External interface of AccessControl declared to support ERC165 detection.\n */\ninterface IAccessControl {\n /**\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n *\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n * {RoleAdminChanged} not being emitted signaling this.\n *\n * _Available since v3.1._\n */\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\n\n /**\n * @dev Emitted when `account` is granted `role`.\n *\n * `sender` is the account that originated the contract call, an admin role\n * bearer except when using {AccessControl-_setupRole}.\n */\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\n\n /**\n * @dev Emitted when `account` is revoked `role`.\n *\n * `sender` is the account that originated the contract call:\n * - if using `revokeRole`, it is the admin role bearer\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\n */\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\n\n /**\n * @dev Returns `true` if `account` has been granted `role`.\n */\n function hasRole(bytes32 role, address account) external view returns (bool);\n\n /**\n * @dev Returns the admin role that controls `role`. See {grantRole} and\n * {revokeRole}.\n *\n * To change a role's admin, use {AccessControl-_setRoleAdmin}.\n */\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\n\n /**\n * @dev Grants `role` to `account`.\n *\n * If `account` had not been already granted `role`, emits a {RoleGranted}\n * event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function grantRole(bytes32 role, address account) external;\n\n /**\n * @dev Revokes `role` from `account`.\n *\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function revokeRole(bytes32 role, address account) external;\n\n /**\n * @dev Revokes `role` from the calling account.\n *\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\n * purpose is to provide a mechanism for accounts to lose their privileges\n * if they are compromised (such as when a trusted device is misplaced).\n *\n * If the calling account had been granted `role`, emits a {RoleRevoked}\n * event.\n *\n * Requirements:\n *\n * - the caller must be `account`.\n */\n function renounceRole(bytes32 role, address account) external;\n}\n" - }, - "@openzeppelin/contracts/access/Ownable.sol": { - "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable is Context {\n address private _owner;\n\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n /**\n * @dev Initializes the contract setting the deployer as the initial owner.\n */\n constructor() {\n _transferOwnership(_msgSender());\n }\n\n /**\n * @dev Throws if called by any account other than the owner.\n */\n modifier onlyOwner() {\n _checkOwner();\n _;\n }\n\n /**\n * @dev Returns the address of the current owner.\n */\n function owner() public view virtual returns (address) {\n return _owner;\n }\n\n /**\n * @dev Throws if the sender is not the owner.\n */\n function _checkOwner() internal view virtual {\n require(owner() == _msgSender(), \"Ownable: caller is not the owner\");\n }\n\n /**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby disabling any functionality that is only available to the owner.\n */\n function renounceOwnership() public virtual onlyOwner {\n _transferOwnership(address(0));\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public virtual onlyOwner {\n require(newOwner != address(0), \"Ownable: new owner is the zero address\");\n _transferOwnership(newOwner);\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Internal function without access restriction.\n */\n function _transferOwnership(address newOwner) internal virtual {\n address oldOwner = _owner;\n _owner = newOwner;\n emit OwnershipTransferred(oldOwner, newOwner);\n }\n}\n" - }, - "@openzeppelin/contracts/token/ERC20/ERC20.sol": { - "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC20.sol\";\nimport \"./extensions/IERC20Metadata.sol\";\nimport \"../../utils/Context.sol\";\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n * For a generic mechanism see {ERC20PresetMinterPauser}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * The default value of {decimals} is 18. To change this, you should override\n * this function so it returns a different value.\n *\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\n * instead returning `false` on failure. This behavior is nonetheless\n * conventional and does not conflict with the expectations of ERC20\n * applications.\n *\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n * This allows applications to reconstruct the allowance for all accounts just\n * by listening to said events. Other implementations of the EIP may not emit\n * these events, as it isn't required by the specification.\n *\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n * functions have been added to mitigate the well-known issues around setting\n * allowances. See {IERC20-approve}.\n */\ncontract ERC20 is Context, IERC20, IERC20Metadata {\n mapping(address => uint256) private _balances;\n\n mapping(address => mapping(address => uint256)) private _allowances;\n\n uint256 private _totalSupply;\n\n string private _name;\n string private _symbol;\n\n /**\n * @dev Sets the values for {name} and {symbol}.\n *\n * All two of these values are immutable: they can only be set once during\n * construction.\n */\n constructor(string memory name_, string memory symbol_) {\n _name = name_;\n _symbol = symbol_;\n }\n\n /**\n * @dev Returns the name of the token.\n */\n function name() public view virtual override returns (string memory) {\n return _name;\n }\n\n /**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */\n function symbol() public view virtual override returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev Returns the number of decimals used to get its user representation.\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\n * be displayed to a user as `5.05` (`505 / 10 ** 2`).\n *\n * Tokens usually opt for a value of 18, imitating the relationship between\n * Ether and Wei. This is the default value returned by this function, unless\n * it's overridden.\n *\n * NOTE: This information is only used for _display_ purposes: it in\n * no way affects any of the arithmetic of the contract, including\n * {IERC20-balanceOf} and {IERC20-transfer}.\n */\n function decimals() public view virtual override returns (uint8) {\n return 18;\n }\n\n /**\n * @dev See {IERC20-totalSupply}.\n */\n function totalSupply() public view virtual override returns (uint256) {\n return _totalSupply;\n }\n\n /**\n * @dev See {IERC20-balanceOf}.\n */\n function balanceOf(address account) public view virtual override returns (uint256) {\n return _balances[account];\n }\n\n /**\n * @dev See {IERC20-transfer}.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - the caller must have a balance of at least `amount`.\n */\n function transfer(address to, uint256 amount) public virtual override returns (bool) {\n address owner = _msgSender();\n _transfer(owner, to, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-allowance}.\n */\n function allowance(address owner, address spender) public view virtual override returns (uint256) {\n return _allowances[owner][spender];\n }\n\n /**\n * @dev See {IERC20-approve}.\n *\n * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on\n * `transferFrom`. This is semantically equivalent to an infinite approval.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function approve(address spender, uint256 amount) public virtual override returns (bool) {\n address owner = _msgSender();\n _approve(owner, spender, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-transferFrom}.\n *\n * Emits an {Approval} event indicating the updated allowance. This is not\n * required by the EIP. See the note at the beginning of {ERC20}.\n *\n * NOTE: Does not update the allowance if the current allowance\n * is the maximum `uint256`.\n *\n * Requirements:\n *\n * - `from` and `to` cannot be the zero address.\n * - `from` must have a balance of at least `amount`.\n * - the caller must have allowance for ``from``'s tokens of at least\n * `amount`.\n */\n function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {\n address spender = _msgSender();\n _spendAllowance(from, spender, amount);\n _transfer(from, to, amount);\n return true;\n }\n\n /**\n * @dev Atomically increases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\n address owner = _msgSender();\n _approve(owner, spender, allowance(owner, spender) + addedValue);\n return true;\n }\n\n /**\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `spender` must have allowance for the caller of at least\n * `subtractedValue`.\n */\n function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\n address owner = _msgSender();\n uint256 currentAllowance = allowance(owner, spender);\n require(currentAllowance >= subtractedValue, \"ERC20: decreased allowance below zero\");\n unchecked {\n _approve(owner, spender, currentAllowance - subtractedValue);\n }\n\n return true;\n }\n\n /**\n * @dev Moves `amount` of tokens from `from` to `to`.\n *\n * This internal function is equivalent to {transfer}, and can be used to\n * e.g. implement automatic token fees, slashing mechanisms, etc.\n *\n * Emits a {Transfer} event.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `from` must have a balance of at least `amount`.\n */\n function _transfer(address from, address to, uint256 amount) internal virtual {\n require(from != address(0), \"ERC20: transfer from the zero address\");\n require(to != address(0), \"ERC20: transfer to the zero address\");\n\n _beforeTokenTransfer(from, to, amount);\n\n uint256 fromBalance = _balances[from];\n require(fromBalance >= amount, \"ERC20: transfer amount exceeds balance\");\n unchecked {\n _balances[from] = fromBalance - amount;\n // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by\n // decrementing then incrementing.\n _balances[to] += amount;\n }\n\n emit Transfer(from, to, amount);\n\n _afterTokenTransfer(from, to, amount);\n }\n\n /** @dev Creates `amount` tokens and assigns them to `account`, increasing\n * the total supply.\n *\n * Emits a {Transfer} event with `from` set to the zero address.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n */\n function _mint(address account, uint256 amount) internal virtual {\n require(account != address(0), \"ERC20: mint to the zero address\");\n\n _beforeTokenTransfer(address(0), account, amount);\n\n _totalSupply += amount;\n unchecked {\n // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.\n _balances[account] += amount;\n }\n emit Transfer(address(0), account, amount);\n\n _afterTokenTransfer(address(0), account, amount);\n }\n\n /**\n * @dev Destroys `amount` tokens from `account`, reducing the\n * total supply.\n *\n * Emits a {Transfer} event with `to` set to the zero address.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n * - `account` must have at least `amount` tokens.\n */\n function _burn(address account, uint256 amount) internal virtual {\n require(account != address(0), \"ERC20: burn from the zero address\");\n\n _beforeTokenTransfer(account, address(0), amount);\n\n uint256 accountBalance = _balances[account];\n require(accountBalance >= amount, \"ERC20: burn amount exceeds balance\");\n unchecked {\n _balances[account] = accountBalance - amount;\n // Overflow not possible: amount <= accountBalance <= totalSupply.\n _totalSupply -= amount;\n }\n\n emit Transfer(account, address(0), amount);\n\n _afterTokenTransfer(account, address(0), amount);\n }\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n *\n * This internal function is equivalent to `approve`, and can be used to\n * e.g. set automatic allowances for certain subsystems, etc.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `owner` cannot be the zero address.\n * - `spender` cannot be the zero address.\n */\n function _approve(address owner, address spender, uint256 amount) internal virtual {\n require(owner != address(0), \"ERC20: approve from the zero address\");\n require(spender != address(0), \"ERC20: approve to the zero address\");\n\n _allowances[owner][spender] = amount;\n emit Approval(owner, spender, amount);\n }\n\n /**\n * @dev Updates `owner` s allowance for `spender` based on spent `amount`.\n *\n * Does not update the allowance amount in case of infinite allowance.\n * Revert if not enough allowance is available.\n *\n * Might emit an {Approval} event.\n */\n function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {\n uint256 currentAllowance = allowance(owner, spender);\n if (currentAllowance != type(uint256).max) {\n require(currentAllowance >= amount, \"ERC20: insufficient allowance\");\n unchecked {\n _approve(owner, spender, currentAllowance - amount);\n }\n }\n }\n\n /**\n * @dev Hook that is called before any transfer of tokens. This includes\n * minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * will be transferred to `to`.\n * - when `from` is zero, `amount` tokens will be minted for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}\n\n /**\n * @dev Hook that is called after any transfer of tokens. This includes\n * minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * has been transferred to `to`.\n * - when `from` is zero, `amount` tokens have been minted for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens have been burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}\n}\n" - }, - "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": { - "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC20.sol\";\n\n/**\n * @dev Interface for the optional metadata functions from the ERC20 standard.\n *\n * _Available since v4.1._\n */\ninterface IERC20Metadata is IERC20 {\n /**\n * @dev Returns the name of the token.\n */\n function name() external view returns (string memory);\n\n /**\n * @dev Returns the symbol of the token.\n */\n function symbol() external view returns (string memory);\n\n /**\n * @dev Returns the decimals places of the token.\n */\n function decimals() external view returns (uint8);\n}\n" - }, - "@openzeppelin/contracts/token/ERC20/IERC20.sol": { - "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n /**\n * @dev Returns the amount of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address to, uint256 amount) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 amount) external returns (bool);\n\n /**\n * @dev Moves `amount` tokens from `from` to `to` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\n}\n" - }, - "@openzeppelin/contracts/utils/Context.sol": { - "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n\n function _contextSuffixLength() internal view virtual returns (uint256) {\n return 0;\n }\n}\n" - }, - "@openzeppelin/contracts/utils/math/SafeCast.sol": { - "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SafeCast.sol)\n// This file was procedurally generated from scripts/generate/templates/SafeCast.js.\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Wrappers over Solidity's uintXX/intXX casting operators with added overflow\n * checks.\n *\n * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\n * easily result in undesired exploitation or bugs, since developers usually\n * assume that overflows raise errors. `SafeCast` restores this intuition by\n * reverting the transaction when such an operation overflows.\n *\n * Using this library instead of the unchecked operations eliminates an entire\n * class of bugs, so it's recommended to use it always.\n *\n * Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing\n * all math on `uint256` and `int256` and then downcasting.\n */\nlibrary SafeCast {\n /**\n * @dev Returns the downcasted uint248 from uint256, reverting on\n * overflow (when the input is greater than largest uint248).\n *\n * Counterpart to Solidity's `uint248` operator.\n *\n * Requirements:\n *\n * - input must fit into 248 bits\n *\n * _Available since v4.7._\n */\n function toUint248(uint256 value) internal pure returns (uint248) {\n require(value <= type(uint248).max, \"SafeCast: value doesn't fit in 248 bits\");\n return uint248(value);\n }\n\n /**\n * @dev Returns the downcasted uint240 from uint256, reverting on\n * overflow (when the input is greater than largest uint240).\n *\n * Counterpart to Solidity's `uint240` operator.\n *\n * Requirements:\n *\n * - input must fit into 240 bits\n *\n * _Available since v4.7._\n */\n function toUint240(uint256 value) internal pure returns (uint240) {\n require(value <= type(uint240).max, \"SafeCast: value doesn't fit in 240 bits\");\n return uint240(value);\n }\n\n /**\n * @dev Returns the downcasted uint232 from uint256, reverting on\n * overflow (when the input is greater than largest uint232).\n *\n * Counterpart to Solidity's `uint232` operator.\n *\n * Requirements:\n *\n * - input must fit into 232 bits\n *\n * _Available since v4.7._\n */\n function toUint232(uint256 value) internal pure returns (uint232) {\n require(value <= type(uint232).max, \"SafeCast: value doesn't fit in 232 bits\");\n return uint232(value);\n }\n\n /**\n * @dev Returns the downcasted uint224 from uint256, reverting on\n * overflow (when the input is greater than largest uint224).\n *\n * Counterpart to Solidity's `uint224` operator.\n *\n * Requirements:\n *\n * - input must fit into 224 bits\n *\n * _Available since v4.2._\n */\n function toUint224(uint256 value) internal pure returns (uint224) {\n require(value <= type(uint224).max, \"SafeCast: value doesn't fit in 224 bits\");\n return uint224(value);\n }\n\n /**\n * @dev Returns the downcasted uint216 from uint256, reverting on\n * overflow (when the input is greater than largest uint216).\n *\n * Counterpart to Solidity's `uint216` operator.\n *\n * Requirements:\n *\n * - input must fit into 216 bits\n *\n * _Available since v4.7._\n */\n function toUint216(uint256 value) internal pure returns (uint216) {\n require(value <= type(uint216).max, \"SafeCast: value doesn't fit in 216 bits\");\n return uint216(value);\n }\n\n /**\n * @dev Returns the downcasted uint208 from uint256, reverting on\n * overflow (when the input is greater than largest uint208).\n *\n * Counterpart to Solidity's `uint208` operator.\n *\n * Requirements:\n *\n * - input must fit into 208 bits\n *\n * _Available since v4.7._\n */\n function toUint208(uint256 value) internal pure returns (uint208) {\n require(value <= type(uint208).max, \"SafeCast: value doesn't fit in 208 bits\");\n return uint208(value);\n }\n\n /**\n * @dev Returns the downcasted uint200 from uint256, reverting on\n * overflow (when the input is greater than largest uint200).\n *\n * Counterpart to Solidity's `uint200` operator.\n *\n * Requirements:\n *\n * - input must fit into 200 bits\n *\n * _Available since v4.7._\n */\n function toUint200(uint256 value) internal pure returns (uint200) {\n require(value <= type(uint200).max, \"SafeCast: value doesn't fit in 200 bits\");\n return uint200(value);\n }\n\n /**\n * @dev Returns the downcasted uint192 from uint256, reverting on\n * overflow (when the input is greater than largest uint192).\n *\n * Counterpart to Solidity's `uint192` operator.\n *\n * Requirements:\n *\n * - input must fit into 192 bits\n *\n * _Available since v4.7._\n */\n function toUint192(uint256 value) internal pure returns (uint192) {\n require(value <= type(uint192).max, \"SafeCast: value doesn't fit in 192 bits\");\n return uint192(value);\n }\n\n /**\n * @dev Returns the downcasted uint184 from uint256, reverting on\n * overflow (when the input is greater than largest uint184).\n *\n * Counterpart to Solidity's `uint184` operator.\n *\n * Requirements:\n *\n * - input must fit into 184 bits\n *\n * _Available since v4.7._\n */\n function toUint184(uint256 value) internal pure returns (uint184) {\n require(value <= type(uint184).max, \"SafeCast: value doesn't fit in 184 bits\");\n return uint184(value);\n }\n\n /**\n * @dev Returns the downcasted uint176 from uint256, reverting on\n * overflow (when the input is greater than largest uint176).\n *\n * Counterpart to Solidity's `uint176` operator.\n *\n * Requirements:\n *\n * - input must fit into 176 bits\n *\n * _Available since v4.7._\n */\n function toUint176(uint256 value) internal pure returns (uint176) {\n require(value <= type(uint176).max, \"SafeCast: value doesn't fit in 176 bits\");\n return uint176(value);\n }\n\n /**\n * @dev Returns the downcasted uint168 from uint256, reverting on\n * overflow (when the input is greater than largest uint168).\n *\n * Counterpart to Solidity's `uint168` operator.\n *\n * Requirements:\n *\n * - input must fit into 168 bits\n *\n * _Available since v4.7._\n */\n function toUint168(uint256 value) internal pure returns (uint168) {\n require(value <= type(uint168).max, \"SafeCast: value doesn't fit in 168 bits\");\n return uint168(value);\n }\n\n /**\n * @dev Returns the downcasted uint160 from uint256, reverting on\n * overflow (when the input is greater than largest uint160).\n *\n * Counterpart to Solidity's `uint160` operator.\n *\n * Requirements:\n *\n * - input must fit into 160 bits\n *\n * _Available since v4.7._\n */\n function toUint160(uint256 value) internal pure returns (uint160) {\n require(value <= type(uint160).max, \"SafeCast: value doesn't fit in 160 bits\");\n return uint160(value);\n }\n\n /**\n * @dev Returns the downcasted uint152 from uint256, reverting on\n * overflow (when the input is greater than largest uint152).\n *\n * Counterpart to Solidity's `uint152` operator.\n *\n * Requirements:\n *\n * - input must fit into 152 bits\n *\n * _Available since v4.7._\n */\n function toUint152(uint256 value) internal pure returns (uint152) {\n require(value <= type(uint152).max, \"SafeCast: value doesn't fit in 152 bits\");\n return uint152(value);\n }\n\n /**\n * @dev Returns the downcasted uint144 from uint256, reverting on\n * overflow (when the input is greater than largest uint144).\n *\n * Counterpart to Solidity's `uint144` operator.\n *\n * Requirements:\n *\n * - input must fit into 144 bits\n *\n * _Available since v4.7._\n */\n function toUint144(uint256 value) internal pure returns (uint144) {\n require(value <= type(uint144).max, \"SafeCast: value doesn't fit in 144 bits\");\n return uint144(value);\n }\n\n /**\n * @dev Returns the downcasted uint136 from uint256, reverting on\n * overflow (when the input is greater than largest uint136).\n *\n * Counterpart to Solidity's `uint136` operator.\n *\n * Requirements:\n *\n * - input must fit into 136 bits\n *\n * _Available since v4.7._\n */\n function toUint136(uint256 value) internal pure returns (uint136) {\n require(value <= type(uint136).max, \"SafeCast: value doesn't fit in 136 bits\");\n return uint136(value);\n }\n\n /**\n * @dev Returns the downcasted uint128 from uint256, reverting on\n * overflow (when the input is greater than largest uint128).\n *\n * Counterpart to Solidity's `uint128` operator.\n *\n * Requirements:\n *\n * - input must fit into 128 bits\n *\n * _Available since v2.5._\n */\n function toUint128(uint256 value) internal pure returns (uint128) {\n require(value <= type(uint128).max, \"SafeCast: value doesn't fit in 128 bits\");\n return uint128(value);\n }\n\n /**\n * @dev Returns the downcasted uint120 from uint256, reverting on\n * overflow (when the input is greater than largest uint120).\n *\n * Counterpart to Solidity's `uint120` operator.\n *\n * Requirements:\n *\n * - input must fit into 120 bits\n *\n * _Available since v4.7._\n */\n function toUint120(uint256 value) internal pure returns (uint120) {\n require(value <= type(uint120).max, \"SafeCast: value doesn't fit in 120 bits\");\n return uint120(value);\n }\n\n /**\n * @dev Returns the downcasted uint112 from uint256, reverting on\n * overflow (when the input is greater than largest uint112).\n *\n * Counterpart to Solidity's `uint112` operator.\n *\n * Requirements:\n *\n * - input must fit into 112 bits\n *\n * _Available since v4.7._\n */\n function toUint112(uint256 value) internal pure returns (uint112) {\n require(value <= type(uint112).max, \"SafeCast: value doesn't fit in 112 bits\");\n return uint112(value);\n }\n\n /**\n * @dev Returns the downcasted uint104 from uint256, reverting on\n * overflow (when the input is greater than largest uint104).\n *\n * Counterpart to Solidity's `uint104` operator.\n *\n * Requirements:\n *\n * - input must fit into 104 bits\n *\n * _Available since v4.7._\n */\n function toUint104(uint256 value) internal pure returns (uint104) {\n require(value <= type(uint104).max, \"SafeCast: value doesn't fit in 104 bits\");\n return uint104(value);\n }\n\n /**\n * @dev Returns the downcasted uint96 from uint256, reverting on\n * overflow (when the input is greater than largest uint96).\n *\n * Counterpart to Solidity's `uint96` operator.\n *\n * Requirements:\n *\n * - input must fit into 96 bits\n *\n * _Available since v4.2._\n */\n function toUint96(uint256 value) internal pure returns (uint96) {\n require(value <= type(uint96).max, \"SafeCast: value doesn't fit in 96 bits\");\n return uint96(value);\n }\n\n /**\n * @dev Returns the downcasted uint88 from uint256, reverting on\n * overflow (when the input is greater than largest uint88).\n *\n * Counterpart to Solidity's `uint88` operator.\n *\n * Requirements:\n *\n * - input must fit into 88 bits\n *\n * _Available since v4.7._\n */\n function toUint88(uint256 value) internal pure returns (uint88) {\n require(value <= type(uint88).max, \"SafeCast: value doesn't fit in 88 bits\");\n return uint88(value);\n }\n\n /**\n * @dev Returns the downcasted uint80 from uint256, reverting on\n * overflow (when the input is greater than largest uint80).\n *\n * Counterpart to Solidity's `uint80` operator.\n *\n * Requirements:\n *\n * - input must fit into 80 bits\n *\n * _Available since v4.7._\n */\n function toUint80(uint256 value) internal pure returns (uint80) {\n require(value <= type(uint80).max, \"SafeCast: value doesn't fit in 80 bits\");\n return uint80(value);\n }\n\n /**\n * @dev Returns the downcasted uint72 from uint256, reverting on\n * overflow (when the input is greater than largest uint72).\n *\n * Counterpart to Solidity's `uint72` operator.\n *\n * Requirements:\n *\n * - input must fit into 72 bits\n *\n * _Available since v4.7._\n */\n function toUint72(uint256 value) internal pure returns (uint72) {\n require(value <= type(uint72).max, \"SafeCast: value doesn't fit in 72 bits\");\n return uint72(value);\n }\n\n /**\n * @dev Returns the downcasted uint64 from uint256, reverting on\n * overflow (when the input is greater than largest uint64).\n *\n * Counterpart to Solidity's `uint64` operator.\n *\n * Requirements:\n *\n * - input must fit into 64 bits\n *\n * _Available since v2.5._\n */\n function toUint64(uint256 value) internal pure returns (uint64) {\n require(value <= type(uint64).max, \"SafeCast: value doesn't fit in 64 bits\");\n return uint64(value);\n }\n\n /**\n * @dev Returns the downcasted uint56 from uint256, reverting on\n * overflow (when the input is greater than largest uint56).\n *\n * Counterpart to Solidity's `uint56` operator.\n *\n * Requirements:\n *\n * - input must fit into 56 bits\n *\n * _Available since v4.7._\n */\n function toUint56(uint256 value) internal pure returns (uint56) {\n require(value <= type(uint56).max, \"SafeCast: value doesn't fit in 56 bits\");\n return uint56(value);\n }\n\n /**\n * @dev Returns the downcasted uint48 from uint256, reverting on\n * overflow (when the input is greater than largest uint48).\n *\n * Counterpart to Solidity's `uint48` operator.\n *\n * Requirements:\n *\n * - input must fit into 48 bits\n *\n * _Available since v4.7._\n */\n function toUint48(uint256 value) internal pure returns (uint48) {\n require(value <= type(uint48).max, \"SafeCast: value doesn't fit in 48 bits\");\n return uint48(value);\n }\n\n /**\n * @dev Returns the downcasted uint40 from uint256, reverting on\n * overflow (when the input is greater than largest uint40).\n *\n * Counterpart to Solidity's `uint40` operator.\n *\n * Requirements:\n *\n * - input must fit into 40 bits\n *\n * _Available since v4.7._\n */\n function toUint40(uint256 value) internal pure returns (uint40) {\n require(value <= type(uint40).max, \"SafeCast: value doesn't fit in 40 bits\");\n return uint40(value);\n }\n\n /**\n * @dev Returns the downcasted uint32 from uint256, reverting on\n * overflow (when the input is greater than largest uint32).\n *\n * Counterpart to Solidity's `uint32` operator.\n *\n * Requirements:\n *\n * - input must fit into 32 bits\n *\n * _Available since v2.5._\n */\n function toUint32(uint256 value) internal pure returns (uint32) {\n require(value <= type(uint32).max, \"SafeCast: value doesn't fit in 32 bits\");\n return uint32(value);\n }\n\n /**\n * @dev Returns the downcasted uint24 from uint256, reverting on\n * overflow (when the input is greater than largest uint24).\n *\n * Counterpart to Solidity's `uint24` operator.\n *\n * Requirements:\n *\n * - input must fit into 24 bits\n *\n * _Available since v4.7._\n */\n function toUint24(uint256 value) internal pure returns (uint24) {\n require(value <= type(uint24).max, \"SafeCast: value doesn't fit in 24 bits\");\n return uint24(value);\n }\n\n /**\n * @dev Returns the downcasted uint16 from uint256, reverting on\n * overflow (when the input is greater than largest uint16).\n *\n * Counterpart to Solidity's `uint16` operator.\n *\n * Requirements:\n *\n * - input must fit into 16 bits\n *\n * _Available since v2.5._\n */\n function toUint16(uint256 value) internal pure returns (uint16) {\n require(value <= type(uint16).max, \"SafeCast: value doesn't fit in 16 bits\");\n return uint16(value);\n }\n\n /**\n * @dev Returns the downcasted uint8 from uint256, reverting on\n * overflow (when the input is greater than largest uint8).\n *\n * Counterpart to Solidity's `uint8` operator.\n *\n * Requirements:\n *\n * - input must fit into 8 bits\n *\n * _Available since v2.5._\n */\n function toUint8(uint256 value) internal pure returns (uint8) {\n require(value <= type(uint8).max, \"SafeCast: value doesn't fit in 8 bits\");\n return uint8(value);\n }\n\n /**\n * @dev Converts a signed int256 into an unsigned uint256.\n *\n * Requirements:\n *\n * - input must be greater than or equal to 0.\n *\n * _Available since v3.0._\n */\n function toUint256(int256 value) internal pure returns (uint256) {\n require(value >= 0, \"SafeCast: value must be positive\");\n return uint256(value);\n }\n\n /**\n * @dev Returns the downcasted int248 from int256, reverting on\n * overflow (when the input is less than smallest int248 or\n * greater than largest int248).\n *\n * Counterpart to Solidity's `int248` operator.\n *\n * Requirements:\n *\n * - input must fit into 248 bits\n *\n * _Available since v4.7._\n */\n function toInt248(int256 value) internal pure returns (int248 downcasted) {\n downcasted = int248(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 248 bits\");\n }\n\n /**\n * @dev Returns the downcasted int240 from int256, reverting on\n * overflow (when the input is less than smallest int240 or\n * greater than largest int240).\n *\n * Counterpart to Solidity's `int240` operator.\n *\n * Requirements:\n *\n * - input must fit into 240 bits\n *\n * _Available since v4.7._\n */\n function toInt240(int256 value) internal pure returns (int240 downcasted) {\n downcasted = int240(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 240 bits\");\n }\n\n /**\n * @dev Returns the downcasted int232 from int256, reverting on\n * overflow (when the input is less than smallest int232 or\n * greater than largest int232).\n *\n * Counterpart to Solidity's `int232` operator.\n *\n * Requirements:\n *\n * - input must fit into 232 bits\n *\n * _Available since v4.7._\n */\n function toInt232(int256 value) internal pure returns (int232 downcasted) {\n downcasted = int232(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 232 bits\");\n }\n\n /**\n * @dev Returns the downcasted int224 from int256, reverting on\n * overflow (when the input is less than smallest int224 or\n * greater than largest int224).\n *\n * Counterpart to Solidity's `int224` operator.\n *\n * Requirements:\n *\n * - input must fit into 224 bits\n *\n * _Available since v4.7._\n */\n function toInt224(int256 value) internal pure returns (int224 downcasted) {\n downcasted = int224(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 224 bits\");\n }\n\n /**\n * @dev Returns the downcasted int216 from int256, reverting on\n * overflow (when the input is less than smallest int216 or\n * greater than largest int216).\n *\n * Counterpart to Solidity's `int216` operator.\n *\n * Requirements:\n *\n * - input must fit into 216 bits\n *\n * _Available since v4.7._\n */\n function toInt216(int256 value) internal pure returns (int216 downcasted) {\n downcasted = int216(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 216 bits\");\n }\n\n /**\n * @dev Returns the downcasted int208 from int256, reverting on\n * overflow (when the input is less than smallest int208 or\n * greater than largest int208).\n *\n * Counterpart to Solidity's `int208` operator.\n *\n * Requirements:\n *\n * - input must fit into 208 bits\n *\n * _Available since v4.7._\n */\n function toInt208(int256 value) internal pure returns (int208 downcasted) {\n downcasted = int208(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 208 bits\");\n }\n\n /**\n * @dev Returns the downcasted int200 from int256, reverting on\n * overflow (when the input is less than smallest int200 or\n * greater than largest int200).\n *\n * Counterpart to Solidity's `int200` operator.\n *\n * Requirements:\n *\n * - input must fit into 200 bits\n *\n * _Available since v4.7._\n */\n function toInt200(int256 value) internal pure returns (int200 downcasted) {\n downcasted = int200(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 200 bits\");\n }\n\n /**\n * @dev Returns the downcasted int192 from int256, reverting on\n * overflow (when the input is less than smallest int192 or\n * greater than largest int192).\n *\n * Counterpart to Solidity's `int192` operator.\n *\n * Requirements:\n *\n * - input must fit into 192 bits\n *\n * _Available since v4.7._\n */\n function toInt192(int256 value) internal pure returns (int192 downcasted) {\n downcasted = int192(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 192 bits\");\n }\n\n /**\n * @dev Returns the downcasted int184 from int256, reverting on\n * overflow (when the input is less than smallest int184 or\n * greater than largest int184).\n *\n * Counterpart to Solidity's `int184` operator.\n *\n * Requirements:\n *\n * - input must fit into 184 bits\n *\n * _Available since v4.7._\n */\n function toInt184(int256 value) internal pure returns (int184 downcasted) {\n downcasted = int184(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 184 bits\");\n }\n\n /**\n * @dev Returns the downcasted int176 from int256, reverting on\n * overflow (when the input is less than smallest int176 or\n * greater than largest int176).\n *\n * Counterpart to Solidity's `int176` operator.\n *\n * Requirements:\n *\n * - input must fit into 176 bits\n *\n * _Available since v4.7._\n */\n function toInt176(int256 value) internal pure returns (int176 downcasted) {\n downcasted = int176(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 176 bits\");\n }\n\n /**\n * @dev Returns the downcasted int168 from int256, reverting on\n * overflow (when the input is less than smallest int168 or\n * greater than largest int168).\n *\n * Counterpart to Solidity's `int168` operator.\n *\n * Requirements:\n *\n * - input must fit into 168 bits\n *\n * _Available since v4.7._\n */\n function toInt168(int256 value) internal pure returns (int168 downcasted) {\n downcasted = int168(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 168 bits\");\n }\n\n /**\n * @dev Returns the downcasted int160 from int256, reverting on\n * overflow (when the input is less than smallest int160 or\n * greater than largest int160).\n *\n * Counterpart to Solidity's `int160` operator.\n *\n * Requirements:\n *\n * - input must fit into 160 bits\n *\n * _Available since v4.7._\n */\n function toInt160(int256 value) internal pure returns (int160 downcasted) {\n downcasted = int160(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 160 bits\");\n }\n\n /**\n * @dev Returns the downcasted int152 from int256, reverting on\n * overflow (when the input is less than smallest int152 or\n * greater than largest int152).\n *\n * Counterpart to Solidity's `int152` operator.\n *\n * Requirements:\n *\n * - input must fit into 152 bits\n *\n * _Available since v4.7._\n */\n function toInt152(int256 value) internal pure returns (int152 downcasted) {\n downcasted = int152(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 152 bits\");\n }\n\n /**\n * @dev Returns the downcasted int144 from int256, reverting on\n * overflow (when the input is less than smallest int144 or\n * greater than largest int144).\n *\n * Counterpart to Solidity's `int144` operator.\n *\n * Requirements:\n *\n * - input must fit into 144 bits\n *\n * _Available since v4.7._\n */\n function toInt144(int256 value) internal pure returns (int144 downcasted) {\n downcasted = int144(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 144 bits\");\n }\n\n /**\n * @dev Returns the downcasted int136 from int256, reverting on\n * overflow (when the input is less than smallest int136 or\n * greater than largest int136).\n *\n * Counterpart to Solidity's `int136` operator.\n *\n * Requirements:\n *\n * - input must fit into 136 bits\n *\n * _Available since v4.7._\n */\n function toInt136(int256 value) internal pure returns (int136 downcasted) {\n downcasted = int136(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 136 bits\");\n }\n\n /**\n * @dev Returns the downcasted int128 from int256, reverting on\n * overflow (when the input is less than smallest int128 or\n * greater than largest int128).\n *\n * Counterpart to Solidity's `int128` operator.\n *\n * Requirements:\n *\n * - input must fit into 128 bits\n *\n * _Available since v3.1._\n */\n function toInt128(int256 value) internal pure returns (int128 downcasted) {\n downcasted = int128(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 128 bits\");\n }\n\n /**\n * @dev Returns the downcasted int120 from int256, reverting on\n * overflow (when the input is less than smallest int120 or\n * greater than largest int120).\n *\n * Counterpart to Solidity's `int120` operator.\n *\n * Requirements:\n *\n * - input must fit into 120 bits\n *\n * _Available since v4.7._\n */\n function toInt120(int256 value) internal pure returns (int120 downcasted) {\n downcasted = int120(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 120 bits\");\n }\n\n /**\n * @dev Returns the downcasted int112 from int256, reverting on\n * overflow (when the input is less than smallest int112 or\n * greater than largest int112).\n *\n * Counterpart to Solidity's `int112` operator.\n *\n * Requirements:\n *\n * - input must fit into 112 bits\n *\n * _Available since v4.7._\n */\n function toInt112(int256 value) internal pure returns (int112 downcasted) {\n downcasted = int112(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 112 bits\");\n }\n\n /**\n * @dev Returns the downcasted int104 from int256, reverting on\n * overflow (when the input is less than smallest int104 or\n * greater than largest int104).\n *\n * Counterpart to Solidity's `int104` operator.\n *\n * Requirements:\n *\n * - input must fit into 104 bits\n *\n * _Available since v4.7._\n */\n function toInt104(int256 value) internal pure returns (int104 downcasted) {\n downcasted = int104(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 104 bits\");\n }\n\n /**\n * @dev Returns the downcasted int96 from int256, reverting on\n * overflow (when the input is less than smallest int96 or\n * greater than largest int96).\n *\n * Counterpart to Solidity's `int96` operator.\n *\n * Requirements:\n *\n * - input must fit into 96 bits\n *\n * _Available since v4.7._\n */\n function toInt96(int256 value) internal pure returns (int96 downcasted) {\n downcasted = int96(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 96 bits\");\n }\n\n /**\n * @dev Returns the downcasted int88 from int256, reverting on\n * overflow (when the input is less than smallest int88 or\n * greater than largest int88).\n *\n * Counterpart to Solidity's `int88` operator.\n *\n * Requirements:\n *\n * - input must fit into 88 bits\n *\n * _Available since v4.7._\n */\n function toInt88(int256 value) internal pure returns (int88 downcasted) {\n downcasted = int88(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 88 bits\");\n }\n\n /**\n * @dev Returns the downcasted int80 from int256, reverting on\n * overflow (when the input is less than smallest int80 or\n * greater than largest int80).\n *\n * Counterpart to Solidity's `int80` operator.\n *\n * Requirements:\n *\n * - input must fit into 80 bits\n *\n * _Available since v4.7._\n */\n function toInt80(int256 value) internal pure returns (int80 downcasted) {\n downcasted = int80(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 80 bits\");\n }\n\n /**\n * @dev Returns the downcasted int72 from int256, reverting on\n * overflow (when the input is less than smallest int72 or\n * greater than largest int72).\n *\n * Counterpart to Solidity's `int72` operator.\n *\n * Requirements:\n *\n * - input must fit into 72 bits\n *\n * _Available since v4.7._\n */\n function toInt72(int256 value) internal pure returns (int72 downcasted) {\n downcasted = int72(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 72 bits\");\n }\n\n /**\n * @dev Returns the downcasted int64 from int256, reverting on\n * overflow (when the input is less than smallest int64 or\n * greater than largest int64).\n *\n * Counterpart to Solidity's `int64` operator.\n *\n * Requirements:\n *\n * - input must fit into 64 bits\n *\n * _Available since v3.1._\n */\n function toInt64(int256 value) internal pure returns (int64 downcasted) {\n downcasted = int64(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 64 bits\");\n }\n\n /**\n * @dev Returns the downcasted int56 from int256, reverting on\n * overflow (when the input is less than smallest int56 or\n * greater than largest int56).\n *\n * Counterpart to Solidity's `int56` operator.\n *\n * Requirements:\n *\n * - input must fit into 56 bits\n *\n * _Available since v4.7._\n */\n function toInt56(int256 value) internal pure returns (int56 downcasted) {\n downcasted = int56(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 56 bits\");\n }\n\n /**\n * @dev Returns the downcasted int48 from int256, reverting on\n * overflow (when the input is less than smallest int48 or\n * greater than largest int48).\n *\n * Counterpart to Solidity's `int48` operator.\n *\n * Requirements:\n *\n * - input must fit into 48 bits\n *\n * _Available since v4.7._\n */\n function toInt48(int256 value) internal pure returns (int48 downcasted) {\n downcasted = int48(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 48 bits\");\n }\n\n /**\n * @dev Returns the downcasted int40 from int256, reverting on\n * overflow (when the input is less than smallest int40 or\n * greater than largest int40).\n *\n * Counterpart to Solidity's `int40` operator.\n *\n * Requirements:\n *\n * - input must fit into 40 bits\n *\n * _Available since v4.7._\n */\n function toInt40(int256 value) internal pure returns (int40 downcasted) {\n downcasted = int40(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 40 bits\");\n }\n\n /**\n * @dev Returns the downcasted int32 from int256, reverting on\n * overflow (when the input is less than smallest int32 or\n * greater than largest int32).\n *\n * Counterpart to Solidity's `int32` operator.\n *\n * Requirements:\n *\n * - input must fit into 32 bits\n *\n * _Available since v3.1._\n */\n function toInt32(int256 value) internal pure returns (int32 downcasted) {\n downcasted = int32(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 32 bits\");\n }\n\n /**\n * @dev Returns the downcasted int24 from int256, reverting on\n * overflow (when the input is less than smallest int24 or\n * greater than largest int24).\n *\n * Counterpart to Solidity's `int24` operator.\n *\n * Requirements:\n *\n * - input must fit into 24 bits\n *\n * _Available since v4.7._\n */\n function toInt24(int256 value) internal pure returns (int24 downcasted) {\n downcasted = int24(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 24 bits\");\n }\n\n /**\n * @dev Returns the downcasted int16 from int256, reverting on\n * overflow (when the input is less than smallest int16 or\n * greater than largest int16).\n *\n * Counterpart to Solidity's `int16` operator.\n *\n * Requirements:\n *\n * - input must fit into 16 bits\n *\n * _Available since v3.1._\n */\n function toInt16(int256 value) internal pure returns (int16 downcasted) {\n downcasted = int16(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 16 bits\");\n }\n\n /**\n * @dev Returns the downcasted int8 from int256, reverting on\n * overflow (when the input is less than smallest int8 or\n * greater than largest int8).\n *\n * Counterpart to Solidity's `int8` operator.\n *\n * Requirements:\n *\n * - input must fit into 8 bits\n *\n * _Available since v3.1._\n */\n function toInt8(int256 value) internal pure returns (int8 downcasted) {\n downcasted = int8(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 8 bits\");\n }\n\n /**\n * @dev Converts an unsigned uint256 into a signed int256.\n *\n * Requirements:\n *\n * - input must be less than or equal to maxInt256.\n *\n * _Available since v3.0._\n */\n function toInt256(uint256 value) internal pure returns (int256) {\n // Note: Unsafe cast below is okay because `type(int256).max` is guaranteed to be positive\n require(value <= uint256(type(int256).max), \"SafeCast: value doesn't fit in an int256\");\n return int256(value);\n }\n}\n" - }, - "@openzeppelin/contracts/utils/math/SignedMath.sol": { - "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Standard signed math utilities missing in the Solidity language.\n */\nlibrary SignedMath {\n /**\n * @dev Returns the largest of two signed numbers.\n */\n function max(int256 a, int256 b) internal pure returns (int256) {\n return a > b ? a : b;\n }\n\n /**\n * @dev Returns the smallest of two signed numbers.\n */\n function min(int256 a, int256 b) internal pure returns (int256) {\n return a < b ? a : b;\n }\n\n /**\n * @dev Returns the average of two signed numbers without overflow.\n * The result is rounded towards zero.\n */\n function average(int256 a, int256 b) internal pure returns (int256) {\n // Formula from the book \"Hacker's Delight\"\n int256 x = (a & b) + ((a ^ b) >> 1);\n return x + (int256(uint256(x) >> 255) & (a ^ b));\n }\n\n /**\n * @dev Returns the absolute unsigned value of a signed value.\n */\n function abs(int256 n) internal pure returns (uint256) {\n unchecked {\n // must be unchecked in order to support `n = type(int256).min`\n return uint256(n >= 0 ? n : -n);\n }\n }\n}\n" - }, - "@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol\";\n\nimport \"./IAccessControlManagerV8.sol\";\n\n/**\n * @title AccessControlledV8\n * @author Venus\n * @notice This contract is helper between access control manager and actual contract. This contract further inherited by other contract (using solidity 0.8.13)\n * to integrate access controlled mechanism. It provides initialise methods and verifying access methods.\n */\nabstract contract AccessControlledV8 is Initializable, Ownable2StepUpgradeable {\n /// @notice Access control manager contract\n IAccessControlManagerV8 private _accessControlManager;\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[49] private __gap;\n\n /// @notice Emitted when access control manager contract address is changed\n event NewAccessControlManager(address oldAccessControlManager, address newAccessControlManager);\n\n /// @notice Thrown when the action is prohibited by AccessControlManager\n error Unauthorized(address sender, address calledContract, string methodSignature);\n\n function __AccessControlled_init(address accessControlManager_) internal onlyInitializing {\n __Ownable2Step_init();\n __AccessControlled_init_unchained(accessControlManager_);\n }\n\n function __AccessControlled_init_unchained(address accessControlManager_) internal onlyInitializing {\n _setAccessControlManager(accessControlManager_);\n }\n\n /**\n * @notice Sets the address of AccessControlManager\n * @dev Admin function to set address of AccessControlManager\n * @param accessControlManager_ The new address of the AccessControlManager\n * @custom:event Emits NewAccessControlManager event\n * @custom:access Only Governance\n */\n function setAccessControlManager(address accessControlManager_) external onlyOwner {\n _setAccessControlManager(accessControlManager_);\n }\n\n /**\n * @notice Returns the address of the access control manager contract\n */\n function accessControlManager() external view returns (IAccessControlManagerV8) {\n return _accessControlManager;\n }\n\n /**\n * @dev Internal function to set address of AccessControlManager\n * @param accessControlManager_ The new address of the AccessControlManager\n */\n function _setAccessControlManager(address accessControlManager_) internal {\n require(address(accessControlManager_) != address(0), \"invalid acess control manager address\");\n address oldAccessControlManager = address(_accessControlManager);\n _accessControlManager = IAccessControlManagerV8(accessControlManager_);\n emit NewAccessControlManager(oldAccessControlManager, accessControlManager_);\n }\n\n /**\n * @notice Reverts if the call is not allowed by AccessControlManager\n * @param signature Method signature\n */\n function _checkAccessAllowed(string memory signature) internal view {\n bool isAllowedToCall = _accessControlManager.isAllowedToCall(msg.sender, signature);\n\n if (!isAllowedToCall) {\n revert Unauthorized(msg.sender, address(this), signature);\n }\n }\n}\n" - }, - "@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\nimport \"@openzeppelin/contracts/access/IAccessControl.sol\";\n\n/**\n * @title IAccessControlManagerV8\n * @author Venus\n * @notice Interface implemented by the `AccessControlManagerV8` contract.\n */\ninterface IAccessControlManagerV8 is IAccessControl {\n function giveCallPermission(address contractAddress, string calldata functionSig, address accountToPermit) external;\n\n function revokeCallPermission(\n address contractAddress,\n string calldata functionSig,\n address accountToRevoke\n ) external;\n\n function isAllowedToCall(address account, string calldata functionSig) external view returns (bool);\n\n function hasPermission(\n address account,\n address contractAddress,\n string calldata functionSig\n ) external view returns (bool);\n}\n" - }, - "@venusprotocol/solidity-utilities/contracts/constants.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\n/// @dev Base unit for computations, usually used in scaling (multiplications, divisions)\nuint256 constant EXP_SCALE = 1e18;\n\n/// @dev A unit (literal one) in EXP_SCALE, usually used in additions/subtractions\nuint256 constant MANTISSA_ONE = EXP_SCALE;\n\n/// @dev The approximate number of seconds per year\nuint256 constant SECONDS_PER_YEAR = 31_536_000;\n" - }, - "@venusprotocol/solidity-utilities/contracts/validators.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\n/// @notice Thrown if the supplied address is a zero address where it is not allowed\nerror ZeroAddressNotAllowed();\n\n/// @notice Thrown if the supplied value is 0 where it is not allowed\nerror ZeroValueNotAllowed();\n\n/// @notice Checks if the provided address is nonzero, reverts otherwise\n/// @param address_ Address to check\n/// @custom:error ZeroAddressNotAllowed is thrown if the provided address is a zero address\nfunction ensureNonzeroAddress(address address_) pure {\n if (address_ == address(0)) {\n revert ZeroAddressNotAllowed();\n }\n}\n\n/// @notice Checks if the provided value is nonzero, reverts otherwise\n/// @param value_ Value to check\n/// @custom:error ZeroValueNotAllowed is thrown if the provided value is 0\nfunction ensureNonzeroValue(uint256 value_) pure {\n if (value_ == 0) {\n revert ZeroValueNotAllowed();\n }\n}\n" - }, - "contracts/hardhat-dependency-compiler/@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol": { - "content": "// SPDX-License-Identifier: UNLICENSED\npragma solidity >0.0.0;\nimport '@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol';\n" - }, - "contracts/hardhat-dependency-compiler/hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/ProxyAdmin.sol": { - "content": "// SPDX-License-Identifier: UNLICENSED\npragma solidity >0.0.0;\nimport 'hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/ProxyAdmin.sol';\n" - }, - "contracts/hardhat-dependency-compiler/hardhat-deploy/solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol": { - "content": "// SPDX-License-Identifier: UNLICENSED\npragma solidity >0.0.0;\nimport 'hardhat-deploy/solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol';\n" - }, - "contracts/interfaces/FeedRegistryInterface.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\ninterface FeedRegistryInterface {\n function latestRoundDataByName(\n string memory base,\n string memory quote\n )\n external\n view\n returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound);\n\n function decimalsByName(string memory base, string memory quote) external view returns (uint8);\n}\n" - }, - "contracts/interfaces/IAccountant.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface IAccountant {\n function getRateSafe() external view returns (uint256);\n}\n" - }, - "contracts/interfaces/IAnkrBNB.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface IAnkrBNB {\n function sharesToBonds(uint256 amount) external view returns (uint256);\n function decimals() external view returns (uint8);\n}\n" - }, - "contracts/interfaces/IAsBNB.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface IAsBNB {\n function minter() external view returns (address);\n function decimals() external view returns (uint8);\n}\n" - }, - "contracts/interfaces/IAsBNBMinter.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface IAsBNBMinter {\n function convertToTokens(uint256 amount) external view returns (uint256);\n}\n" - }, - "contracts/interfaces/IERC4626.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface IERC4626 {\n function convertToAssets(uint256 shares) external view returns (uint256);\n function decimals() external view returns (uint8);\n}\n" - }, - "contracts/interfaces/IEtherFiLiquidityPool.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface IEtherFiLiquidityPool {\n function amountForShare(uint256 _share) external view returns (uint256);\n}\n" - }, - "contracts/interfaces/IPendlePtOracle.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface IPendlePtOracle {\n function getPtToAssetRate(address market, uint32 duration) external view returns (uint256);\n\n function getPtToSyRate(address market, uint32 duration) external view returns (uint256);\n\n function getOracleState(\n address market,\n uint32 duration\n )\n external\n view\n returns (bool increaseCardinalityRequired, uint16 cardinalityRequired, bool oldestObservationSatisfied);\n}\n" - }, - "contracts/interfaces/IPStakePool.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface IPStakePool {\n struct Data {\n uint256 totalWei;\n uint256 poolTokenSupply;\n }\n\n /**\n * @dev The current exchange rate for converting stkBNB to BNB.\n */\n function exchangeRate() external view returns (Data memory);\n}\n" - }, - "contracts/interfaces/ISFrax.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface ISFrax {\n function convertToAssets(uint256 shares) external view returns (uint256);\n function decimals() external view returns (uint8);\n}\n" - }, - "contracts/interfaces/ISfrxEthFraxOracle.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface ISfrxEthFraxOracle {\n function getPrices() external view returns (bool _isbadData, uint256 _priceLow, uint256 _priceHigh);\n}\n" - }, - "contracts/interfaces/IStaderStakeManager.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface IStaderStakeManager {\n function convertBnbXToBnb(uint256 _amount) external view returns (uint256);\n}\n" - }, - "contracts/interfaces/IStETH.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\ninterface IStETH {\n function getPooledEthByShares(uint256 _sharesAmount) external view returns (uint256);\n function decimals() external view returns (uint8);\n}\n" - }, - "contracts/interfaces/ISynclubStakeManager.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface ISynclubStakeManager {\n function convertSnBnbToBnb(uint256 _amount) external view returns (uint256);\n}\n" - }, - "contracts/interfaces/IWBETH.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface IWBETH {\n function exchangeRate() external view returns (uint256);\n function decimals() external view returns (uint8);\n}\n" - }, - "contracts/interfaces/IZkETH.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\ninterface IZkETH {\n function LSTPerToken() external view returns (uint256);\n function decimals() external view returns (uint8);\n}\n" - }, - "contracts/interfaces/OracleInterface.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\ninterface OracleInterface {\n function getPrice(address asset) external view returns (uint256);\n}\n\ninterface ResilientOracleInterface is OracleInterface {\n function updatePrice(address vToken) external;\n\n function updateAssetPrice(address asset) external;\n\n function getUnderlyingPrice(address vToken) external view returns (uint256);\n}\n\ninterface TwapInterface is OracleInterface {\n function updateTwap(address asset) external returns (uint256);\n}\n\ninterface BoundValidatorInterface {\n function validatePriceWithAnchorPrice(\n address asset,\n uint256 reporterPrice,\n uint256 anchorPrice\n ) external view returns (bool);\n}\n" - }, - "contracts/interfaces/PublicResolverInterface.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\n// SPDX-FileCopyrightText: 2022 Venus\npragma solidity ^0.8.25;\n\ninterface PublicResolverInterface {\n function addr(bytes32 node) external view returns (address payable);\n}\n" - }, - "contracts/interfaces/PythInterface.sol": { - "content": "// SPDX-License-Identifier: Apache-2.0\n// SPDX-FileCopyrightText: 2021 Pyth Data Foundation\npragma solidity ^0.8.25;\n\ncontract PythStructs {\n // A price with a degree of uncertainty, represented as a price +- a confidence interval.\n //\n // The confidence interval roughly corresponds to the standard error of a normal distribution.\n // Both the price and confidence are stored in a fixed-point numeric representation,\n // `x * (10^expo)`, where `expo` is the exponent.\n //\n // Please refer to the documentation at https://docs.pyth.network/consumers/best-practices for how\n // to how this price safely.\n struct Price {\n // Price\n int64 price;\n // Confidence interval around the price\n uint64 conf;\n // Price exponent\n int32 expo;\n // Unix timestamp describing when the price was published\n uint256 publishTime;\n }\n\n // PriceFeed represents a current aggregate price from pyth publisher feeds.\n struct PriceFeed {\n // The price ID.\n bytes32 id;\n // Latest available price\n Price price;\n // Latest available exponentially-weighted moving average price\n Price emaPrice;\n }\n}\n\n/// @title Consume prices from the Pyth Network (https://pyth.network/).\n/// @dev Please refer to the guidance at https://docs.pyth.network/consumers/best-practices\n/// for how to consume prices safely.\n/// @author Pyth Data Association\ninterface IPyth {\n /// @dev Emitted when an update for price feed with `id` is processed successfully.\n /// @param id The Pyth Price Feed ID.\n /// @param fresh True if the price update is more recent and stored.\n /// @param chainId ID of the source chain that the batch price update containing this price.\n /// This value comes from Wormhole, and you can find the corresponding chains\n /// at https://docs.wormholenetwork.com/wormhole/contracts.\n /// @param sequenceNumber Sequence number of the batch price update containing this price.\n /// @param lastPublishTime Publish time of the previously stored price.\n /// @param publishTime Publish time of the given price update.\n /// @param price Price of the given price update.\n /// @param conf Confidence interval of the given price update.\n event PriceFeedUpdate(\n bytes32 indexed id,\n bool indexed fresh,\n uint16 chainId,\n uint64 sequenceNumber,\n uint256 lastPublishTime,\n uint256 publishTime,\n int64 price,\n uint64 conf\n );\n\n /// @dev Emitted when a batch price update is processed successfully.\n /// @param chainId ID of the source chain that the batch price update comes from.\n /// @param sequenceNumber Sequence number of the batch price update.\n /// @param batchSize Number of prices within the batch price update.\n /// @param freshPricesInBatch Number of prices that were more recent and were stored.\n event BatchPriceFeedUpdate(uint16 chainId, uint64 sequenceNumber, uint256 batchSize, uint256 freshPricesInBatch);\n\n /// @dev Emitted when a call to `updatePriceFeeds` is processed successfully.\n /// @param sender Sender of the call (`msg.sender`).\n /// @param batchCount Number of batches that this function processed.\n /// @param fee Amount of paid fee for updating the prices.\n event UpdatePriceFeeds(address indexed sender, uint256 batchCount, uint256 fee);\n\n /// @notice Returns the period (in seconds) that a price feed is considered valid since its publish time\n function getValidTimePeriod() external view returns (uint256 validTimePeriod);\n\n /// @notice Returns the price and confidence interval.\n /// @dev Reverts if the price has not been updated within the last `getValidTimePeriod()` seconds.\n /// @param id The Pyth Price Feed ID of which to fetch the price and confidence interval.\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\n function getPrice(bytes32 id) external view returns (PythStructs.Price memory price);\n\n /// @notice Returns the exponentially-weighted moving average price and confidence interval.\n /// @dev Reverts if the EMA price is not available.\n /// @param id The Pyth Price Feed ID of which to fetch the EMA price and confidence interval.\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\n function getEmaPrice(bytes32 id) external view returns (PythStructs.Price memory price);\n\n /// @notice Returns the price of a price feed without any sanity checks.\n /// @dev This function returns the most recent price update in this contract without any recency checks.\n /// This function is unsafe as the returned price update may be arbitrarily far in the past.\n ///\n /// Users of this function should check the `publishTime` in the price to ensure that the returned price is\n /// sufficiently recent for their application. If you are considering using this function, it may be\n /// safer / easier to use either `getPrice` or `getPriceNoOlderThan`.\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\n function getPriceUnsafe(bytes32 id) external view returns (PythStructs.Price memory price);\n\n /// @notice Returns the price that is no older than `age` seconds of the current time.\n /// @dev This function is a sanity-checked version of `getPriceUnsafe` which is useful in\n /// applications that require a sufficiently-recent price. Reverts if the price wasn't updated sufficiently\n /// recently.\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\n function getPriceNoOlderThan(bytes32 id, uint256 age) external view returns (PythStructs.Price memory price);\n\n /// @notice Returns the exponentially-weighted moving average price of a price feed without any sanity checks.\n /// @dev This function returns the same price as `getEmaPrice` in the case where the price is available.\n /// However, if the price is not recent this function returns the latest available price.\n ///\n /// The returned price can be from arbitrarily far in the past; this function makes no guarantees that\n /// the returned price is recent or useful for any particular application.\n ///\n /// Users of this function should check the `publishTime` in the price to ensure that the returned price is\n /// sufficiently recent for their application. If you are considering using this function, it may be\n /// safer / easier to use either `getEmaPrice` or `getEmaPriceNoOlderThan`.\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\n function getEmaPriceUnsafe(bytes32 id) external view returns (PythStructs.Price memory price);\n\n /// @notice Returns the exponentially-weighted moving average price that is no older than `age` seconds\n /// of the current time.\n /// @dev This function is a sanity-checked version of `getEmaPriceUnsafe` which is useful in\n /// applications that require a sufficiently-recent price. Reverts if the price wasn't updated sufficiently\n /// recently.\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\n function getEmaPriceNoOlderThan(bytes32 id, uint256 age) external view returns (PythStructs.Price memory price);\n\n /// @notice Update price feeds with given update messages.\n /// This method requires the caller to pay a fee in wei; the required fee can be computed by calling\n /// `getUpdateFee` with the length of the `updateData` array.\n /// Prices will be updated if they are more recent than the current stored prices.\n /// The call will succeed even if the update is not the most recent.\n /// @dev Reverts if the transferred fee is not sufficient or the updateData is invalid.\n /// @param updateData Array of price update data.\n function updatePriceFeeds(bytes[] calldata updateData) external payable;\n\n /// @notice Wrapper around updatePriceFeeds that rejects fast if a price update is not necessary. A price update is\n /// necessary if the current on-chain publishTime is older than the given publishTime. It relies solely on the\n /// given `publishTimes` for the price feeds and does not read the actual price\n /// update publish time within `updateData`.\n ///\n /// This method requires the caller to pay a fee in wei; the required fee can be computed by calling\n /// `getUpdateFee` with the length of the `updateData` array.\n ///\n /// `priceIds` and `publishTimes` are two arrays with the same size that correspond to senders known publishTime\n /// of each priceId when calling this method. If all of price feeds within `priceIds` have updated and have\n /// a newer or equal publish time than the given publish time, it will reject the transaction to save gas.\n /// Otherwise, it calls updatePriceFeeds method to update the prices.\n ///\n /// @dev Reverts if update is not needed or the transferred fee is not sufficient or the updateData is invalid.\n /// @param updateData Array of price update data.\n /// @param priceIds Array of price ids.\n /// @param publishTimes Array of publishTimes. `publishTimes[i]` corresponds to known `publishTime` of `priceIds[i]`\n function updatePriceFeedsIfNecessary(\n bytes[] calldata updateData,\n bytes32[] calldata priceIds,\n uint64[] calldata publishTimes\n ) external payable;\n\n /// @notice Returns the required fee to update an array of price updates.\n /// @param updateDataSize Number of price updates.\n /// @return feeAmount The required fee in Wei.\n function getUpdateFee(uint256 updateDataSize) external view returns (uint256 feeAmount);\n}\n\nabstract contract AbstractPyth is IPyth {\n /// @notice Returns the price feed with given id.\n /// @dev Reverts if the price does not exist.\n /// @param id The Pyth Price Feed ID of which to fetch the PriceFeed.\n function queryPriceFeed(bytes32 id) public view virtual returns (PythStructs.PriceFeed memory priceFeed);\n\n /// @notice Returns true if a price feed with the given id exists.\n /// @param id The Pyth Price Feed ID of which to check its existence.\n function priceFeedExists(bytes32 id) public view virtual returns (bool exists);\n\n function getValidTimePeriod() public view virtual override returns (uint256 validTimePeriod);\n\n function getPrice(bytes32 id) external view override returns (PythStructs.Price memory price) {\n return getPriceNoOlderThan(id, getValidTimePeriod());\n }\n\n function getEmaPrice(bytes32 id) external view override returns (PythStructs.Price memory price) {\n return getEmaPriceNoOlderThan(id, getValidTimePeriod());\n }\n\n function getPriceUnsafe(bytes32 id) public view override returns (PythStructs.Price memory price) {\n PythStructs.PriceFeed memory priceFeed = queryPriceFeed(id);\n return priceFeed.price;\n }\n\n function getPriceNoOlderThan(\n bytes32 id,\n uint256 age\n ) public view override returns (PythStructs.Price memory price) {\n price = getPriceUnsafe(id);\n\n require(diff(block.timestamp, price.publishTime) <= age, \"no price available which is recent enough\");\n\n return price;\n }\n\n function getEmaPriceUnsafe(bytes32 id) public view override returns (PythStructs.Price memory price) {\n PythStructs.PriceFeed memory priceFeed = queryPriceFeed(id);\n return priceFeed.emaPrice;\n }\n\n function getEmaPriceNoOlderThan(\n bytes32 id,\n uint256 age\n ) public view override returns (PythStructs.Price memory price) {\n price = getEmaPriceUnsafe(id);\n\n require(diff(block.timestamp, price.publishTime) <= age, \"no ema price available which is recent enough\");\n\n return price;\n }\n\n function diff(uint256 x, uint256 y) internal pure returns (uint256) {\n if (x > y) {\n return x - y;\n } else {\n return y - x;\n }\n }\n\n // Access modifier is overridden to public to be able to call it locally.\n function updatePriceFeeds(bytes[] calldata updateData) public payable virtual override;\n\n function updatePriceFeedsIfNecessary(\n bytes[] calldata updateData,\n bytes32[] calldata priceIds,\n uint64[] calldata publishTimes\n ) external payable override {\n require(priceIds.length == publishTimes.length, \"priceIds and publishTimes arrays should have same length\");\n\n bool updateNeeded = false;\n for (uint256 i = 0; i < priceIds.length; ) {\n if (!priceFeedExists(priceIds[i]) || queryPriceFeed(priceIds[i]).price.publishTime < publishTimes[i]) {\n updateNeeded = true;\n break;\n }\n unchecked {\n i++;\n }\n }\n\n require(updateNeeded, \"no prices in the submitted batch have fresh prices, so this update will have no effect\");\n\n updatePriceFeeds(updateData);\n }\n}\n" - }, - "contracts/interfaces/SIDRegistryInterface.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\n// SPDX-FileCopyrightText: 2022 Venus\npragma solidity ^0.8.25;\n\ninterface SIDRegistryInterface {\n function resolver(bytes32 node) external view returns (address);\n}\n" - }, - "contracts/interfaces/VBep20Interface.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\nimport \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\";\n\ninterface VBep20Interface is IERC20Metadata {\n /**\n * @notice Underlying asset for this VToken\n */\n function underlying() external view returns (address);\n}\n" - }, - "contracts/oracles/AnkrBNBOracle.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { IAnkrBNB } from \"../interfaces/IAnkrBNB.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\nimport { EXP_SCALE } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\n\n/**\n * @title AnkrBNBOracle\n * @author Venus\n * @notice This oracle fetches the price of ankrBNB asset\n */\ncontract AnkrBNBOracle is CorrelatedTokenOracle {\n /// @notice This is used as token address of BNB on BSC\n address public constant NATIVE_TOKEN_ADDR = 0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB;\n\n /// @notice Constructor for the implementation contract.\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor(\n address ankrBNB,\n address resilientOracle\n ) CorrelatedTokenOracle(ankrBNB, NATIVE_TOKEN_ADDR, resilientOracle) {}\n\n /**\n * @notice Fetches the amount of BNB for 1 ankrBNB\n * @return amount The amount of BNB for ankrBNB\n */\n function _getUnderlyingAmount() internal view override returns (uint256) {\n return IAnkrBNB(CORRELATED_TOKEN).sharesToBonds(EXP_SCALE);\n }\n}\n" - }, - "contracts/oracles/AsBNBOracle.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { IAsBNB } from \"../interfaces/IAsBNB.sol\";\nimport { IAsBNBMinter } from \"../interfaces/IAsBNBMinter.sol\";\nimport { EXP_SCALE } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\n\n/**\n * @title asBNBOracle\n * @author Venus\n * @notice This oracle fetches the price of asBNB asset\n */\ncontract AsBNBOracle is CorrelatedTokenOracle {\n /// @notice Constructor for the implementation contract.\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n constructor(\n address asBNB,\n address slisBNB,\n address resilientOracle\n ) CorrelatedTokenOracle(asBNB, slisBNB, resilientOracle) {}\n\n /**\n * @notice Fetches the amount of slisBNB for 1 asBNB\n * @return price The amount of slisBNB for asBNB\n */\n function _getUnderlyingAmount() internal view override returns (uint256) {\n IAsBNBMinter minter = IAsBNBMinter(IAsBNB(CORRELATED_TOKEN).minter());\n return minter.convertToTokens(EXP_SCALE);\n }\n}\n" - }, - "contracts/oracles/BinanceOracle.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\";\nimport \"../interfaces/VBep20Interface.sol\";\nimport \"../interfaces/SIDRegistryInterface.sol\";\nimport \"../interfaces/FeedRegistryInterface.sol\";\nimport \"../interfaces/PublicResolverInterface.sol\";\nimport \"../interfaces/OracleInterface.sol\";\nimport \"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol\";\nimport \"../interfaces/OracleInterface.sol\";\n\n/**\n * @title BinanceOracle\n * @author Venus\n * @notice This oracle fetches price of assets from Binance.\n */\ncontract BinanceOracle is AccessControlledV8, OracleInterface {\n /// @notice Used to fetch feed registry address.\n address public sidRegistryAddress;\n\n /// @notice Set this as asset address for BNB. This is the underlying address for vBNB\n address public constant BNB_ADDR = 0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB;\n\n /// @notice Max stale period configuration for assets\n mapping(string => uint256) public maxStalePeriod;\n\n /// @notice Override symbols to be compatible with Binance feed registry\n mapping(string => string) public symbols;\n\n /// @notice Used to fetch price of assets used directly when space ID is not supported by current chain.\n address public feedRegistryAddress;\n\n /// @notice Emits when asset stale period is updated.\n event MaxStalePeriodAdded(string indexed asset, uint256 maxStalePeriod);\n\n /// @notice Emits when symbol of the asset is updated.\n event SymbolOverridden(string indexed symbol, string overriddenSymbol);\n\n /// @notice Emits when address of feed registry is updated.\n event FeedRegistryUpdated(address indexed oldFeedRegistry, address indexed newFeedRegistry);\n\n /**\n * @notice Checks whether an address is null or not\n */\n modifier notNullAddress(address someone) {\n if (someone == address(0)) revert(\"can't be zero address\");\n _;\n }\n\n /// @notice Constructor for the implementation contract.\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n\n /**\n * @notice Sets the contracts required to fetch prices\n * @param _sidRegistryAddress Address of SID registry\n * @param _accessControlManager Address of the access control manager contract\n */\n function initialize(address _sidRegistryAddress, address _accessControlManager) external initializer {\n sidRegistryAddress = _sidRegistryAddress;\n __AccessControlled_init(_accessControlManager);\n }\n\n /**\n * @notice Used to set the max stale period of an asset\n * @param symbol The symbol of the asset\n * @param _maxStalePeriod The max stake period\n */\n function setMaxStalePeriod(string memory symbol, uint256 _maxStalePeriod) external {\n _checkAccessAllowed(\"setMaxStalePeriod(string,uint256)\");\n if (_maxStalePeriod == 0) revert(\"stale period can't be zero\");\n if (bytes(symbol).length == 0) revert(\"symbol cannot be empty\");\n\n maxStalePeriod[symbol] = _maxStalePeriod;\n emit MaxStalePeriodAdded(symbol, _maxStalePeriod);\n }\n\n /**\n * @notice Used to override a symbol when fetching price\n * @param symbol The symbol to override\n * @param overrideSymbol The symbol after override\n */\n function setSymbolOverride(string calldata symbol, string calldata overrideSymbol) external {\n _checkAccessAllowed(\"setSymbolOverride(string,string)\");\n if (bytes(symbol).length == 0) revert(\"symbol cannot be empty\");\n\n symbols[symbol] = overrideSymbol;\n emit SymbolOverridden(symbol, overrideSymbol);\n }\n\n /**\n * @notice Used to set feed registry address when current chain does not support space ID.\n * @param newfeedRegistryAddress Address of new feed registry.\n */\n function setFeedRegistryAddress(\n address newfeedRegistryAddress\n ) external notNullAddress(newfeedRegistryAddress) onlyOwner {\n if (sidRegistryAddress != address(0)) revert(\"sidRegistryAddress must be zero\");\n emit FeedRegistryUpdated(feedRegistryAddress, newfeedRegistryAddress);\n feedRegistryAddress = newfeedRegistryAddress;\n }\n\n /**\n * @notice Uses Space ID to fetch the feed registry address\n * @return feedRegistryAddress Address of binance oracle feed registry.\n */\n function getFeedRegistryAddress() public view returns (address) {\n bytes32 nodeHash = 0x94fe3821e0768eb35012484db4df61890f9a6ca5bfa984ef8ff717e73139faff;\n\n SIDRegistryInterface sidRegistry = SIDRegistryInterface(sidRegistryAddress);\n address publicResolverAddress = sidRegistry.resolver(nodeHash);\n PublicResolverInterface publicResolver = PublicResolverInterface(publicResolverAddress);\n\n return publicResolver.addr(nodeHash);\n }\n\n /**\n * @notice Gets the price of a asset from the binance oracle\n * @param asset Address of the asset\n * @return Price in USD\n */\n function getPrice(address asset) public view returns (uint256) {\n string memory symbol;\n uint256 decimals;\n\n if (asset == BNB_ADDR) {\n symbol = \"BNB\";\n decimals = 18;\n } else {\n IERC20Metadata token = IERC20Metadata(asset);\n symbol = token.symbol();\n decimals = token.decimals();\n }\n\n string memory overrideSymbol = symbols[symbol];\n\n if (bytes(overrideSymbol).length != 0) {\n symbol = overrideSymbol;\n }\n\n return _getPrice(symbol, decimals);\n }\n\n function _getPrice(string memory symbol, uint256 decimals) internal view returns (uint256) {\n FeedRegistryInterface feedRegistry;\n\n if (sidRegistryAddress != address(0)) {\n // If sidRegistryAddress is available, fetch feedRegistryAddress from sidRegistry\n feedRegistry = FeedRegistryInterface(getFeedRegistryAddress());\n } else {\n // Use feedRegistry directly if sidRegistryAddress is not available\n feedRegistry = FeedRegistryInterface(feedRegistryAddress);\n }\n\n (, int256 answer, , uint256 updatedAt, ) = feedRegistry.latestRoundDataByName(symbol, \"USD\");\n if (answer <= 0) revert(\"invalid binance oracle price\");\n if (block.timestamp < updatedAt) revert(\"updatedAt exceeds block time\");\n\n uint256 deltaTime;\n unchecked {\n deltaTime = block.timestamp - updatedAt;\n }\n if (deltaTime > maxStalePeriod[symbol]) revert(\"binance oracle price expired\");\n\n uint256 decimalDelta = feedRegistry.decimalsByName(symbol, \"USD\");\n return (uint256(answer) * (10 ** (18 - decimalDelta))) * (10 ** (18 - decimals));\n }\n}\n" - }, - "contracts/oracles/BNBxOracle.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { IStaderStakeManager } from \"../interfaces/IStaderStakeManager.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\nimport { EXP_SCALE } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\n\n/**\n * @title BNBxOracle\n * @author Venus\n * @notice This oracle fetches the price of BNBx asset\n */\ncontract BNBxOracle is CorrelatedTokenOracle {\n /// @notice This is used as token address of BNB on BSC\n address public constant NATIVE_TOKEN_ADDR = 0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB;\n\n /// @notice Address of StakeManager\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n IStaderStakeManager public immutable STAKE_MANAGER;\n\n /// @notice Constructor for the implementation contract.\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor(\n address stakeManager,\n address bnbx,\n address resilientOracle\n ) CorrelatedTokenOracle(bnbx, NATIVE_TOKEN_ADDR, resilientOracle) {\n ensureNonzeroAddress(stakeManager);\n STAKE_MANAGER = IStaderStakeManager(stakeManager);\n }\n\n /**\n * @notice Fetches the amount of BNB for 1 BNBx\n * @return price The amount of BNB for BNBx\n */\n function _getUnderlyingAmount() internal view override returns (uint256) {\n return STAKE_MANAGER.convertBnbXToBnb(EXP_SCALE);\n }\n}\n" - }, - "contracts/oracles/BoundValidator.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"../interfaces/VBep20Interface.sol\";\nimport \"../interfaces/OracleInterface.sol\";\nimport \"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol\";\n\n/**\n * @title BoundValidator\n * @author Venus\n * @notice The BoundValidator contract is used to validate prices fetched from two different sources.\n * Each asset has an upper and lower bound ratio set in the config. In order for a price to be valid\n * it must fall within this range of the validator price.\n */\ncontract BoundValidator is AccessControlledV8, BoundValidatorInterface {\n struct ValidateConfig {\n /// @notice asset address\n address asset;\n /// @notice Upper bound of deviation between reported price and anchor price,\n /// beyond which the reported price will be invalidated\n uint256 upperBoundRatio;\n /// @notice Lower bound of deviation between reported price and anchor price,\n /// below which the reported price will be invalidated\n uint256 lowerBoundRatio;\n }\n\n /// @notice validation configs by asset\n mapping(address => ValidateConfig) public validateConfigs;\n\n /// @notice Emit this event when new validation configs are added\n event ValidateConfigAdded(address indexed asset, uint256 indexed upperBound, uint256 indexed lowerBound);\n\n /// @notice Constructor for the implementation contract. Sets immutable variables.\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n\n /**\n * @notice Initializes the owner of the contract\n * @param accessControlManager_ Address of the access control manager contract\n */\n function initialize(address accessControlManager_) external initializer {\n __AccessControlled_init(accessControlManager_);\n }\n\n /**\n * @notice Add multiple validation configs at the same time\n * @param configs Array of validation configs\n * @custom:access Only Governance\n * @custom:error Zero length error is thrown if length of the config array is 0\n * @custom:event Emits ValidateConfigAdded for each validation config that is successfully set\n */\n function setValidateConfigs(ValidateConfig[] memory configs) external {\n uint256 length = configs.length;\n if (length == 0) revert(\"invalid validate config length\");\n for (uint256 i; i < length; ) {\n setValidateConfig(configs[i]);\n unchecked {\n ++i;\n }\n }\n }\n\n /**\n * @notice Add a single validation config\n * @param config Validation config struct\n * @custom:access Only Governance\n * @custom:error Null address error is thrown if asset address is null\n * @custom:error Range error thrown if bound ratio is not positive\n * @custom:error Range error thrown if lower bound is greater than or equal to upper bound\n * @custom:event Emits ValidateConfigAdded when a validation config is successfully set\n */\n function setValidateConfig(ValidateConfig memory config) public {\n _checkAccessAllowed(\"setValidateConfig(ValidateConfig)\");\n\n if (config.asset == address(0)) revert(\"asset can't be zero address\");\n if (config.upperBoundRatio == 0 || config.lowerBoundRatio == 0) revert(\"bound must be positive\");\n if (config.upperBoundRatio <= config.lowerBoundRatio) revert(\"upper bound must be higher than lowner bound\");\n validateConfigs[config.asset] = config;\n emit ValidateConfigAdded(config.asset, config.upperBoundRatio, config.lowerBoundRatio);\n }\n\n /**\n * @notice Test reported asset price against anchor price\n * @param asset asset address\n * @param reportedPrice The price to be tested\n * @custom:error Missing error thrown if asset config is not set\n * @custom:error Price error thrown if anchor price is not valid\n */\n function validatePriceWithAnchorPrice(\n address asset,\n uint256 reportedPrice,\n uint256 anchorPrice\n ) public view virtual override returns (bool) {\n if (validateConfigs[asset].upperBoundRatio == 0) revert(\"validation config not exist\");\n if (anchorPrice == 0) revert(\"anchor price is not valid\");\n return _isWithinAnchor(asset, reportedPrice, anchorPrice);\n }\n\n /**\n * @notice Test whether the reported price is within the valid bounds\n * @param asset Asset address\n * @param reportedPrice The price to be tested\n * @param anchorPrice The reported price must be within the the valid bounds of this price\n */\n function _isWithinAnchor(address asset, uint256 reportedPrice, uint256 anchorPrice) private view returns (bool) {\n if (reportedPrice != 0) {\n // we need to multiply anchorPrice by 1e18 to make the ratio 18 decimals\n uint256 anchorRatio = (anchorPrice * 1e18) / reportedPrice;\n uint256 upperBoundAnchorRatio = validateConfigs[asset].upperBoundRatio;\n uint256 lowerBoundAnchorRatio = validateConfigs[asset].lowerBoundRatio;\n return anchorRatio <= upperBoundAnchorRatio && anchorRatio >= lowerBoundAnchorRatio;\n }\n return false;\n }\n\n // BoundValidator is to get inherited, so it's a good practice to add some storage gaps like\n // OpenZepplin proposed in their contracts: https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n // solhint-disable-next-line\n uint256[49] private __gap;\n}\n" - }, - "contracts/oracles/ChainlinkOracle.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"../interfaces/VBep20Interface.sol\";\nimport \"../interfaces/OracleInterface.sol\";\nimport \"@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol\";\nimport \"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol\";\n\n/**\n * @title ChainlinkOracle\n * @author Venus\n * @notice This oracle fetches prices of assets from the Chainlink oracle.\n */\ncontract ChainlinkOracle is AccessControlledV8, OracleInterface {\n struct TokenConfig {\n /// @notice Underlying token address, which can't be a null address\n /// @notice Used to check if a token is supported\n /// @notice 0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB address for native tokens\n /// (e.g BNB for BNB chain, ETH for Ethereum network)\n address asset;\n /// @notice Chainlink feed address\n address feed;\n /// @notice Price expiration period of this asset\n uint256 maxStalePeriod;\n }\n\n /// @notice Set this as asset address for native token on each chain.\n /// This is the underlying address for vBNB on BNB chain or an underlying asset for a native market on any chain.\n address public constant NATIVE_TOKEN_ADDR = 0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB;\n\n /// @notice Manually set an override price, useful under extenuating conditions such as price feed failure\n mapping(address => uint256) public prices;\n\n /// @notice Token config by assets\n mapping(address => TokenConfig) public tokenConfigs;\n\n /// @notice Emit when a price is manually set\n event PricePosted(address indexed asset, uint256 previousPriceMantissa, uint256 newPriceMantissa);\n\n /// @notice Emit when a token config is added\n event TokenConfigAdded(address indexed asset, address feed, uint256 maxStalePeriod);\n\n modifier notNullAddress(address someone) {\n if (someone == address(0)) revert(\"can't be zero address\");\n _;\n }\n\n /// @notice Constructor for the implementation contract.\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n\n /**\n * @notice Initializes the owner of the contract\n * @param accessControlManager_ Address of the access control manager contract\n */\n function initialize(address accessControlManager_) external initializer {\n __AccessControlled_init(accessControlManager_);\n }\n\n /**\n * @notice Manually set the price of a given asset\n * @param asset Asset address\n * @param price Asset price in 18 decimals\n * @custom:access Only Governance\n * @custom:event Emits PricePosted event on successfully setup of asset price\n */\n function setDirectPrice(address asset, uint256 price) external notNullAddress(asset) {\n _checkAccessAllowed(\"setDirectPrice(address,uint256)\");\n\n uint256 previousPriceMantissa = prices[asset];\n prices[asset] = price;\n emit PricePosted(asset, previousPriceMantissa, price);\n }\n\n /**\n * @notice Add multiple token configs at the same time\n * @param tokenConfigs_ config array\n * @custom:access Only Governance\n * @custom:error Zero length error thrown, if length of the array in parameter is 0\n */\n function setTokenConfigs(TokenConfig[] memory tokenConfigs_) external {\n if (tokenConfigs_.length == 0) revert(\"length can't be 0\");\n uint256 numTokenConfigs = tokenConfigs_.length;\n for (uint256 i; i < numTokenConfigs; ) {\n setTokenConfig(tokenConfigs_[i]);\n unchecked {\n ++i;\n }\n }\n }\n\n /**\n * @notice Add single token config. asset & feed cannot be null addresses and maxStalePeriod must be positive\n * @param tokenConfig Token config struct\n * @custom:access Only Governance\n * @custom:error NotNullAddress error is thrown if asset address is null\n * @custom:error NotNullAddress error is thrown if token feed address is null\n * @custom:error Range error is thrown if maxStale period of token is not greater than zero\n * @custom:event Emits TokenConfigAdded event on successfully setting of the token config\n */\n function setTokenConfig(\n TokenConfig memory tokenConfig\n ) public notNullAddress(tokenConfig.asset) notNullAddress(tokenConfig.feed) {\n _checkAccessAllowed(\"setTokenConfig(TokenConfig)\");\n\n if (tokenConfig.maxStalePeriod == 0) revert(\"stale period can't be zero\");\n tokenConfigs[tokenConfig.asset] = tokenConfig;\n emit TokenConfigAdded(tokenConfig.asset, tokenConfig.feed, tokenConfig.maxStalePeriod);\n }\n\n /**\n * @notice Gets the price of a asset from the chainlink oracle\n * @param asset Address of the asset\n * @return Price in USD from Chainlink or a manually set price for the asset\n */\n function getPrice(address asset) public view virtual returns (uint256) {\n uint256 decimals;\n\n if (asset == NATIVE_TOKEN_ADDR) {\n decimals = 18;\n } else {\n IERC20Metadata token = IERC20Metadata(asset);\n decimals = token.decimals();\n }\n\n return _getPriceInternal(asset, decimals);\n }\n\n /**\n * @notice Gets the Chainlink price for a given asset\n * @param asset address of the asset\n * @param decimals decimals of the asset\n * @return price Asset price in USD or a manually set price of the asset\n */\n function _getPriceInternal(address asset, uint256 decimals) internal view returns (uint256 price) {\n uint256 tokenPrice = prices[asset];\n if (tokenPrice != 0) {\n price = tokenPrice;\n } else {\n price = _getChainlinkPrice(asset);\n }\n\n uint256 decimalDelta = 18 - decimals;\n return price * (10 ** decimalDelta);\n }\n\n /**\n * @notice Get the Chainlink price for an asset, revert if token config doesn't exist\n * @dev The precision of the price feed is used to ensure the returned price has 18 decimals of precision\n * @param asset Address of the asset\n * @return price Price in USD, with 18 decimals of precision\n * @custom:error NotNullAddress error is thrown if the asset address is null\n * @custom:error Price error is thrown if the Chainlink price of asset is not greater than zero\n * @custom:error Timing error is thrown if current timestamp is less than the last updatedAt timestamp\n * @custom:error Timing error is thrown if time difference between current time and last updated time\n * is greater than maxStalePeriod\n */\n function _getChainlinkPrice(\n address asset\n ) private view notNullAddress(tokenConfigs[asset].asset) returns (uint256) {\n TokenConfig memory tokenConfig = tokenConfigs[asset];\n AggregatorV3Interface feed = AggregatorV3Interface(tokenConfig.feed);\n\n // note: maxStalePeriod cannot be 0\n uint256 maxStalePeriod = tokenConfig.maxStalePeriod;\n\n // Chainlink USD-denominated feeds store answers at 8 decimals, mostly\n uint256 decimalDelta = 18 - feed.decimals();\n\n (, int256 answer, , uint256 updatedAt, ) = feed.latestRoundData();\n if (answer <= 0) revert(\"chainlink price must be positive\");\n if (block.timestamp < updatedAt) revert(\"updatedAt exceeds block time\");\n\n uint256 deltaTime;\n unchecked {\n deltaTime = block.timestamp - updatedAt;\n }\n\n if (deltaTime > maxStalePeriod) revert(\"chainlink price expired\");\n\n return uint256(answer) * (10 ** decimalDelta);\n }\n}\n" - }, - "contracts/oracles/common/CorrelatedTokenOracle.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { OracleInterface } from \"../../interfaces/OracleInterface.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\nimport { IERC20Metadata } from \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\";\n\n/**\n * @title CorrelatedTokenOracle\n * @notice This oracle fetches the price of a token that is correlated to another token.\n */\nabstract contract CorrelatedTokenOracle is OracleInterface {\n /// @notice Address of the correlated token\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n address public immutable CORRELATED_TOKEN;\n\n /// @notice Address of the underlying token\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n address public immutable UNDERLYING_TOKEN;\n\n /// @notice Address of Resilient Oracle\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n OracleInterface public immutable RESILIENT_ORACLE;\n\n /// @notice Thrown if the token address is invalid\n error InvalidTokenAddress();\n\n /// @notice Constructor for the implementation contract.\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor(address correlatedToken, address underlyingToken, address resilientOracle) {\n ensureNonzeroAddress(correlatedToken);\n ensureNonzeroAddress(underlyingToken);\n ensureNonzeroAddress(resilientOracle);\n CORRELATED_TOKEN = correlatedToken;\n UNDERLYING_TOKEN = underlyingToken;\n RESILIENT_ORACLE = OracleInterface(resilientOracle);\n }\n\n /**\n * @notice Fetches the price of the correlated token\n * @param asset Address of the correlated token\n * @return price The price of the correlated token in scaled decimal places\n */\n function getPrice(address asset) external view override returns (uint256) {\n if (asset != CORRELATED_TOKEN) revert InvalidTokenAddress();\n\n // get underlying token amount for 1 correlated token scaled by underlying token decimals\n uint256 underlyingAmount = _getUnderlyingAmount();\n\n // oracle returns (36 - asset decimal) scaled price\n uint256 underlyingUSDPrice = RESILIENT_ORACLE.getPrice(UNDERLYING_TOKEN);\n\n IERC20Metadata token = IERC20Metadata(CORRELATED_TOKEN);\n uint256 decimals = token.decimals();\n\n // underlyingAmount (for 1 correlated token) * underlyingUSDPrice / decimals(correlated token)\n return (underlyingAmount * underlyingUSDPrice) / (10 ** decimals);\n }\n\n /**\n * @notice Gets the underlying amount for correlated token\n * @return underlyingAmount Amount of underlying token\n */\n function _getUnderlyingAmount() internal view virtual returns (uint256);\n}\n" - }, - "contracts/oracles/ERC4626Oracle.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { IERC4626 } from \"../interfaces/IERC4626.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\n\n/**\n * @title ERC4626Oracle\n * @author Venus\n * @notice This oracle fetches the price of ERC4626 tokens\n */\ncontract ERC4626Oracle is CorrelatedTokenOracle {\n uint256 public immutable ONE_CORRELATED_TOKEN;\n\n /// @notice Constructor for the implementation contract.\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor(\n address correlatedToken,\n address underlyingToken,\n address resilientOracle\n ) CorrelatedTokenOracle(correlatedToken, underlyingToken, resilientOracle) {\n ONE_CORRELATED_TOKEN = 10 ** IERC4626(correlatedToken).decimals();\n }\n\n /**\n * @notice Fetches the amount of underlying token for 1 correlated token\n * @return amount The amount of underlying token for correlated token\n */\n function _getUnderlyingAmount() internal view override returns (uint256) {\n return IERC4626(CORRELATED_TOKEN).convertToAssets(ONE_CORRELATED_TOKEN);\n }\n}\n" - }, - "contracts/oracles/EtherfiAccountantOracle.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\nimport { IAccountant } from \"../interfaces/IAccountant.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\n\n/**\n * @title EtherfiAccountantOracle\n * @author Venus\n * @notice This oracle fetches the price of any Ether.fi asset that uses\n * Accountant contracts to derive the underlying price\n */\ncontract EtherfiAccountantOracle is CorrelatedTokenOracle {\n /// @notice Address of Accountant\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n IAccountant public immutable ACCOUNTANT;\n\n /// @notice Constructor for the implementation contract.\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor(\n address accountant,\n address correlatedToken,\n address underlyingToken,\n address resilientOracle\n ) CorrelatedTokenOracle(correlatedToken, underlyingToken, resilientOracle) {\n ensureNonzeroAddress(accountant);\n ACCOUNTANT = IAccountant(accountant);\n }\n\n /**\n * @notice Fetches the conversion rate from the ACCOUNTANT contract\n * @return amount Amount of WBTC\n */\n function _getUnderlyingAmount() internal view override returns (uint256) {\n return ACCOUNTANT.getRateSafe();\n }\n}\n" - }, - "contracts/oracles/mocks/MockAccountant.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"../../interfaces/IAccountant.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\ncontract MockAccountant is IAccountant, Ownable {\n uint256 public rate;\n\n constructor() Ownable() {}\n\n function setRate(uint256 _rate) external onlyOwner {\n rate = _rate;\n }\n\n function getRateSafe() external view override returns (uint256) {\n return rate;\n }\n}\n" - }, - "contracts/oracles/mocks/MockBinanceFeedRegistry.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"../../interfaces/FeedRegistryInterface.sol\";\n\ncontract MockBinanceFeedRegistry is FeedRegistryInterface {\n mapping(string => uint256) public assetPrices;\n\n function setAssetPrice(string memory base, uint256 price) external {\n assetPrices[base] = price;\n }\n\n function latestRoundDataByName(\n string memory base,\n string memory quote\n )\n external\n view\n override\n returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound)\n {\n quote;\n return (0, int256(assetPrices[base]), 0, block.timestamp - 10, 0);\n }\n\n function decimalsByName(string memory base, string memory quote) external view override returns (uint8) {\n return 8;\n }\n}\n" - }, - "contracts/oracles/mocks/MockBinanceOracle.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { OwnableUpgradeable } from \"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\";\nimport { OracleInterface } from \"../../interfaces/OracleInterface.sol\";\n\ncontract MockBinanceOracle is OwnableUpgradeable, OracleInterface {\n mapping(address => uint256) public assetPrices;\n\n constructor() {}\n\n function initialize() public initializer {}\n\n function setPrice(address asset, uint256 price) external {\n assetPrices[asset] = price;\n }\n\n function getPrice(address token) public view returns (uint256) {\n return assetPrices[token];\n }\n}\n" - }, - "contracts/oracles/mocks/MockChainlinkOracle.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { OwnableUpgradeable } from \"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\";\nimport { OracleInterface } from \"../../interfaces/OracleInterface.sol\";\n\ncontract MockChainlinkOracle is OwnableUpgradeable, OracleInterface {\n mapping(address => uint256) public assetPrices;\n\n //set price in 6 decimal precision\n constructor() {}\n\n function initialize() public initializer {\n __Ownable_init();\n }\n\n function setPrice(address asset, uint256 price) external {\n assetPrices[asset] = price;\n }\n\n //https://compound.finance/docs/prices\n function getPrice(address token) public view returns (uint256) {\n return assetPrices[token];\n }\n}\n" - }, - "contracts/oracles/mocks/MockPendlePtOracle.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"../../interfaces/IPendlePtOracle.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\ncontract MockPendlePtOracle is IPendlePtOracle, Ownable {\n mapping(address => mapping(uint32 => uint256)) public ptToAssetRate;\n mapping(address => mapping(uint32 => uint256)) public ptToSyRate;\n\n constructor() Ownable() {}\n\n function setPtToAssetRate(address market, uint32 duration, uint256 rate) external onlyOwner {\n ptToAssetRate[market][duration] = rate;\n }\n\n function setPtToSyRate(address market, uint32 duration, uint256 rate) external onlyOwner {\n ptToSyRate[market][duration] = rate;\n }\n\n function getPtToAssetRate(address market, uint32 duration) external view returns (uint256) {\n return ptToAssetRate[market][duration];\n }\n\n function getPtToSyRate(address market, uint32 duration) external view returns (uint256) {\n return ptToSyRate[market][duration];\n }\n\n function getOracleState(\n address /* market */,\n uint32 /* duration */\n )\n external\n pure\n returns (bool increaseCardinalityRequired, uint16 cardinalityRequired, bool oldestObservationSatisfied)\n {\n return (false, 0, true);\n }\n}\n" - }, - "contracts/oracles/mocks/MockPythOracle.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { OwnableUpgradeable } from \"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\";\nimport { IPyth } from \"../PythOracle.sol\";\nimport { OracleInterface } from \"../../interfaces/OracleInterface.sol\";\n\ncontract MockPythOracle is OwnableUpgradeable {\n mapping(address => uint256) public assetPrices;\n\n /// @notice the actual pyth oracle address fetch & store the prices\n IPyth public underlyingPythOracle;\n\n //set price in 6 decimal precision\n constructor() {}\n\n function initialize(address underlyingPythOracle_) public initializer {\n __Ownable_init();\n if (underlyingPythOracle_ == address(0)) revert(\"pyth oracle cannot be zero address\");\n underlyingPythOracle = IPyth(underlyingPythOracle_);\n }\n\n function setPrice(address asset, uint256 price) external {\n assetPrices[asset] = price;\n }\n\n //https://compound.finance/docs/prices\n function getPrice(address token) public view returns (uint256) {\n return assetPrices[token];\n }\n}\n" - }, - "contracts/oracles/mocks/MockSFrxEthFraxOracle.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"../../interfaces/ISfrxEthFraxOracle.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\ncontract MockSfrxEthFraxOracle is ISfrxEthFraxOracle, Ownable {\n bool public isBadData;\n uint256 public priceLow;\n uint256 public priceHigh;\n\n constructor() Ownable() {}\n\n function setPrices(bool _isBadData, uint256 _priceLow, uint256 _priceHigh) external onlyOwner {\n isBadData = _isBadData;\n priceLow = _priceLow;\n priceHigh = _priceHigh;\n }\n\n function getPrices() external view override returns (bool, uint256, uint256) {\n return (isBadData, priceLow, priceHigh);\n }\n}\n" - }, - "contracts/oracles/OneJumpOracle.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\nimport { OracleInterface } from \"../interfaces/OracleInterface.sol\";\nimport { IERC20Metadata } from \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\";\n\n/**\n * @title OneJumpOracle\n * @author Venus\n * @notice This oracle fetches the price of an asset in through an intermediate asset\n */\ncontract OneJumpOracle is CorrelatedTokenOracle {\n /// @notice Address of the intermediate oracle\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n OracleInterface public immutable INTERMEDIATE_ORACLE;\n\n /// @notice Constructor for the implementation contract.\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor(\n address correlatedToken,\n address underlyingToken,\n address resilientOracle,\n address intermediateOracle\n ) CorrelatedTokenOracle(correlatedToken, underlyingToken, resilientOracle) {\n ensureNonzeroAddress(intermediateOracle);\n INTERMEDIATE_ORACLE = OracleInterface(intermediateOracle);\n }\n\n /**\n * @notice Fetches the amount of the underlying token for 1 correlated token, using the intermediate oracle\n * @return amount The amount of the underlying token for 1 correlated token scaled by the underlying token decimals\n */\n function _getUnderlyingAmount() internal view override returns (uint256) {\n uint256 underlyingDecimals = IERC20Metadata(UNDERLYING_TOKEN).decimals();\n uint256 correlatedDecimals = IERC20Metadata(CORRELATED_TOKEN).decimals();\n\n uint256 underlyingAmount = INTERMEDIATE_ORACLE.getPrice(CORRELATED_TOKEN);\n\n return (underlyingAmount * (10 ** correlatedDecimals)) / (10 ** (36 - underlyingDecimals));\n }\n}\n" - }, - "contracts/oracles/PendleOracle.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { IPendlePtOracle } from \"../interfaces/IPendlePtOracle.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\nimport { ensureNonzeroAddress, ensureNonzeroValue } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\nimport { IERC20Metadata } from \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\";\n\n/**\n * @title PendleOracle\n * @author Venus\n * @notice This oracle fetches the price of a pendle token\n * @dev As a base price the oracle uses either the price of the Pendle\n * market's asset (in this case PT_TO_ASSET rate should be used) or\n * the price of the Pendle market's interest bearing token (e.g. wstETH\n * for stETH; in this case PT_TO_SY rate should be used). Technically,\n * interest bearing token is different from standardized yield (SY) token,\n * but since SY is a wrapper around an interest bearing token, we can safely\n * assume the prices of the two are equal. This is not always true for asset\n * price though: using PT_TO_ASSET rate assumes that the yield token can\n * be seamlessly redeemed for the underlying asset. In reality, this might\n * not always be the case. For more details, see\n * https://docs.pendle.finance/Developers/Contracts/StandardizedYield\n */\ncontract PendleOracle is CorrelatedTokenOracle {\n /// @notice Which asset to use as a base for the returned PT\n /// price. Can be either a standardized yield token (SY), in\n /// this case PT/SY price is returned, or the Pendle\n /// market's asset directly.\n enum RateKind {\n PT_TO_ASSET,\n PT_TO_SY\n }\n\n /// @notice Address of the PT oracle\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n IPendlePtOracle public immutable PT_ORACLE;\n\n /// @notice Whether to use PT/SY (standardized yield token) rate\n /// or PT/market asset rate\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n RateKind public immutable RATE_KIND;\n\n /// @notice Address of the market\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n address public immutable MARKET;\n\n /// @notice Twap duration for the oracle\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n uint32 public immutable TWAP_DURATION;\n\n /// @notice Decimals of the underlying token\n /// @dev We make an assumption that the underlying decimals will\n /// not change throughout the lifetime of the Pendle market\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n uint8 public immutable UNDERLYING_DECIMALS;\n\n /// @notice Thrown if the duration is invalid\n error InvalidDuration();\n\n /// @notice Constructor for the implementation contract.\n /// @custom:oz-upgrades-unsafe-allow constructor\n /// @param market Pendle market\n /// @param ptOracle Pendle oracle\n /// @param rateKind Either PT_TO_ASSET or PT_TO_SY\n /// @param ptToken Pendle PT token\n /// @param underlyingToken Underlying token, can be either the market's asset or the interest bearing token\n /// @param resilientOracle Venus Oracle to get the underlying token price from\n /// @param twapDuration TWAP duration to call Pendle oracle with\n constructor(\n address market,\n address ptOracle,\n RateKind rateKind,\n address ptToken,\n address underlyingToken,\n address resilientOracle,\n uint32 twapDuration\n ) CorrelatedTokenOracle(ptToken, underlyingToken, resilientOracle) {\n ensureNonzeroAddress(market);\n ensureNonzeroAddress(ptOracle);\n ensureNonzeroValue(twapDuration);\n\n MARKET = market;\n PT_ORACLE = IPendlePtOracle(ptOracle);\n RATE_KIND = rateKind;\n TWAP_DURATION = twapDuration;\n UNDERLYING_DECIMALS = IERC20Metadata(UNDERLYING_TOKEN).decimals();\n\n (bool increaseCardinalityRequired, , bool oldestObservationSatisfied) = PT_ORACLE.getOracleState(\n MARKET,\n TWAP_DURATION\n );\n if (increaseCardinalityRequired || !oldestObservationSatisfied) {\n revert InvalidDuration();\n }\n }\n\n /// @notice Fetches the amount of underlying token for 1 PT\n /// @return amount The amount of underlying token (either the market's asset\n /// or the yield token) for 1 PT, adjusted for decimals such that the result\n /// has the same precision as the underlying token\n function _getUnderlyingAmount() internal view override returns (uint256) {\n uint256 rate;\n if (RATE_KIND == RateKind.PT_TO_SY) {\n rate = PT_ORACLE.getPtToSyRate(MARKET, TWAP_DURATION);\n } else {\n rate = PT_ORACLE.getPtToAssetRate(MARKET, TWAP_DURATION);\n }\n return ((10 ** UNDERLYING_DECIMALS) * rate) / 1e18;\n }\n}\n" - }, - "contracts/oracles/PythOracle.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"@openzeppelin/contracts/utils/math/SafeCast.sol\";\nimport \"@openzeppelin/contracts/utils/math/SignedMath.sol\";\nimport \"../interfaces/PythInterface.sol\";\nimport \"../interfaces/OracleInterface.sol\";\nimport \"../interfaces/VBep20Interface.sol\";\nimport \"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol\";\n\n/**\n * @title PythOracle\n * @author Venus\n * @notice PythOracle contract reads prices from actual Pyth oracle contract which accepts, verifies and stores\n * the updated prices from external sources\n */\ncontract PythOracle is AccessControlledV8, OracleInterface {\n // To calculate 10 ** n(which is a signed type)\n using SignedMath for int256;\n\n // To cast int64/int8 types from Pyth to unsigned types\n using SafeCast for int256;\n\n struct TokenConfig {\n bytes32 pythId;\n address asset;\n uint64 maxStalePeriod;\n }\n\n /// @notice Exponent scale (decimal precision) of prices\n uint256 public constant EXP_SCALE = 1e18;\n\n /// @notice Set this as asset address for BNB. This is the underlying for vBNB\n address public constant BNB_ADDR = 0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB;\n\n /// @notice The actual pyth oracle address fetch & store the prices\n IPyth public underlyingPythOracle;\n\n /// @notice Token configs by asset address\n mapping(address => TokenConfig) public tokenConfigs;\n\n /// @notice Emit when setting a new pyth oracle address\n event PythOracleSet(address indexed oldPythOracle, address indexed newPythOracle);\n\n /// @notice Emit when a token config is added\n event TokenConfigAdded(address indexed asset, bytes32 indexed pythId, uint64 indexed maxStalePeriod);\n\n modifier notNullAddress(address someone) {\n if (someone == address(0)) revert(\"can't be zero address\");\n _;\n }\n\n /// @notice Constructor for the implementation contract.\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n\n /**\n * @notice Initializes the owner of the contract and sets required contracts\n * @param underlyingPythOracle_ Address of the Pyth oracle\n * @param accessControlManager_ Address of the access control manager contract\n */\n function initialize(\n address underlyingPythOracle_,\n address accessControlManager_\n ) external initializer notNullAddress(underlyingPythOracle_) {\n __AccessControlled_init(accessControlManager_);\n\n underlyingPythOracle = IPyth(underlyingPythOracle_);\n emit PythOracleSet(address(0), underlyingPythOracle_);\n }\n\n /**\n * @notice Batch set token configs\n * @param tokenConfigs_ Token config array\n * @custom:access Only Governance\n * @custom:error Zero length error is thrown if length of the array in parameter is 0\n */\n function setTokenConfigs(TokenConfig[] memory tokenConfigs_) external {\n if (tokenConfigs_.length == 0) revert(\"length can't be 0\");\n uint256 numTokenConfigs = tokenConfigs_.length;\n for (uint256 i; i < numTokenConfigs; ) {\n setTokenConfig(tokenConfigs_[i]);\n unchecked {\n ++i;\n }\n }\n }\n\n /**\n * @notice Set the underlying Pyth oracle contract address\n * @param underlyingPythOracle_ Pyth oracle contract address\n * @custom:access Only Governance\n * @custom:error NotNullAddress error thrown if underlyingPythOracle_ address is zero\n * @custom:event Emits PythOracleSet event with address of Pyth oracle.\n */\n function setUnderlyingPythOracle(\n IPyth underlyingPythOracle_\n ) external notNullAddress(address(underlyingPythOracle_)) {\n _checkAccessAllowed(\"setUnderlyingPythOracle(address)\");\n IPyth oldUnderlyingPythOracle = underlyingPythOracle;\n underlyingPythOracle = underlyingPythOracle_;\n emit PythOracleSet(address(oldUnderlyingPythOracle), address(underlyingPythOracle_));\n }\n\n /**\n * @notice Set single token config. `maxStalePeriod` cannot be 0 and `asset` cannot be a null address\n * @param tokenConfig Token config struct\n * @custom:access Only Governance\n * @custom:error Range error is thrown if max stale period is zero\n * @custom:error NotNullAddress error is thrown if asset address is null\n */\n function setTokenConfig(TokenConfig memory tokenConfig) public notNullAddress(tokenConfig.asset) {\n _checkAccessAllowed(\"setTokenConfig(TokenConfig)\");\n if (tokenConfig.maxStalePeriod == 0) revert(\"max stale period cannot be 0\");\n tokenConfigs[tokenConfig.asset] = tokenConfig;\n emit TokenConfigAdded(tokenConfig.asset, tokenConfig.pythId, tokenConfig.maxStalePeriod);\n }\n\n /**\n * @notice Gets the price of a asset from the pyth oracle\n * @param asset Address of the asset\n * @return Price in USD\n */\n function getPrice(address asset) public view returns (uint256) {\n uint256 decimals;\n\n if (asset == BNB_ADDR) {\n decimals = 18;\n } else {\n IERC20Metadata token = IERC20Metadata(asset);\n decimals = token.decimals();\n }\n\n return _getPriceInternal(asset, decimals);\n }\n\n function _getPriceInternal(address asset, uint256 decimals) internal view returns (uint256) {\n TokenConfig storage tokenConfig = tokenConfigs[asset];\n if (tokenConfig.asset == address(0)) revert(\"asset doesn't exist\");\n\n // if the price is expired after it's compared against `maxStalePeriod`, the following call will revert\n PythStructs.Price memory priceInfo = underlyingPythOracle.getPriceNoOlderThan(\n tokenConfig.pythId,\n tokenConfig.maxStalePeriod\n );\n\n uint256 price = int256(priceInfo.price).toUint256();\n\n if (price == 0) revert(\"invalid pyth oracle price\");\n\n // the price returned from Pyth is price ** 10^expo, which is the real dollar price of the assets\n // we need to multiply it by 1e18 to make the price 18 decimals\n if (priceInfo.expo > 0) {\n return price * EXP_SCALE * (10 ** int256(priceInfo.expo).toUint256()) * (10 ** (18 - decimals));\n } else {\n return ((price * EXP_SCALE) / (10 ** int256(-priceInfo.expo).toUint256())) * (10 ** (18 - decimals));\n }\n }\n}\n" - }, - "contracts/oracles/SequencerChainlinkOracle.sol": { - "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.25;\n\nimport { ChainlinkOracle } from \"./ChainlinkOracle.sol\";\nimport { AggregatorV3Interface } from \"@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol\";\n\n/**\n @title Sequencer Chain Link Oracle\n @notice Oracle to fetch price using chainlink oracles on L2s with sequencer\n*/\ncontract SequencerChainlinkOracle is ChainlinkOracle {\n /// @notice L2 Sequencer feed\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n AggregatorV3Interface public immutable sequencer;\n\n /// @notice L2 Sequencer grace period\n uint256 public constant GRACE_PERIOD_TIME = 3600;\n\n /**\n @notice Contract constructor\n @param _sequencer L2 sequencer\n @custom:oz-upgrades-unsafe-allow constructor\n */\n constructor(AggregatorV3Interface _sequencer) ChainlinkOracle() {\n require(address(_sequencer) != address(0), \"zero address\");\n\n sequencer = _sequencer;\n }\n\n /// @inheritdoc ChainlinkOracle\n function getPrice(address asset) public view override returns (uint) {\n if (!isSequencerActive()) revert(\"L2 sequencer unavailable\");\n return super.getPrice(asset);\n }\n\n function isSequencerActive() internal view returns (bool) {\n // answer from oracle is a variable with a value of either 1 or 0\n // 0: The sequencer is up\n // 1: The sequencer is down\n // startedAt: This timestamp indicates when the sequencer changed status\n (, int256 answer, uint256 startedAt, , ) = sequencer.latestRoundData();\n if (block.timestamp - startedAt <= GRACE_PERIOD_TIME || answer == 1) return false;\n return true;\n }\n}\n" - }, - "contracts/oracles/SFraxOracle.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { ISFrax } from \"../interfaces/ISFrax.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\nimport { EXP_SCALE } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\n\n/**\n * @title SFraxOracle\n * @author Venus\n * @notice This oracle fetches the price of sFrax\n */\ncontract SFraxOracle is CorrelatedTokenOracle {\n /// @notice Constructor for the implementation contract.\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor(\n address sFrax,\n address frax,\n address resilientOracle\n ) CorrelatedTokenOracle(sFrax, frax, resilientOracle) {}\n\n /**\n * @notice Fetches the amount of FRAX for 1 sFrax\n * @return amount The amount of FRAX for sFrax\n */\n function _getUnderlyingAmount() internal view override returns (uint256) {\n return ISFrax(CORRELATED_TOKEN).convertToAssets(EXP_SCALE);\n }\n}\n" - }, - "contracts/oracles/SFrxETHOracle.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { ISfrxEthFraxOracle } from \"../interfaces/ISfrxEthFraxOracle.sol\";\nimport { ensureNonzeroAddress, ensureNonzeroValue } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\nimport { EXP_SCALE } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\nimport { AccessControlledV8 } from \"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol\";\nimport { OracleInterface } from \"../interfaces/OracleInterface.sol\";\n\n/**\n * @title SFrxETHOracle\n * @author Venus\n * @notice This oracle fetches the price of sfrxETH\n */\ncontract SFrxETHOracle is AccessControlledV8, OracleInterface {\n /// @notice Address of SfrxEthFraxOracle\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n ISfrxEthFraxOracle public immutable SFRXETH_FRAX_ORACLE;\n\n /// @notice Address of sfrxETH\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n address public immutable SFRXETH;\n\n /// @notice Maximum allowed price difference\n uint256 public maxAllowedPriceDifference;\n\n /// @notice Emits when the maximum allowed price difference is updated\n event MaxAllowedPriceDifferenceUpdated(uint256 oldMaxAllowedPriceDifference, uint256 newMaxAllowedPriceDifference);\n\n /// @notice Thrown if the price data is invalid\n error BadPriceData();\n\n /// @notice Thrown if the price difference exceeds the allowed limit\n error PriceDifferenceExceeded();\n\n /// @notice Thrown if the token address is invalid\n error InvalidTokenAddress();\n\n /// @notice Constructor for the implementation contract.\n /// @custom:oz-upgrades-unsafe-allow constructor\n /// @custom:error ZeroAddressNotAllowed is thrown when `_sfrxEthFraxOracle` or `_sfrxETH` are the zero address\n constructor(address _sfrxEthFraxOracle, address _sfrxETH) {\n ensureNonzeroAddress(_sfrxEthFraxOracle);\n ensureNonzeroAddress(_sfrxETH);\n\n SFRXETH_FRAX_ORACLE = ISfrxEthFraxOracle(_sfrxEthFraxOracle);\n SFRXETH = _sfrxETH;\n\n _disableInitializers();\n }\n\n /**\n * @notice Sets the contracts required to fetch prices\n * @param _accessControlManager Address of the access control manager contract\n * @param _maxAllowedPriceDifference Maximum allowed price difference\n * @custom:error ZeroValueNotAllowed is thrown if `_maxAllowedPriceDifference` is zero\n */\n function initialize(address _accessControlManager, uint256 _maxAllowedPriceDifference) external initializer {\n ensureNonzeroValue(_maxAllowedPriceDifference);\n\n __AccessControlled_init(_accessControlManager);\n maxAllowedPriceDifference = _maxAllowedPriceDifference;\n }\n\n /**\n * @notice Sets the maximum allowed price difference\n * @param _maxAllowedPriceDifference Maximum allowed price difference\n * @custom:error ZeroValueNotAllowed is thrown if `_maxAllowedPriceDifference` is zero\n */\n function setMaxAllowedPriceDifference(uint256 _maxAllowedPriceDifference) external {\n _checkAccessAllowed(\"setMaxAllowedPriceDifference(uint256)\");\n ensureNonzeroValue(_maxAllowedPriceDifference);\n\n emit MaxAllowedPriceDifferenceUpdated(maxAllowedPriceDifference, _maxAllowedPriceDifference);\n maxAllowedPriceDifference = _maxAllowedPriceDifference;\n }\n\n /**\n * @notice Fetches the USD price of sfrxETH\n * @param asset Address of the sfrxETH token\n * @return price The price scaled by 1e18\n * @custom:error InvalidTokenAddress is thrown when the `asset` is not the sfrxETH token (`SFRXETH`)\n * @custom:error BadPriceData is thrown if the `SFRXETH_FRAX_ORACLE` oracle informs it has bad data\n * @custom:error ZeroValueNotAllowed is thrown if the prices (low or high, in USD) are zero\n * @custom:error PriceDifferenceExceeded is thrown if priceHigh/priceLow is greater than `maxAllowedPriceDifference`\n */\n function getPrice(address asset) external view returns (uint256) {\n if (asset != SFRXETH) revert InvalidTokenAddress();\n\n (bool isBadData, uint256 priceLow, uint256 priceHigh) = SFRXETH_FRAX_ORACLE.getPrices();\n\n if (isBadData) revert BadPriceData();\n\n // calculate price in USD\n uint256 priceHighInUSD = (EXP_SCALE ** 2) / priceLow;\n uint256 priceLowInUSD = (EXP_SCALE ** 2) / priceHigh;\n\n ensureNonzeroValue(priceHighInUSD);\n ensureNonzeroValue(priceLowInUSD);\n\n // validate price difference\n uint256 difference = (priceHighInUSD * EXP_SCALE) / priceLowInUSD;\n if (difference > maxAllowedPriceDifference) revert PriceDifferenceExceeded();\n\n // calculate and return average price\n return (priceHighInUSD + priceLowInUSD) / 2;\n }\n}\n" - }, - "contracts/oracles/SlisBNBOracle.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { ISynclubStakeManager } from \"../interfaces/ISynclubStakeManager.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\nimport { EXP_SCALE } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\n\n/**\n * @title SlisBNBOracle\n * @author Venus\n * @notice This oracle fetches the price of slisBNB asset\n */\ncontract SlisBNBOracle is CorrelatedTokenOracle {\n /// @notice This is used as token address of BNB on BSC\n address public constant NATIVE_TOKEN_ADDR = 0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB;\n\n /// @notice Address of StakeManager\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n ISynclubStakeManager public immutable STAKE_MANAGER;\n\n /// @notice Constructor for the implementation contract.\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor(\n address stakeManager,\n address slisBNB,\n address resilientOracle\n ) CorrelatedTokenOracle(slisBNB, NATIVE_TOKEN_ADDR, resilientOracle) {\n ensureNonzeroAddress(stakeManager);\n STAKE_MANAGER = ISynclubStakeManager(stakeManager);\n }\n\n /**\n * @notice Fetches the amount of BNB for 1 slisBNB\n * @return amount The amount of BNB for slisBNB\n */\n function _getUnderlyingAmount() internal view override returns (uint256) {\n return STAKE_MANAGER.convertSnBnbToBnb(EXP_SCALE);\n }\n}\n" - }, - "contracts/oracles/StkBNBOracle.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { IPStakePool } from \"../interfaces/IPStakePool.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\nimport { EXP_SCALE } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\n\n/**\n * @title StkBNBOracle\n * @author Venus\n * @notice This oracle fetches the price of stkBNB asset\n */\ncontract StkBNBOracle is CorrelatedTokenOracle {\n /// @notice This is used as token address of BNB on BSC\n address public constant NATIVE_TOKEN_ADDR = 0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB;\n\n /// @notice Address of StakePool\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n IPStakePool public immutable STAKE_POOL;\n\n /// @notice Thrown if the pool token supply is zero\n error PoolTokenSupplyIsZero();\n\n /// @notice Constructor for the implementation contract.\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor(\n address stakePool,\n address stkBNB,\n address resilientOracle\n ) CorrelatedTokenOracle(stkBNB, NATIVE_TOKEN_ADDR, resilientOracle) {\n ensureNonzeroAddress(stakePool);\n STAKE_POOL = IPStakePool(stakePool);\n }\n\n /**\n * @notice Fetches the amount of BNB for 1 stkBNB\n * @return price The amount of BNB for stkBNB\n */\n function _getUnderlyingAmount() internal view override returns (uint256) {\n IPStakePool.Data memory exchangeRateData = STAKE_POOL.exchangeRate();\n\n if (exchangeRateData.poolTokenSupply == 0) {\n revert PoolTokenSupplyIsZero();\n }\n\n return (exchangeRateData.totalWei * EXP_SCALE) / exchangeRateData.poolTokenSupply;\n }\n}\n" - }, - "contracts/oracles/WBETHOracle.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { IWBETH } from \"../interfaces/IWBETH.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\n\n/**\n * @title WBETHOracle\n * @author Venus\n * @notice This oracle fetches the price of wBETH asset\n */\ncontract WBETHOracle is CorrelatedTokenOracle {\n /// @notice Constructor for the implementation contract.\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor(\n address wbeth,\n address eth,\n address resilientOracle\n ) CorrelatedTokenOracle(wbeth, eth, resilientOracle) {}\n\n /**\n * @notice Fetches the amount of ETH for 1 wBETH\n * @return amount The amount of ETH for wBETH\n */\n function _getUnderlyingAmount() internal view override returns (uint256) {\n return IWBETH(CORRELATED_TOKEN).exchangeRate();\n }\n}\n" - }, - "contracts/oracles/WeETHAccountantOracle.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\nimport { IAccountant } from \"../interfaces/IAccountant.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\n\n/**\n * @title WeETHAccountantOracle\n * @author Venus\n * @notice This oracle fetches the price of Ether.fi tokens based on an `Accountant` contract (i.e. weETHs and weETHk)\n */\ncontract WeETHAccountantOracle is CorrelatedTokenOracle {\n /// @notice Address of Accountant\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n IAccountant public immutable ACCOUNTANT;\n\n /// @notice Constructor for the implementation contract.\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor(\n address accountant,\n address weethLRT,\n address weth,\n address resilientOracle\n ) CorrelatedTokenOracle(weethLRT, weth, resilientOracle) {\n ensureNonzeroAddress(accountant);\n ACCOUNTANT = IAccountant(accountant);\n }\n\n /**\n * @notice Gets the WETH for 1 weETH LRT\n * @return amount Amount of WETH\n */\n function _getUnderlyingAmount() internal view override returns (uint256) {\n return ACCOUNTANT.getRateSafe();\n }\n}\n" - }, - "contracts/oracles/WeETHOracle.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\nimport { IEtherFiLiquidityPool } from \"../interfaces/IEtherFiLiquidityPool.sol\";\nimport { EXP_SCALE } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\n\n/**\n * @title WeETHOracle\n * @author Venus\n * @notice This oracle fetches the price of weETH\n */\ncontract WeETHOracle is CorrelatedTokenOracle {\n /// @notice Address of Liqiudity pool\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n IEtherFiLiquidityPool public immutable LIQUIDITY_POOL;\n\n /// @notice Constructor for the implementation contract.\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor(\n address liquidityPool,\n address weETH,\n address eETH,\n address resilientOracle\n ) CorrelatedTokenOracle(weETH, eETH, resilientOracle) {\n ensureNonzeroAddress(liquidityPool);\n LIQUIDITY_POOL = IEtherFiLiquidityPool(liquidityPool);\n }\n\n /**\n * @notice Gets the eETH for 1 weETH\n * @return amount Amount of eETH\n */\n function _getUnderlyingAmount() internal view override returns (uint256) {\n return LIQUIDITY_POOL.amountForShare(EXP_SCALE);\n }\n}\n" - }, - "contracts/oracles/WstETHOracle.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { OracleInterface } from \"../interfaces/OracleInterface.sol\";\nimport { IStETH } from \"../interfaces/IStETH.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\nimport { EXP_SCALE } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\n\n/**\n * @title WstETHOracle\n * @author Venus\n * @notice Depending on the equivalence flag price is either based on assumption that 1 stETH = 1 ETH\n * or the price of stETH/USD (secondary market price) is obtained from the oracle.\n */\ncontract WstETHOracle is OracleInterface {\n /// @notice A flag assuming 1:1 price equivalence between stETH/ETH\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n bool public immutable ASSUME_STETH_ETH_EQUIVALENCE;\n\n /// @notice Address of stETH\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n IStETH public immutable STETH;\n\n /// @notice Address of wstETH\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n address public immutable WSTETH_ADDRESS;\n\n /// @notice Address of WETH\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n address public immutable WETH_ADDRESS;\n\n /// @notice Address of Resilient Oracle\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n OracleInterface public immutable RESILIENT_ORACLE;\n\n /// @notice Constructor for the implementation contract.\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor(\n address wstETHAddress,\n address wETHAddress,\n address stETHAddress,\n address resilientOracleAddress,\n bool assumeEquivalence\n ) {\n ensureNonzeroAddress(wstETHAddress);\n ensureNonzeroAddress(wETHAddress);\n ensureNonzeroAddress(stETHAddress);\n ensureNonzeroAddress(resilientOracleAddress);\n WSTETH_ADDRESS = wstETHAddress;\n WETH_ADDRESS = wETHAddress;\n STETH = IStETH(stETHAddress);\n RESILIENT_ORACLE = OracleInterface(resilientOracleAddress);\n ASSUME_STETH_ETH_EQUIVALENCE = assumeEquivalence;\n }\n\n /**\n * @notice Gets the USD price of wstETH asset\n * @dev Depending on the equivalence flag price is either based on assumption that 1 stETH = 1 ETH\n * or the price of stETH/USD (secondary market price) is obtained from the oracle\n * @param asset Address of wstETH\n * @return wstETH Price in USD scaled by 1e18\n */\n function getPrice(address asset) public view returns (uint256) {\n if (asset != WSTETH_ADDRESS) revert(\"wrong wstETH address\");\n\n // get stETH amount for 1 wstETH scaled by 1e18\n uint256 stETHAmount = STETH.getPooledEthByShares(1 ether);\n\n // price is scaled 1e18 (oracle returns 36 - asset decimal scale)\n uint256 stETHUSDPrice = RESILIENT_ORACLE.getPrice(ASSUME_STETH_ETH_EQUIVALENCE ? WETH_ADDRESS : address(STETH));\n\n // stETHAmount (for 1 wstETH) * stETHUSDPrice / 1e18\n return (stETHAmount * stETHUSDPrice) / EXP_SCALE;\n }\n}\n" - }, - "contracts/oracles/WstETHOracleV2.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { IStETH } from \"../interfaces/IStETH.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\nimport { EXP_SCALE } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\n\n/**\n * @title WstETHOracleV2\n * @author Venus\n * @notice This oracle fetches the price of wstETH\n */\ncontract WstETHOracleV2 is CorrelatedTokenOracle {\n /// @notice Constructor for the implementation contract.\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor(\n address wstETH,\n address stETH,\n address resilientOracle\n ) CorrelatedTokenOracle(wstETH, stETH, resilientOracle) {}\n\n /**\n * @notice Gets the stETH for 1 wstETH\n * @return amount Amount of stETH\n */\n function _getUnderlyingAmount() internal view override returns (uint256) {\n return IStETH(UNDERLYING_TOKEN).getPooledEthByShares(EXP_SCALE);\n }\n}\n" - }, - "contracts/oracles/ZkETHOracle.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { IZkETH } from \"../interfaces/IZkETH.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\n\n/**\n * @title ZkETHOracle\n * @author Venus\n * @notice This oracle fetches the price of zkETH\n */\ncontract ZkETHOracle is CorrelatedTokenOracle {\n /// @notice Constructor for the implementation contract.\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor(\n address zkETH,\n address rzkETH,\n address resilientOracle\n ) CorrelatedTokenOracle(zkETH, rzkETH, resilientOracle) {}\n\n /**\n * @notice Gets the amount of rzkETH for 1 zkETH\n * @return amount Amount of rzkETH\n */\n function _getUnderlyingAmount() internal view override returns (uint256) {\n return IZkETH(CORRELATED_TOKEN).LSTPerToken();\n }\n}\n" - }, - "contracts/ReferenceOracle.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\n// SPDX-FileCopyrightText: 2025 Venus\npragma solidity 0.8.25;\n\nimport { Ownable2StepUpgradeable } from \"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\nimport { ResilientOracleInterface, OracleInterface } from \"./interfaces/OracleInterface.sol\";\n\n/**\n * @title ReferenceOracle\n * @author Venus\n * @notice Reference oracle is the oracle that is not used for production but required for\n * price monitoring. This oracle contains some extra configurations for assets required to\n * compute reference prices of their derivative assets (OneJump, ERC4626, Pendle, etc.)\n */\ncontract ReferenceOracle is Ownable2StepUpgradeable, OracleInterface {\n struct ExternalPrice {\n /// @notice asset address\n address asset;\n /// @notice price of the asset from an external source\n uint256 price;\n }\n\n /// @notice Slot to temporarily store price information from external sources\n /// like CMC/Coingecko, useful to compute prices of derivative assets based on\n /// prices of the base assets with no on chain price information\n bytes32 public constant PRICES_SLOT = keccak256(abi.encode(\"venus-protocol/oracle/ReferenceOracle/prices\"));\n\n /// @notice Resilient oracle address\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n ResilientOracleInterface public immutable RESILIENT_ORACLE;\n\n /// @notice Oracle configuration for assets\n mapping(address => OracleInterface) public oracles;\n\n /// @notice Event emitted when an oracle is set\n event OracleConfigured(address indexed asset, address indexed oracle);\n\n /**\n * @notice Constructor for the implementation contract. Sets immutable variables.\n * @param resilientOracle Resilient oracle address\n * @custom:error ZeroAddressNotAllowed is thrown if resilient oracle address is null\n * @custom:oz-upgrades-unsafe-allow constructor\n */\n constructor(ResilientOracleInterface resilientOracle) {\n ensureNonzeroAddress(address(resilientOracle));\n RESILIENT_ORACLE = resilientOracle;\n _disableInitializers();\n }\n\n /**\n * @notice Initializes the contract admin\n */\n function initialize() external initializer {\n __Ownable2Step_init();\n }\n\n /**\n * @notice Sets an oracle to use for a specific asset\n * @dev The production resilientOracle will be used if zero address is passed\n * @param asset Asset address\n * @param oracle Oracle address\n * @custom:access Only owner\n * @custom:error ZeroAddressNotAllowed is thrown if asset address is null\n * @custom:event Emits OracleConfigured event\n */\n function setOracle(address asset, OracleInterface oracle) external onlyOwner {\n ensureNonzeroAddress(asset);\n oracles[asset] = OracleInterface(oracle);\n emit OracleConfigured(asset, address(oracle));\n }\n\n /**\n * @notice Gets price of the asset assuming other assets have the defined price\n * @param asset asset address\n * @param externalPrices an array of prices for other assets\n * @return USD price in scaled decimal places\n */\n function getPriceAssuming(address asset, ExternalPrice[] memory externalPrices) external returns (uint256) {\n uint256 externalPricesCount = externalPrices.length;\n for (uint256 i = 0; i < externalPricesCount; ++i) {\n _storeExternalPrice(externalPrices[i].asset, externalPrices[i].price);\n }\n return _getPrice(asset);\n }\n\n /**\n * @notice Gets price of the asset\n * @param asset asset address\n * @return USD price in scaled decimal places\n */\n function getPrice(address asset) external view override returns (uint256) {\n return _getPrice(asset);\n }\n\n function _storeExternalPrice(address asset, uint256 price) internal {\n bytes32 slot = keccak256(abi.encode(PRICES_SLOT, asset));\n // solhint-disable-next-line no-inline-assembly\n assembly (\"memory-safe\") {\n tstore(slot, price)\n }\n }\n\n function _getPrice(address asset) internal view returns (uint256) {\n uint256 externalPrice = _loadExternalPrice(asset);\n if (externalPrice != 0) {\n return externalPrice;\n }\n OracleInterface oracle = oracles[asset];\n if (oracle != OracleInterface(address(0))) {\n return oracle.getPrice(asset);\n }\n return RESILIENT_ORACLE.getPrice(asset);\n }\n\n function _loadExternalPrice(address asset) internal view returns (uint256 value) {\n bytes32 slot = keccak256(abi.encode(PRICES_SLOT, asset));\n // solhint-disable-next-line no-inline-assembly\n assembly (\"memory-safe\") {\n value := tload(slot)\n }\n }\n}\n" - }, - "contracts/ResilientOracle.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\n// SPDX-FileCopyrightText: 2022 Venus\npragma solidity 0.8.25;\n\nimport \"@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol\";\nimport \"./interfaces/VBep20Interface.sol\";\nimport \"./interfaces/OracleInterface.sol\";\nimport \"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol\";\n\n/**\n * @title ResilientOracle\n * @author Venus\n * @notice The Resilient Oracle is the main contract that the protocol uses to fetch prices of assets.\n *\n * DeFi protocols are vulnerable to price oracle failures including oracle manipulation and incorrectly\n * reported prices. If only one oracle is used, this creates a single point of failure and opens a vector\n * for attacking the protocol.\n *\n * The Resilient Oracle uses multiple sources and fallback mechanisms to provide accurate prices and protect\n * the protocol from oracle attacks. Currently it includes integrations with Chainlink, Pyth, Binance Oracle\n * and TWAP (Time-Weighted Average Price) oracles. TWAP uses PancakeSwap as the on-chain price source.\n *\n * For every market (vToken) we configure the main, pivot and fallback oracles. The oracles are configured per\n * vToken's underlying asset address. The main oracle oracle is the most trustworthy price source, the pivot\n * oracle is used as a loose sanity checker and the fallback oracle is used as a backup price source.\n *\n * To validate prices returned from two oracles, we use an upper and lower bound ratio that is set for every\n * market. The upper bound ratio represents the deviation between reported price (the price that’s being\n * validated) and the anchor price (the price we are validating against) above which the reported price will\n * be invalidated. The lower bound ratio presents the deviation between reported price and anchor price below\n * which the reported price will be invalidated. So for oracle price to be considered valid the below statement\n * should be true:\n\n```\nanchorRatio = anchorPrice/reporterPrice\nisValid = anchorRatio <= upperBoundAnchorRatio && anchorRatio >= lowerBoundAnchorRatio\n```\n\n * In most cases, Chainlink is used as the main oracle, TWAP or Pyth oracles are used as the pivot oracle depending\n * on which supports the given market and Binance oracle is used as the fallback oracle. For some markets we may\n * use Pyth or TWAP as the main oracle if the token price is not supported by Chainlink or Binance oracles.\n *\n * For a fetched price to be valid it must be positive and not stagnant. If the price is invalid then we consider the\n * oracle to be stagnant and treat it like it's disabled.\n */\ncontract ResilientOracle is PausableUpgradeable, AccessControlledV8, ResilientOracleInterface {\n /**\n * @dev Oracle roles:\n * **main**: The most trustworthy price source\n * **pivot**: Price oracle used as a loose sanity checker\n * **fallback**: The backup source when main oracle price is invalidated\n */\n enum OracleRole {\n MAIN,\n PIVOT,\n FALLBACK\n }\n\n struct TokenConfig {\n /// @notice asset address\n address asset;\n /// @notice `oracles` stores the oracles based on their role in the following order:\n /// [main, pivot, fallback],\n /// It can be indexed with the corresponding enum OracleRole value\n address[3] oracles;\n /// @notice `enableFlagsForOracles` stores the enabled state\n /// for each oracle in the same order as `oracles`\n bool[3] enableFlagsForOracles;\n }\n\n uint256 public constant INVALID_PRICE = 0;\n\n /// @notice Native market address\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n address public immutable nativeMarket;\n\n /// @notice VAI address\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n address public immutable vai;\n\n /// @notice Set this as asset address for Native token on each chain.This is the underlying for vBNB (on bsc)\n /// and can serve as any underlying asset of a market that supports native tokens\n address public constant NATIVE_TOKEN_ADDR = 0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB;\n\n /// @notice Bound validator contract address\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n BoundValidatorInterface public immutable boundValidator;\n\n mapping(address => TokenConfig) private tokenConfigs;\n\n event TokenConfigAdded(\n address indexed asset,\n address indexed mainOracle,\n address indexed pivotOracle,\n address fallbackOracle\n );\n\n /// Event emitted when an oracle is set\n event OracleSet(address indexed asset, address indexed oracle, uint256 indexed role);\n\n /// Event emitted when an oracle is enabled or disabled\n event OracleEnabled(address indexed asset, uint256 indexed role, bool indexed enable);\n\n /**\n * @notice Checks whether an address is null or not\n */\n modifier notNullAddress(address someone) {\n if (someone == address(0)) revert(\"can't be zero address\");\n _;\n }\n\n /**\n * @notice Checks whether token config exists by checking whether asset is null address\n * @dev address can't be null, so it's suitable to be used to check the validity of the config\n * @param asset asset address\n */\n modifier checkTokenConfigExistence(address asset) {\n if (tokenConfigs[asset].asset == address(0)) revert(\"token config must exist\");\n _;\n }\n\n /// @notice Constructor for the implementation contract. Sets immutable variables.\n /// @dev nativeMarketAddress can be address(0) if on the chain we do not support native market\n /// (e.g vETH on ethereum would not be supported, only vWETH)\n /// @param nativeMarketAddress The address of a native market (for bsc it would be vBNB address)\n /// @param vaiAddress The address of the VAI token (if there is VAI on the deployed chain).\n /// Set to address(0) of VAI is not existent.\n /// @param _boundValidator Address of the bound validator contract\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor(\n address nativeMarketAddress,\n address vaiAddress,\n BoundValidatorInterface _boundValidator\n ) notNullAddress(address(_boundValidator)) {\n nativeMarket = nativeMarketAddress;\n vai = vaiAddress;\n boundValidator = _boundValidator;\n\n _disableInitializers();\n }\n\n /**\n * @notice Initializes the contract admin and sets the BoundValidator contract address\n * @param accessControlManager_ Address of the access control manager contract\n */\n function initialize(address accessControlManager_) external initializer {\n __AccessControlled_init(accessControlManager_);\n __Pausable_init();\n }\n\n /**\n * @notice Pauses oracle\n * @custom:access Only Governance\n */\n function pause() external {\n _checkAccessAllowed(\"pause()\");\n _pause();\n }\n\n /**\n * @notice Unpauses oracle\n * @custom:access Only Governance\n */\n function unpause() external {\n _checkAccessAllowed(\"unpause()\");\n _unpause();\n }\n\n /**\n * @notice Batch sets token configs\n * @param tokenConfigs_ Token config array\n * @custom:access Only Governance\n * @custom:error Throws a length error if the length of the token configs array is 0\n */\n function setTokenConfigs(TokenConfig[] memory tokenConfigs_) external {\n if (tokenConfigs_.length == 0) revert(\"length can't be 0\");\n uint256 numTokenConfigs = tokenConfigs_.length;\n for (uint256 i; i < numTokenConfigs; ) {\n setTokenConfig(tokenConfigs_[i]);\n unchecked {\n ++i;\n }\n }\n }\n\n /**\n * @notice Sets oracle for a given asset and role.\n * @dev Supplied asset **must** exist and main oracle may not be null\n * @param asset Asset address\n * @param oracle Oracle address\n * @param role Oracle role\n * @custom:access Only Governance\n * @custom:error Null address error if main-role oracle address is null\n * @custom:error NotNullAddress error is thrown if asset address is null\n * @custom:error TokenConfigExistance error is thrown if token config is not set\n * @custom:event Emits OracleSet event with asset address, oracle address and role of the oracle for the asset\n */\n function setOracle(\n address asset,\n address oracle,\n OracleRole role\n ) external notNullAddress(asset) checkTokenConfigExistence(asset) {\n _checkAccessAllowed(\"setOracle(address,address,uint8)\");\n if (oracle == address(0) && role == OracleRole.MAIN) revert(\"can't set zero address to main oracle\");\n tokenConfigs[asset].oracles[uint256(role)] = oracle;\n emit OracleSet(asset, oracle, uint256(role));\n }\n\n /**\n * @notice Enables/ disables oracle for the input asset. Token config for the input asset **must** exist\n * @dev Configuration for the asset **must** already exist and the asset cannot be 0 address\n * @param asset Asset address\n * @param role Oracle role\n * @param enable Enabled boolean of the oracle\n * @custom:access Only Governance\n * @custom:error NotNullAddress error is thrown if asset address is null\n * @custom:error TokenConfigExistance error is thrown if token config is not set\n */\n function enableOracle(\n address asset,\n OracleRole role,\n bool enable\n ) external notNullAddress(asset) checkTokenConfigExistence(asset) {\n _checkAccessAllowed(\"enableOracle(address,uint8,bool)\");\n tokenConfigs[asset].enableFlagsForOracles[uint256(role)] = enable;\n emit OracleEnabled(asset, uint256(role), enable);\n }\n\n /**\n * @notice Updates the TWAP pivot oracle price.\n * @dev This function should always be called before calling getUnderlyingPrice\n * @param vToken vToken address\n */\n function updatePrice(address vToken) external override {\n address asset = _getUnderlyingAsset(vToken);\n (address pivotOracle, bool pivotOracleEnabled) = getOracle(asset, OracleRole.PIVOT);\n if (pivotOracle != address(0) && pivotOracleEnabled) {\n //if pivot oracle is not TwapOracle it will revert so we need to catch the revert\n try TwapInterface(pivotOracle).updateTwap(asset) {} catch {}\n }\n }\n\n /**\n * @notice Updates the pivot oracle price. Currently using TWAP\n * @dev This function should always be called before calling getPrice\n * @param asset asset address\n */\n function updateAssetPrice(address asset) external {\n (address pivotOracle, bool pivotOracleEnabled) = getOracle(asset, OracleRole.PIVOT);\n if (pivotOracle != address(0) && pivotOracleEnabled) {\n //if pivot oracle is not TwapOracle it will revert so we need to catch the revert\n try TwapInterface(pivotOracle).updateTwap(asset) {} catch {}\n }\n }\n\n /**\n * @dev Gets token config by asset address\n * @param asset asset address\n * @return tokenConfig Config for the asset\n */\n function getTokenConfig(address asset) external view returns (TokenConfig memory) {\n return tokenConfigs[asset];\n }\n\n /**\n * @notice Gets price of the underlying asset for a given vToken. Validation flow:\n * - Check if the oracle is paused globally\n * - Validate price from main oracle against pivot oracle\n * - Validate price from fallback oracle against pivot oracle if the first validation failed\n * - Validate price from main oracle against fallback oracle if the second validation failed\n * In the case that the pivot oracle is not available but main price is available and validation is successful,\n * main oracle price is returned.\n * @param vToken vToken address\n * @return price USD price in scaled decimal places.\n * @custom:error Paused error is thrown when resilent oracle is paused\n * @custom:error Invalid resilient oracle price error is thrown if fetched prices from oracle is invalid\n */\n function getUnderlyingPrice(address vToken) external view override returns (uint256) {\n if (paused()) revert(\"resilient oracle is paused\");\n\n address asset = _getUnderlyingAsset(vToken);\n return _getPrice(asset);\n }\n\n /**\n * @notice Gets price of the asset\n * @param asset asset address\n * @return price USD price in scaled decimal places.\n * @custom:error Paused error is thrown when resilent oracle is paused\n * @custom:error Invalid resilient oracle price error is thrown if fetched prices from oracle is invalid\n */\n function getPrice(address asset) external view override returns (uint256) {\n if (paused()) revert(\"resilient oracle is paused\");\n return _getPrice(asset);\n }\n\n /**\n * @notice Sets/resets single token configs.\n * @dev main oracle **must not** be a null address\n * @param tokenConfig Token config struct\n * @custom:access Only Governance\n * @custom:error NotNullAddress is thrown if asset address is null\n * @custom:error NotNullAddress is thrown if main-role oracle address for asset is null\n * @custom:event Emits TokenConfigAdded event when the asset config is set successfully by the authorized account\n */\n function setTokenConfig(\n TokenConfig memory tokenConfig\n ) public notNullAddress(tokenConfig.asset) notNullAddress(tokenConfig.oracles[uint256(OracleRole.MAIN)]) {\n _checkAccessAllowed(\"setTokenConfig(TokenConfig)\");\n\n tokenConfigs[tokenConfig.asset] = tokenConfig;\n emit TokenConfigAdded(\n tokenConfig.asset,\n tokenConfig.oracles[uint256(OracleRole.MAIN)],\n tokenConfig.oracles[uint256(OracleRole.PIVOT)],\n tokenConfig.oracles[uint256(OracleRole.FALLBACK)]\n );\n }\n\n /**\n * @notice Gets oracle and enabled status by asset address\n * @param asset asset address\n * @param role Oracle role\n * @return oracle Oracle address based on role\n * @return enabled Enabled flag of the oracle based on token config\n */\n function getOracle(address asset, OracleRole role) public view returns (address oracle, bool enabled) {\n oracle = tokenConfigs[asset].oracles[uint256(role)];\n enabled = tokenConfigs[asset].enableFlagsForOracles[uint256(role)];\n }\n\n function _getPrice(address asset) internal view returns (uint256) {\n uint256 pivotPrice = INVALID_PRICE;\n\n // Get pivot oracle price, Invalid price if not available or error\n (address pivotOracle, bool pivotOracleEnabled) = getOracle(asset, OracleRole.PIVOT);\n if (pivotOracleEnabled && pivotOracle != address(0)) {\n try OracleInterface(pivotOracle).getPrice(asset) returns (uint256 pricePivot) {\n pivotPrice = pricePivot;\n } catch {}\n }\n\n // Compare main price and pivot price, return main price and if validation was successful\n // note: In case pivot oracle is not available but main price is available and\n // validation is successful, the main oracle price is returned.\n (uint256 mainPrice, bool validatedPivotMain) = _getMainOraclePrice(\n asset,\n pivotPrice,\n pivotOracleEnabled && pivotOracle != address(0)\n );\n if (mainPrice != INVALID_PRICE && validatedPivotMain) return mainPrice;\n\n // Compare fallback and pivot if main oracle comparision fails with pivot\n // Return fallback price when fallback price is validated successfully with pivot oracle\n (uint256 fallbackPrice, bool validatedPivotFallback) = _getFallbackOraclePrice(asset, pivotPrice);\n if (fallbackPrice != INVALID_PRICE && validatedPivotFallback) return fallbackPrice;\n\n // Lastly compare main price and fallback price\n if (\n mainPrice != INVALID_PRICE &&\n fallbackPrice != INVALID_PRICE &&\n boundValidator.validatePriceWithAnchorPrice(asset, mainPrice, fallbackPrice)\n ) {\n return mainPrice;\n }\n\n revert(\"invalid resilient oracle price\");\n }\n\n /**\n * @notice Gets a price for the provided asset\n * @dev This function won't revert when price is 0, because the fallback oracle may still be\n * able to fetch a correct price\n * @param asset asset address\n * @param pivotPrice Pivot oracle price\n * @param pivotEnabled If pivot oracle is not empty and enabled\n * @return price USD price in scaled decimals\n * e.g. asset decimals is 8 then price is returned as 10**18 * 10**(18-8) = 10**28 decimals\n * @return pivotValidated Boolean representing if the validation of main oracle price\n * and pivot oracle price were successful\n * @custom:error Invalid price error is thrown if main oracle fails to fetch price of the asset\n * @custom:error Invalid price error is thrown if main oracle is not enabled or main oracle\n * address is null\n */\n function _getMainOraclePrice(\n address asset,\n uint256 pivotPrice,\n bool pivotEnabled\n ) internal view returns (uint256, bool) {\n (address mainOracle, bool mainOracleEnabled) = getOracle(asset, OracleRole.MAIN);\n if (mainOracleEnabled && mainOracle != address(0)) {\n try OracleInterface(mainOracle).getPrice(asset) returns (uint256 mainOraclePrice) {\n if (!pivotEnabled) {\n return (mainOraclePrice, true);\n }\n if (pivotPrice == INVALID_PRICE) {\n return (mainOraclePrice, false);\n }\n return (\n mainOraclePrice,\n boundValidator.validatePriceWithAnchorPrice(asset, mainOraclePrice, pivotPrice)\n );\n } catch {\n return (INVALID_PRICE, false);\n }\n }\n\n return (INVALID_PRICE, false);\n }\n\n /**\n * @dev This function won't revert when the price is 0 because getPrice checks if price is > 0\n * @param asset asset address\n * @return price USD price in 18 decimals\n * @return pivotValidated Boolean representing if the validation of fallback oracle price\n * and pivot oracle price were successfully\n * @custom:error Invalid price error is thrown if fallback oracle fails to fetch price of the asset\n * @custom:error Invalid price error is thrown if fallback oracle is not enabled or fallback oracle\n * address is null\n */\n function _getFallbackOraclePrice(address asset, uint256 pivotPrice) private view returns (uint256, bool) {\n (address fallbackOracle, bool fallbackEnabled) = getOracle(asset, OracleRole.FALLBACK);\n if (fallbackEnabled && fallbackOracle != address(0)) {\n try OracleInterface(fallbackOracle).getPrice(asset) returns (uint256 fallbackOraclePrice) {\n if (pivotPrice == INVALID_PRICE) {\n return (fallbackOraclePrice, false);\n }\n return (\n fallbackOraclePrice,\n boundValidator.validatePriceWithAnchorPrice(asset, fallbackOraclePrice, pivotPrice)\n );\n } catch {\n return (INVALID_PRICE, false);\n }\n }\n\n return (INVALID_PRICE, false);\n }\n\n /**\n * @dev This function returns the underlying asset of a vToken\n * @param vToken vToken address\n * @return asset underlying asset address\n */\n function _getUnderlyingAsset(address vToken) private view notNullAddress(vToken) returns (address asset) {\n if (vToken == nativeMarket) {\n asset = NATIVE_TOKEN_ADDR;\n } else if (vToken == vai) {\n asset = vai;\n } else {\n asset = VBep20Interface(vToken).underlying();\n }\n }\n}\n" - }, - "contracts/test/BEP20Harness.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\ncontract BEP20Harness is ERC20 {\n uint8 public decimalsInternal = 18;\n\n constructor(string memory name_, string memory symbol_, uint8 decimals_) ERC20(name_, symbol_) {\n decimalsInternal = decimals_;\n }\n\n function faucet(uint256 amount) external {\n _mint(msg.sender, amount);\n }\n\n function decimals() public view virtual override returns (uint8) {\n return decimalsInternal;\n }\n}\n" - }, - "contracts/test/MockAnkrBNB.sol": { - "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.0;\n\nimport { ERC20 } from \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport { IAnkrBNB } from \"../interfaces/IAnkrBNB.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\ncontract MockAnkrBNB is ERC20, Ownable, IAnkrBNB {\n uint8 private immutable _decimals;\n uint256 public exchangeRate;\n\n constructor(string memory name_, string memory symbol_, uint8 decimals_) ERC20(name_, symbol_) Ownable() {\n _decimals = decimals_;\n }\n\n function faucet(uint256 amount) external {\n _mint(msg.sender, amount);\n }\n\n function setSharesToBonds(uint256 rate) external onlyOwner {\n exchangeRate = rate;\n }\n\n function sharesToBonds(uint256 amount) external view override returns (uint256) {\n return (amount * exchangeRate) / (10 ** uint256(_decimals));\n }\n\n function decimals() public view virtual override(ERC20, IAnkrBNB) returns (uint8) {\n return _decimals;\n }\n}\n" - }, - "contracts/test/MockAsBNB.sol": { - "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.0;\n\nimport { ERC20 } from \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport { IAsBNB } from \"../interfaces/IAsBNB.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\ncontract MockAsBNB is ERC20, Ownable, IAsBNB {\n uint8 private immutable _decimals;\n address public minter;\n\n constructor(\n string memory name_,\n string memory symbol_,\n uint8 decimals_,\n address minter_\n ) ERC20(name_, symbol_) Ownable() {\n _decimals = decimals_;\n minter = minter_;\n }\n\n function faucet(uint256 amount) external {\n _mint(msg.sender, amount);\n }\n\n function setMinter(address minter_) external onlyOwner {\n minter = minter_;\n }\n\n function decimals() public view virtual override(ERC20, IAsBNB) returns (uint8) {\n return _decimals;\n }\n}\n" - }, - "contracts/test/MockAsBNBMinter.sol": { - "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.0;\n\nimport { IAsBNBMinter } from \"../interfaces/IAsBNBMinter.sol\";\n\ncontract MockAsBNBMinter is IAsBNBMinter {\n function convertToTokens(uint256 _amount) external pure override returns (uint256) {\n return _amount;\n }\n}\n" - }, - "contracts/test/MockEtherFiLiquidityPool.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"../interfaces/IEtherFiLiquidityPool.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\ncontract MockEtherFiLiquidityPool is IEtherFiLiquidityPool, Ownable {\n /// @notice The amount of eETH per weETH scaled by 1e18\n uint256 public amountPerShare;\n\n constructor() Ownable() {}\n\n function setAmountPerShare(uint256 _amountPerShare) external onlyOwner {\n amountPerShare = _amountPerShare;\n }\n\n function amountForShare(uint256 _share) external view override returns (uint256) {\n return (_share * amountPerShare) / 1e18;\n }\n}\n" - }, - "contracts/test/MockPyth.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"../interfaces/PythInterface.sol\";\n\ncontract MockPyth is AbstractPyth {\n mapping(bytes32 => PythStructs.PriceFeed) priceFeeds;\n uint64 sequenceNumber;\n\n uint256 singleUpdateFeeInWei;\n uint256 validTimePeriod;\n\n constructor(uint256 _validTimePeriod, uint256 _singleUpdateFeeInWei) {\n singleUpdateFeeInWei = _singleUpdateFeeInWei;\n validTimePeriod = _validTimePeriod;\n }\n\n // simply update price feeds\n function updatePriceFeedsHarness(PythStructs.PriceFeed[] calldata feeds) external {\n require(feeds.length > 0, \"feeds length must > 0\");\n for (uint256 i = 0; i < feeds.length; ) {\n priceFeeds[feeds[i].id] = feeds[i];\n unchecked {\n ++i;\n }\n }\n }\n\n // Takes an array of encoded price feeds and stores them.\n // You can create this data either by calling createPriceFeedData or\n // by using web3.js or ethers abi utilities.\n function updatePriceFeeds(bytes[] calldata updateData) public payable override {\n uint256 requiredFee = getUpdateFee(updateData.length);\n require(msg.value >= requiredFee, \"Insufficient paid fee amount\");\n\n if (msg.value > requiredFee) {\n (bool success, ) = payable(msg.sender).call{ value: msg.value - requiredFee }(\"\");\n require(success, \"failed to transfer update fee\");\n }\n\n uint256 freshPrices = 0;\n\n // Chain ID is id of the source chain that the price update comes from. Since it is just a mock contract\n // We set it to 1.\n uint16 chainId = 1;\n\n for (uint256 i = 0; i < updateData.length; ) {\n PythStructs.PriceFeed memory priceFeed = abi.decode(updateData[i], (PythStructs.PriceFeed));\n\n bool fresh = false;\n uint256 lastPublishTime = priceFeeds[priceFeed.id].price.publishTime;\n\n if (lastPublishTime < priceFeed.price.publishTime) {\n // Price information is more recent than the existing price information.\n fresh = true;\n priceFeeds[priceFeed.id] = priceFeed;\n freshPrices += 1;\n }\n\n emit PriceFeedUpdate(\n priceFeed.id,\n fresh,\n chainId,\n sequenceNumber,\n priceFeed.price.publishTime,\n lastPublishTime,\n priceFeed.price.price,\n priceFeed.price.conf\n );\n\n unchecked {\n i++;\n }\n }\n\n // In the real contract, the input of this function contains multiple batches that each contain multiple prices.\n // This event is emitted when a batch is processed. In this mock contract we consider\n // there is only one batch of prices.\n // Each batch has (chainId, sequenceNumber) as it's unique identifier. Here chainId\n // is set to 1 and an increasing sequence number is used.\n emit BatchPriceFeedUpdate(chainId, sequenceNumber, updateData.length, freshPrices);\n sequenceNumber += 1;\n\n // There is only 1 batch of prices\n emit UpdatePriceFeeds(msg.sender, 1, requiredFee);\n }\n\n function queryPriceFeed(bytes32 id) public view override returns (PythStructs.PriceFeed memory priceFeed) {\n require(priceFeeds[id].id != 0, \"no price feed found for the given price id\");\n return priceFeeds[id];\n }\n\n function priceFeedExists(bytes32 id) public view override returns (bool) {\n return (priceFeeds[id].id != 0);\n }\n\n function getValidTimePeriod() public view override returns (uint256) {\n return validTimePeriod;\n }\n\n function getUpdateFee(uint256 updateDataSize) public view override returns (uint256 feeAmount) {\n return singleUpdateFeeInWei * updateDataSize;\n }\n\n function createPriceFeedUpdateData(\n bytes32 id,\n int64 price,\n uint64 conf,\n int32 expo,\n int64 emaPrice,\n uint64 emaConf,\n uint64 publishTime\n ) public pure returns (bytes memory priceFeedData) {\n PythStructs.PriceFeed memory priceFeed;\n\n priceFeed.id = id;\n\n priceFeed.price.price = price;\n priceFeed.price.conf = conf;\n priceFeed.price.expo = expo;\n priceFeed.price.publishTime = publishTime;\n\n priceFeed.emaPrice.price = emaPrice;\n priceFeed.emaPrice.conf = emaConf;\n priceFeed.emaPrice.expo = expo;\n priceFeed.emaPrice.publishTime = publishTime;\n\n priceFeedData = abi.encode(priceFeed);\n }\n}\n" - }, - "contracts/test/MockSFrax.sol": { - "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.0;\n\nimport { ERC20 } from \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport { ISFrax } from \"../interfaces/ISFrax.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\ncontract MockSFrax is ERC20, Ownable, ISFrax {\n uint8 private immutable _decimals;\n uint256 public exchangeRate;\n\n constructor(string memory name_, string memory symbol_, uint8 decimals_) ERC20(name_, symbol_) Ownable() {\n _decimals = decimals_;\n }\n\n function faucet(uint256 amount) external {\n _mint(msg.sender, amount);\n }\n\n function setRate(uint256 rate) external onlyOwner {\n exchangeRate = rate;\n }\n\n function convertToAssets(uint256 shares) external view override returns (uint256) {\n return (shares * exchangeRate) / (10 ** uint256(_decimals));\n }\n\n function decimals() public view virtual override(ERC20, ISFrax) returns (uint8) {\n return _decimals;\n }\n}\n" - }, - "contracts/test/MockSimpleOracle.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"../interfaces/OracleInterface.sol\";\n\ncontract MockSimpleOracle is OracleInterface {\n mapping(address => uint256) public prices;\n\n constructor() {\n //\n }\n\n function getUnderlyingPrice(address vToken) external view returns (uint256) {\n return prices[vToken];\n }\n\n function getPrice(address asset) external view returns (uint256) {\n return prices[asset];\n }\n\n function setPrice(address vToken, uint256 price) public {\n prices[vToken] = price;\n }\n}\n\ncontract MockBoundValidator is BoundValidatorInterface {\n mapping(address => bool) public validateResults;\n bool public twapUpdated;\n\n constructor() {\n //\n }\n\n function validatePriceWithAnchorPrice(\n address vToken,\n uint256 reporterPrice,\n uint256 anchorPrice\n ) external view returns (bool) {\n return validateResults[vToken];\n }\n\n function validateAssetPriceWithAnchorPrice(\n address asset,\n uint256 reporterPrice,\n uint256 anchorPrice\n ) external view returns (bool) {\n return validateResults[asset];\n }\n\n function setValidateResult(address token, bool pass) public {\n validateResults[token] = pass;\n }\n}\n" - }, - "contracts/test/MockV3Aggregator.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"@chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol\";\n\n/**\n * @title MockV3Aggregator\n * @notice Based on the FluxAggregator contract\n * @notice Use this contract when you need to test\n * other contract's ability to read data from an\n * aggregator contract, but how the aggregator got\n * its answer is unimportant\n */\ncontract MockV3Aggregator is AggregatorV2V3Interface {\n uint256 public constant version = 0;\n\n uint8 public decimals;\n int256 public latestAnswer;\n uint256 public latestTimestamp;\n uint256 public latestRound;\n\n mapping(uint256 => int256) public getAnswer;\n mapping(uint256 => uint256) public getTimestamp;\n mapping(uint256 => uint256) private getStartedAt;\n\n constructor(uint8 _decimals, int256 _initialAnswer) {\n decimals = _decimals;\n updateAnswer(_initialAnswer);\n }\n\n function getRoundData(\n uint80 _roundId\n )\n external\n view\n returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound)\n {\n return (_roundId, getAnswer[_roundId], getStartedAt[_roundId], getTimestamp[_roundId], _roundId);\n }\n\n function latestRoundData()\n external\n view\n returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound)\n {\n return (\n uint80(latestRound),\n getAnswer[latestRound],\n getStartedAt[latestRound],\n getTimestamp[latestRound],\n uint80(latestRound)\n );\n }\n\n function description() external pure returns (string memory) {\n return \"v0.6/tests/MockV3Aggregator.sol\";\n }\n\n function updateAnswer(int256 _answer) public {\n latestAnswer = _answer;\n latestTimestamp = block.timestamp;\n latestRound++;\n getAnswer[latestRound] = _answer;\n getTimestamp[latestRound] = block.timestamp;\n getStartedAt[latestRound] = block.timestamp;\n }\n\n function updateRoundData(uint80 _roundId, int256 _answer, uint256 _timestamp, uint256 _startedAt) public {\n latestRound = _roundId;\n latestAnswer = _answer;\n latestTimestamp = _timestamp;\n getAnswer[latestRound] = _answer;\n getTimestamp[latestRound] = _timestamp;\n getStartedAt[latestRound] = _startedAt;\n }\n}\n" - }, - "contracts/test/MockWBETH.sol": { - "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.0;\n\nimport { ERC20 } from \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport { IWBETH } from \"../interfaces/IWBETH.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\ncontract MockWBETH is ERC20, Ownable, IWBETH {\n uint8 private immutable _decimals;\n uint256 public override exchangeRate;\n\n constructor(string memory name_, string memory symbol_, uint8 decimals_) ERC20(name_, symbol_) Ownable() {\n _decimals = decimals_;\n }\n\n function faucet(uint256 amount) external {\n _mint(msg.sender, amount);\n }\n\n function setExchangeRate(uint256 rate) external onlyOwner {\n exchangeRate = rate;\n }\n\n function decimals() public view virtual override(ERC20, IWBETH) returns (uint8) {\n return _decimals;\n }\n}\n" - }, - "contracts/test/PancakePairHarness.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\n// a library for performing various math operations\n\nlibrary Math {\n function min(uint256 x, uint256 y) internal pure returns (uint256 z) {\n z = x < y ? x : y;\n }\n\n // babylonian method (https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method)\n function sqrt(uint256 y) internal pure returns (uint256 z) {\n if (y > 3) {\n z = y;\n uint256 x = y / 2 + 1;\n while (x < z) {\n z = x;\n x = (y / x + x) / 2;\n }\n } else if (y != 0) {\n z = 1;\n }\n }\n}\n\n// range: [0, 2**112 - 1]\n// resolution: 1 / 2**112\n\nlibrary UQ112x112 {\n //solhint-disable-next-line state-visibility\n uint224 constant Q112 = 2 ** 112;\n\n // encode a uint112 as a UQ112x112\n function encode(uint112 y) internal pure returns (uint224 z) {\n z = uint224(y) * Q112; // never overflows\n }\n\n // divide a UQ112x112 by a uint112, returning a UQ112x112\n function uqdiv(uint224 x, uint112 y) internal pure returns (uint224 z) {\n z = x / uint224(y);\n }\n}\n\ncontract PancakePairHarness {\n using UQ112x112 for uint224;\n\n address public token0;\n address public token1;\n\n uint112 private reserve0; // uses single storage slot, accessible via getReserves\n uint112 private reserve1; // uses single storage slot, accessible via getReserves\n uint32 private blockTimestampLast; // uses single storage slot, accessible via getReserves\n\n uint256 public price0CumulativeLast;\n uint256 public price1CumulativeLast;\n uint256 public kLast; // reserve0 * reserve1, as of immediately after the most recent liquidity event\n\n // called once by the factory at time of deployment\n function initialize(address _token0, address _token1) external {\n token0 = _token0;\n token1 = _token1;\n }\n\n // update reserves and, on the first call per block, price accumulators\n function update(uint256 balance0, uint256 balance1, uint112 _reserve0, uint112 _reserve1) external {\n require(balance0 <= type(uint112).max && balance1 <= type(uint112).max, \"PancakeV2: OVERFLOW\");\n uint32 blockTimestamp = uint32(block.timestamp % 2 ** 32);\n unchecked {\n uint32 timeElapsed = blockTimestamp - blockTimestampLast; // overflow is desired\n if (timeElapsed > 0 && _reserve0 != 0 && _reserve1 != 0) {\n // * never overflows, and + overflow is desired\n price0CumulativeLast += uint256(UQ112x112.encode(_reserve1).uqdiv(_reserve0)) * timeElapsed;\n price1CumulativeLast += uint256(UQ112x112.encode(_reserve0).uqdiv(_reserve1)) * timeElapsed;\n }\n }\n reserve0 = uint112(balance0);\n reserve1 = uint112(balance1);\n blockTimestampLast = blockTimestamp;\n }\n\n function currentBlockTimestamp() external view returns (uint32) {\n return uint32(block.timestamp % 2 ** 32);\n }\n\n function getReserves() public view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) {\n _reserve0 = reserve0;\n _reserve1 = reserve1;\n _blockTimestampLast = blockTimestampLast;\n }\n}\n" - }, - "contracts/test/VBEP20Harness.sol": { - "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"./BEP20Harness.sol\";\n\ncontract VBEP20Harness is BEP20Harness {\n /**\n * @notice Underlying asset for this VToken\n */\n address public underlying;\n\n constructor(\n string memory name_,\n string memory symbol_,\n uint8 decimals,\n address underlying_\n ) BEP20Harness(name_, symbol_, decimals) {\n underlying = underlying_;\n }\n}\n" - }, - "hardhat-deploy/solc_0.8/openzeppelin/access/Ownable.sol": { - "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable is Context {\n address private _owner;\n\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n /**\n * @dev Initializes the contract setting the deployer as the initial owner.\n */\n constructor (address initialOwner) {\n _transferOwnership(initialOwner);\n }\n\n /**\n * @dev Returns the address of the current owner.\n */\n function owner() public view virtual returns (address) {\n return _owner;\n }\n\n /**\n * @dev Throws if called by any account other than the owner.\n */\n modifier onlyOwner() {\n require(owner() == _msgSender(), \"Ownable: caller is not the owner\");\n _;\n }\n\n /**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions anymore. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby removing any functionality that is only available to the owner.\n */\n function renounceOwnership() public virtual onlyOwner {\n _transferOwnership(address(0));\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public virtual onlyOwner {\n require(newOwner != address(0), \"Ownable: new owner is the zero address\");\n _transferOwnership(newOwner);\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Internal function without access restriction.\n */\n function _transferOwnership(address newOwner) internal virtual {\n address oldOwner = _owner;\n _owner = newOwner;\n emit OwnershipTransferred(oldOwner, newOwner);\n }\n}\n" - }, - "hardhat-deploy/solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol": { - "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (interfaces/draft-IERC1822.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n * proxy whose upgrades are fully controlled by the current implementation.\n */\ninterface IERC1822Proxiable {\n /**\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\n * address.\n *\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n * function revert if invoked through a proxy.\n */\n function proxiableUUID() external view returns (bytes32);\n}\n" - }, - "hardhat-deploy/solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol": { - "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\n */\ninterface IBeacon {\n /**\n * @dev Must return an address that can be used as a delegate call target.\n *\n * {BeaconProxy} will check that this address is a contract.\n */\n function implementation() external view returns (address);\n}\n" - }, - "hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol": { - "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (proxy/ERC1967/ERC1967Proxy.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../Proxy.sol\";\nimport \"./ERC1967Upgrade.sol\";\n\n/**\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\n * implementation address that can be changed. This address is stored in storage in the location specified by\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\n * implementation behind the proxy.\n */\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\n /**\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\n *\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\n * function call, and allows initializating the storage of the proxy like a Solidity constructor.\n */\n constructor(address _logic, bytes memory _data) payable {\n assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256(\"eip1967.proxy.implementation\")) - 1));\n _upgradeToAndCall(_logic, _data, false);\n }\n\n /**\n * @dev Returns the current implementation address.\n */\n function _implementation() internal view virtual override returns (address impl) {\n return ERC1967Upgrade._getImplementation();\n }\n}\n" - }, - "hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol": { - "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/ERC1967/ERC1967Upgrade.sol)\n\npragma solidity ^0.8.2;\n\nimport \"../beacon/IBeacon.sol\";\nimport \"../../interfaces/draft-IERC1822.sol\";\nimport \"../../utils/Address.sol\";\nimport \"../../utils/StorageSlot.sol\";\n\n/**\n * @dev This abstract contract provides getters and event emitting update functions for\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\n *\n * _Available since v4.1._\n *\n * @custom:oz-upgrades-unsafe-allow delegatecall\n */\nabstract contract ERC1967Upgrade {\n // This is the keccak-256 hash of \"eip1967.proxy.rollback\" subtracted by 1\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\n\n /**\n * @dev Storage slot with the address of the current implementation.\n * This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is\n * validated in the constructor.\n */\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n\n /**\n * @dev Emitted when the implementation is upgraded.\n */\n event Upgraded(address indexed implementation);\n\n /**\n * @dev Returns the current implementation address.\n */\n function _getImplementation() internal view returns (address) {\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n }\n\n /**\n * @dev Stores a new address in the EIP1967 implementation slot.\n */\n function _setImplementation(address newImplementation) private {\n require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n }\n\n /**\n * @dev Perform implementation upgrade\n *\n * Emits an {Upgraded} event.\n */\n function _upgradeTo(address newImplementation) internal {\n _setImplementation(newImplementation);\n emit Upgraded(newImplementation);\n }\n\n /**\n * @dev Perform implementation upgrade with additional setup call.\n *\n * Emits an {Upgraded} event.\n */\n function _upgradeToAndCall(\n address newImplementation,\n bytes memory data,\n bool forceCall\n ) internal {\n _upgradeTo(newImplementation);\n if (data.length > 0 || forceCall) {\n Address.functionDelegateCall(newImplementation, data);\n }\n }\n\n /**\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\n *\n * Emits an {Upgraded} event.\n */\n function _upgradeToAndCallUUPS(\n address newImplementation,\n bytes memory data,\n bool forceCall\n ) internal {\n // Upgrades from old implementations will perform a rollback test. This test requires the new\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\n // this special case will break upgrade paths from old UUPS implementation to new ones.\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\n _setImplementation(newImplementation);\n } else {\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\n require(slot == _IMPLEMENTATION_SLOT, \"ERC1967Upgrade: unsupported proxiableUUID\");\n } catch {\n revert(\"ERC1967Upgrade: new implementation is not UUPS\");\n }\n _upgradeToAndCall(newImplementation, data, forceCall);\n }\n }\n\n /**\n * @dev Storage slot with the admin of the contract.\n * This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is\n * validated in the constructor.\n */\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\n\n /**\n * @dev Emitted when the admin account has changed.\n */\n event AdminChanged(address previousAdmin, address newAdmin);\n\n /**\n * @dev Returns the current admin.\n */\n function _getAdmin() internal view virtual returns (address) {\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\n }\n\n /**\n * @dev Stores a new address in the EIP1967 admin slot.\n */\n function _setAdmin(address newAdmin) private {\n require(newAdmin != address(0), \"ERC1967: new admin is the zero address\");\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\n }\n\n /**\n * @dev Changes the admin of the proxy.\n *\n * Emits an {AdminChanged} event.\n */\n function _changeAdmin(address newAdmin) internal {\n emit AdminChanged(_getAdmin(), newAdmin);\n _setAdmin(newAdmin);\n }\n\n /**\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\n */\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\n\n /**\n * @dev Emitted when the beacon is upgraded.\n */\n event BeaconUpgraded(address indexed beacon);\n\n /**\n * @dev Returns the current beacon.\n */\n function _getBeacon() internal view returns (address) {\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\n }\n\n /**\n * @dev Stores a new beacon in the EIP1967 beacon slot.\n */\n function _setBeacon(address newBeacon) private {\n require(Address.isContract(newBeacon), \"ERC1967: new beacon is not a contract\");\n require(Address.isContract(IBeacon(newBeacon).implementation()), \"ERC1967: beacon implementation is not a contract\");\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\n }\n\n /**\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\n *\n * Emits a {BeaconUpgraded} event.\n */\n function _upgradeBeaconToAndCall(\n address newBeacon,\n bytes memory data,\n bool forceCall\n ) internal {\n _setBeacon(newBeacon);\n emit BeaconUpgraded(newBeacon);\n if (data.length > 0 || forceCall) {\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\n }\n }\n}\n" - }, - "hardhat-deploy/solc_0.8/openzeppelin/proxy/Proxy.sol": { - "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/Proxy.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n * be specified by overriding the virtual {_implementation} function.\n *\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n * different contract through the {_delegate} function.\n *\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\n */\nabstract contract Proxy {\n /**\n * @dev Delegates the current call to `implementation`.\n *\n * This function does not return to its internal call site, it will return directly to the external caller.\n */\n function _delegate(address implementation) internal virtual {\n assembly {\n // Copy msg.data. We take full control of memory in this inline assembly\n // block because it will not return to Solidity code. We overwrite the\n // Solidity scratch pad at memory position 0.\n calldatacopy(0, 0, calldatasize())\n\n // Call the implementation.\n // out and outsize are 0 because we don't know the size yet.\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\n\n // Copy the returned data.\n returndatacopy(0, 0, returndatasize())\n\n switch result\n // delegatecall returns 0 on error.\n case 0 {\n revert(0, returndatasize())\n }\n default {\n return(0, returndatasize())\n }\n }\n }\n\n /**\n * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\n * and {_fallback} should delegate.\n */\n function _implementation() internal view virtual returns (address);\n\n /**\n * @dev Delegates the current call to the address returned by `_implementation()`.\n *\n * This function does not return to its internall call site, it will return directly to the external caller.\n */\n function _fallback() internal virtual {\n _beforeFallback();\n _delegate(_implementation());\n }\n\n /**\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n * function in the contract matches the call data.\n */\n fallback() external payable virtual {\n _fallback();\n }\n\n /**\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\n * is empty.\n */\n receive() external payable virtual {\n _fallback();\n }\n\n /**\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\n * call, or as part of the Solidity `fallback` or `receive` functions.\n *\n * If overriden should call `super._beforeFallback()`.\n */\n function _beforeFallback() internal virtual {}\n}\n" - }, - "hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/ProxyAdmin.sol": { - "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (proxy/transparent/ProxyAdmin.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./TransparentUpgradeableProxy.sol\";\nimport \"../../access/Ownable.sol\";\n\n/**\n * @dev This is an auxiliary contract meant to be assigned as the admin of a {TransparentUpgradeableProxy}. For an\n * explanation of why you would want to use this see the documentation for {TransparentUpgradeableProxy}.\n */\ncontract ProxyAdmin is Ownable {\n\n constructor (address initialOwner) Ownable(initialOwner) {}\n\n /**\n * @dev Returns the current implementation of `proxy`.\n *\n * Requirements:\n *\n * - This contract must be the admin of `proxy`.\n */\n function getProxyImplementation(TransparentUpgradeableProxy proxy) public view virtual returns (address) {\n // We need to manually run the static call since the getter cannot be flagged as view\n // bytes4(keccak256(\"implementation()\")) == 0x5c60da1b\n (bool success, bytes memory returndata) = address(proxy).staticcall(hex\"5c60da1b\");\n require(success);\n return abi.decode(returndata, (address));\n }\n\n /**\n * @dev Returns the current admin of `proxy`.\n *\n * Requirements:\n *\n * - This contract must be the admin of `proxy`.\n */\n function getProxyAdmin(TransparentUpgradeableProxy proxy) public view virtual returns (address) {\n // We need to manually run the static call since the getter cannot be flagged as view\n // bytes4(keccak256(\"admin()\")) == 0xf851a440\n (bool success, bytes memory returndata) = address(proxy).staticcall(hex\"f851a440\");\n require(success);\n return abi.decode(returndata, (address));\n }\n\n /**\n * @dev Changes the admin of `proxy` to `newAdmin`.\n *\n * Requirements:\n *\n * - This contract must be the current admin of `proxy`.\n */\n function changeProxyAdmin(TransparentUpgradeableProxy proxy, address newAdmin) public virtual onlyOwner {\n proxy.changeAdmin(newAdmin);\n }\n\n /**\n * @dev Upgrades `proxy` to `implementation`. See {TransparentUpgradeableProxy-upgradeTo}.\n *\n * Requirements:\n *\n * - This contract must be the admin of `proxy`.\n */\n function upgrade(TransparentUpgradeableProxy proxy, address implementation) public virtual onlyOwner {\n proxy.upgradeTo(implementation);\n }\n\n /**\n * @dev Upgrades `proxy` to `implementation` and calls a function on the new implementation. See\n * {TransparentUpgradeableProxy-upgradeToAndCall}.\n *\n * Requirements:\n *\n * - This contract must be the admin of `proxy`.\n */\n function upgradeAndCall(\n TransparentUpgradeableProxy proxy,\n address implementation,\n bytes memory data\n ) public payable virtual onlyOwner {\n proxy.upgradeToAndCall{value: msg.value}(implementation, data);\n }\n}\n" - }, - "hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol": { - "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (proxy/transparent/TransparentUpgradeableProxy.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../ERC1967/ERC1967Proxy.sol\";\n\n/**\n * @dev This contract implements a proxy that is upgradeable by an admin.\n *\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\n * clashing], which can potentially be used in an attack, this contract uses the\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\n * things that go hand in hand:\n *\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\n * that call matches one of the admin functions exposed by the proxy itself.\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\n * \"admin cannot fallback to proxy target\".\n *\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\n * the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due\n * to sudden errors when trying to call a function from the proxy implementation.\n *\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\n */\ncontract TransparentUpgradeableProxy is ERC1967Proxy {\n /**\n * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\n * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\n */\n constructor(\n address _logic,\n address admin_,\n bytes memory _data\n ) payable ERC1967Proxy(_logic, _data) {\n assert(_ADMIN_SLOT == bytes32(uint256(keccak256(\"eip1967.proxy.admin\")) - 1));\n _changeAdmin(admin_);\n }\n\n /**\n * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\n */\n modifier ifAdmin() {\n if (msg.sender == _getAdmin()) {\n _;\n } else {\n _fallback();\n }\n }\n\n /**\n * @dev Returns the current admin.\n *\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\n *\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\n */\n function admin() external ifAdmin returns (address admin_) {\n admin_ = _getAdmin();\n }\n\n /**\n * @dev Returns the current implementation.\n *\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\n *\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\n */\n function implementation() external ifAdmin returns (address implementation_) {\n implementation_ = _implementation();\n }\n\n /**\n * @dev Changes the admin of the proxy.\n *\n * Emits an {AdminChanged} event.\n *\n * NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}.\n */\n function changeAdmin(address newAdmin) external virtual ifAdmin {\n _changeAdmin(newAdmin);\n }\n\n /**\n * @dev Upgrade the implementation of the proxy.\n *\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\n */\n function upgradeTo(address newImplementation) external ifAdmin {\n _upgradeToAndCall(newImplementation, bytes(\"\"), false);\n }\n\n /**\n * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\n * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\n * proxied contract.\n *\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\n */\n function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {\n _upgradeToAndCall(newImplementation, data, true);\n }\n\n /**\n * @dev Returns the current admin.\n */\n function _admin() internal view virtual returns (address) {\n return _getAdmin();\n }\n\n /**\n * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.\n */\n function _beforeFallback() internal virtual override {\n require(msg.sender != _getAdmin(), \"TransparentUpgradeableProxy: admin cannot fallback to proxy target\");\n super._beforeFallback();\n }\n}\n" - }, - "hardhat-deploy/solc_0.8/openzeppelin/utils/Address.sol": { - "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (utils/Address.sol)\n\npragma solidity ^0.8.1;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n /**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n * ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a contract.\n *\n * Among others, `isContract` will return false for the following\n * types of addresses:\n *\n * - an externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a contract lived, but was destroyed\n * ====\n *\n * [IMPORTANT]\n * ====\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\n *\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n * constructor.\n * ====\n */\n function isContract(address account) internal view returns (bool) {\n // This method relies on extcodesize/address.code.length, which returns 0\n // for contracts in construction, since the code is only stored at the end\n // of the constructor execution.\n\n return account.code.length > 0;\n }\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n (bool success, ) = recipient.call{value: amount}(\"\");\n require(success, \"Address: unable to send value, recipient may have reverted\");\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason, it is bubbled up by this\n * function (like regular Solidity function calls).\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n *\n * _Available since v3.1._\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCall(target, data, \"Address: low-level call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n * `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n * with `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value,\n string memory errorMessage\n ) internal returns (bytes memory) {\n require(address(this).balance >= value, \"Address: insufficient balance for call\");\n require(isContract(target), \"Address: call to non-contract\");\n\n (bool success, bytes memory returndata) = target.call{value: value}(data);\n return verifyCallResult(success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n return functionStaticCall(target, data, \"Address: low-level static call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n require(isContract(target), \"Address: static call to non-contract\");\n\n (bool success, bytes memory returndata) = target.staticcall(data);\n return verifyCallResult(success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n require(isContract(target), \"Address: delegate call to non-contract\");\n\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return verifyCallResult(success, returndata, errorMessage);\n }\n\n /**\n * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\n * revert reason using the provided one.\n *\n * _Available since v4.3._\n */\n function verifyCallResult(\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal pure returns (bytes memory) {\n if (success) {\n return returndata;\n } else {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(errorMessage);\n }\n }\n }\n}\n" - }, - "hardhat-deploy/solc_0.8/openzeppelin/utils/Context.sol": { - "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n}\n" - }, - "hardhat-deploy/solc_0.8/openzeppelin/utils/StorageSlot.sol": { - "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/StorageSlot.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Library for reading and writing primitive types to specific storage slots.\n *\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n * This library helps with reading and writing to such slots without the need for inline assembly.\n *\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n *\n * Example usage to set ERC1967 implementation slot:\n * ```\n * contract ERC1967 {\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n *\n * function _getImplementation() internal view returns (address) {\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n * }\n *\n * function _setImplementation(address newImplementation) internal {\n * require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n * }\n * }\n * ```\n *\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\n */\nlibrary StorageSlot {\n struct AddressSlot {\n address value;\n }\n\n struct BooleanSlot {\n bool value;\n }\n\n struct Bytes32Slot {\n bytes32 value;\n }\n\n struct Uint256Slot {\n uint256 value;\n }\n\n /**\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\n */\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\n */\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\n */\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\n */\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\n assembly {\n r.slot := slot\n }\n }\n}\n" - }, - "hardhat-deploy/solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol": { - "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (proxy/transparent/TransparentUpgradeableProxy.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../openzeppelin/proxy/ERC1967/ERC1967Proxy.sol\";\n\n/**\n * @dev This contract implements a proxy that is upgradeable by an admin.\n *\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\n * clashing], which can potentially be used in an attack, this contract uses the\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\n * things that go hand in hand:\n *\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\n * that call matches one of the admin functions exposed by the proxy itself.\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\n * \"admin cannot fallback to proxy target\".\n *\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\n * the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due\n * to sudden errors when trying to call a function from the proxy implementation.\n *\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\n */\ncontract OptimizedTransparentUpgradeableProxy is ERC1967Proxy {\n address internal immutable _ADMIN;\n\n /**\n * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\n * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\n */\n constructor(\n address _logic,\n address admin_,\n bytes memory _data\n ) payable ERC1967Proxy(_logic, _data) {\n assert(_ADMIN_SLOT == bytes32(uint256(keccak256(\"eip1967.proxy.admin\")) - 1));\n _ADMIN = admin_;\n\n // still store it to work with EIP-1967\n bytes32 slot = _ADMIN_SLOT;\n // solhint-disable-next-line no-inline-assembly\n assembly {\n sstore(slot, admin_)\n }\n emit AdminChanged(address(0), admin_);\n }\n\n /**\n * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\n */\n modifier ifAdmin() {\n if (msg.sender == _getAdmin()) {\n _;\n } else {\n _fallback();\n }\n }\n\n /**\n * @dev Returns the current admin.\n *\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\n *\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\n */\n function admin() external ifAdmin returns (address admin_) {\n admin_ = _getAdmin();\n }\n\n /**\n * @dev Returns the current implementation.\n *\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\n *\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\n */\n function implementation() external ifAdmin returns (address implementation_) {\n implementation_ = _implementation();\n }\n\n /**\n * @dev Upgrade the implementation of the proxy.\n *\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\n */\n function upgradeTo(address newImplementation) external ifAdmin {\n _upgradeToAndCall(newImplementation, bytes(\"\"), false);\n }\n\n /**\n * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\n * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\n * proxied contract.\n *\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\n */\n function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {\n _upgradeToAndCall(newImplementation, data, true);\n }\n\n /**\n * @dev Returns the current admin.\n */\n function _admin() internal view virtual returns (address) {\n return _getAdmin();\n }\n\n /**\n * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.\n */\n function _beforeFallback() internal virtual override {\n require(msg.sender != _getAdmin(), \"TransparentUpgradeableProxy: admin cannot fallback to proxy target\");\n super._beforeFallback();\n }\n\n function _getAdmin() internal view virtual override returns (address) {\n return _ADMIN;\n }\n}\n" - } - }, - "settings": { - "optimizer": { - "enabled": true, - "runs": 200, - "details": { - "yul": true - } - }, - "evmVersion": "cancun", - "outputSelection": { - "*": { - "*": [ - "storageLayout", - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata", - "devdoc", - "userdoc", - "evm.gasEstimates" - ], - "": ["ast"] - } - }, - "metadata": { - "useLiteralContent": true - } - } -} diff --git a/deployments/berachainbepolia_addresses.json b/deployments/berachainbepolia_addresses.json deleted file mode 100644 index 78d1fd4e..00000000 --- a/deployments/berachainbepolia_addresses.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "berachainbepolia", - "chainId": "80069", - "addresses": { - "BoundValidator": "0xd3A635930300ea87548A1C3428Ac5DDfE3FFE66E", - "BoundValidator_Implementation": "0xd24c0795BaEA6D79a45def90889bc4Dd4fd19a62", - "BoundValidator_Proxy": "0xd3A635930300ea87548A1C3428Ac5DDfE3FFE66E", - "ChainlinkOracle": "0xF7451caCcb32E6E3695e4B4bcF42152D57B73aD5", - "ChainlinkOracle_Implementation": "0x9eA68754e5AB4717b2b0Dd310f7fA03A9c57c0Df", - "ChainlinkOracle_Proxy": "0xF7451caCcb32E6E3695e4B4bcF42152D57B73aD5", - "DefaultProxyAdmin": "0x09f0Cf4eD50ed01994900CE9ee1ae85BFECd5c66", - "RedStoneOracle": "0xedc00668FC314fcc85a574c8DBa0BB205810F247", - "RedStoneOracle_Implementation": "0x33baAA71Fdb915275908c80A383874096c5ecdEa", - "RedStoneOracle_Proxy": "0xedc00668FC314fcc85a574c8DBa0BB205810F247", - "ResilientOracle": "0x150B667d42FB80409f162aB84065f0c8E9B3A7a0", - "ResilientOracle_Implementation": "0xffCb974c4E2c9EE9107d966530d485bDBd98bBAA", - "ResilientOracle_Proxy": "0x150B667d42FB80409f162aB84065f0c8E9B3A7a0" - } -} diff --git a/hardhat.config.ts b/hardhat.config.ts index 75b98ef8..ebaafb94 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -203,12 +203,6 @@ const config: HardhatUserConfig = { live: true, accounts: process.env.DEPLOYER_PRIVATE_KEY ? [`0x${process.env.DEPLOYER_PRIVATE_KEY}`] : [], }, - berachainbepolia: { - url: process.env.ARCHIVE_NODE_berachainbepolia || "https://bepolia.rpc.berachain.com", - chainId: 80069, - live: true, - accounts: process.env.DEPLOYER_PRIVATE_KEY ? [`0x${process.env.DEPLOYER_PRIVATE_KEY}`] : [], - }, }, etherscan: { apiKey: { @@ -226,7 +220,6 @@ const config: HardhatUserConfig = { basemainnet: process.env.ETHERSCAN_API_KEY || "ETHERSCAN_API_KEY", unichainsepolia: process.env.ETHERSCAN_API_KEY || "ETHERSCAN_API_KEY", unichainmainnet: process.env.ETHERSCAN_API_KEY || "ETHERSCAN_API_KEY", - berachainbepolia: process.env.ETHERSCAN_API_KEY || "ETHERSCAN_API_KEY", }, customChains: [ { @@ -341,14 +334,6 @@ const config: HardhatUserConfig = { browserURL: "https://uniscan.xyz/", }, }, - { - network: "berachainbepolia", - chainId: 80069, - urls: { - apiURL: "https://api.routescan.io/v2/network/testnet/evm/80084/etherscan", - browserURL: "https://bepolia.beratrail.io", - }, - }, ], }, paths: { diff --git a/helpers/deploymentConfig.ts b/helpers/deploymentConfig.ts index dec77307..ba5e682d 100644 --- a/helpers/deploymentConfig.ts +++ b/helpers/deploymentConfig.ts @@ -335,13 +335,6 @@ export const ADDRESSES: PreconfiguredAddresses = { wstETH: "0xc02fE7317D4eb8753a02c35fe019786854A92001", timelock: "0x1803Cf1D3495b43cC628aa1d8638A981F8CD341C", // Unichain mainnet guardian }, - berachainbepolia: { - acm: "0x243313C1cC198FF80756ed2ef14D9dcd94Ee762b", - vBNBAddress: ethers.constants.AddressZero, - WBNBAddress: ethers.constants.AddressZero, - VAIAddress: ethers.constants.AddressZero, - timelock: "0xAb3DBA18664B96AD54459D06Ca8BD18C9146d5CE", - }, }; export const chainlinkFeed: Config = { From e165afcccf3dd5745dfff2942595aa3d72ae81a6 Mon Sep 17 00:00:00 2001 From: web3rover Date: Thu, 7 Aug 2025 14:19:20 +0530 Subject: [PATCH 12/24] fix: fixed yarn lock --- yarn.lock | 24 +----------------------- 1 file changed, 1 insertion(+), 23 deletions(-) diff --git a/yarn.lock b/yarn.lock index d1287ca6..414a7486 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3974,29 +3974,7 @@ __metadata: languageName: node linkType: hard -"@venusprotocol/oracle@npm:^2.7.0": - version: 2.12.0 - resolution: "@venusprotocol/oracle@npm:2.12.0" - dependencies: - "@chainlink/contracts": ^0.5.1 - "@defi-wonderland/smock": 2.4.0 - "@nomicfoundation/hardhat-network-helpers": ^1.0.8 - "@openzeppelin/contracts": ^4.6.0 - "@openzeppelin/contracts-upgradeable": ^4.7.3 - "@venusprotocol/governance-contracts": ^2.9.0 - "@venusprotocol/solidity-utilities": ^2.0.0 - "@venusprotocol/venus-protocol": ^9.7.0 - ethers: ^5.6.8 - hardhat: 2.22.15 - hardhat-deploy: ^0.12.4 - module-alias: ^2.2.2 - patch-package: ^8.0.0 - solidity-docgen: ^0.6.0-beta.29 - checksum: 26b9b09878aa6cbc2fa677f3710dddf20ce760fb746b9ef8c0287a8dc88b7023ce6ff3e4380b918484ad2c698fac3de1ce45d4cc3d6cb50647081460843ca303 - languageName: node - linkType: hard - -"@venusprotocol/oracle@workspace:.": +"@venusprotocol/oracle@^2.7.0, @venusprotocol/oracle@workspace:.": version: 0.0.0-use.local resolution: "@venusprotocol/oracle@workspace:." dependencies: From 95eea272acc5b3bf17dbdb06a688ae4a534c46e5 Mon Sep 17 00:00:00 2001 From: Venus Tools Date: Mon, 11 Aug 2025 05:23:58 +0000 Subject: [PATCH 13/24] chore(release): 2.14.0-dev.1 [skip ci] ## [2.14.0-dev.1](https://github.com/VenusProtocol/oracle/compare/v2.13.0...v2.14.0-dev.1) (2025-08-11) ### Features * could use different contracts to get the wstETH ratio ([bd60eb8](https://github.com/VenusProtocol/oracle/commit/bd60eb88975228113195c0d4a1df3dabc61afb4d)) * updating deployment files ([2541103](https://github.com/VenusProtocol/oracle/commit/25411038a1c2afb632d5377874349f62b98e03eb)) ### Bug Fixes * added caps ([43179a0](https://github.com/VenusProtocol/oracle/commit/43179a0ddaaacb52ca3130efcbae9cd36246bb45)) * deployed oracle ([0d41742](https://github.com/VenusProtocol/oracle/commit/0d4174201e5570a60c612bd831acf2ffc57bc4a9)) * fixed deploy script ([e4f1e16](https://github.com/VenusProtocol/oracle/commit/e4f1e166b9edf8451caaac96e2abc12f04a1074c)) * fixed ut ([6809779](https://github.com/VenusProtocol/oracle/commit/6809779b51cd4a4db0ba6c8a6620738165129966)) * fixed yarn lock ([e165afc](https://github.com/VenusProtocol/oracle/commit/e165afcccf3dd5745dfff2942595aa3d72ae81a6)) * removed berachain deployment ([cf0ff73](https://github.com/VenusProtocol/oracle/commit/cf0ff73bc19f1f17e48366b8aebda1ca9130f4df)) * removed proxy ([549f763](https://github.com/VenusProtocol/oracle/commit/549f763fa34f4b0e708f9be6aa8649dcaae8a8cc)) --- CHANGELOG.md | 19 +++++++++++++++++++ package.json | 2 +- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7b2ba984..7e5f701b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,22 @@ +## [2.14.0-dev.1](https://github.com/VenusProtocol/oracle/compare/v2.13.0...v2.14.0-dev.1) (2025-08-11) + + +### Features + +* could use different contracts to get the wstETH ratio ([bd60eb8](https://github.com/VenusProtocol/oracle/commit/bd60eb88975228113195c0d4a1df3dabc61afb4d)) +* updating deployment files ([2541103](https://github.com/VenusProtocol/oracle/commit/25411038a1c2afb632d5377874349f62b98e03eb)) + + +### Bug Fixes + +* added caps ([43179a0](https://github.com/VenusProtocol/oracle/commit/43179a0ddaaacb52ca3130efcbae9cd36246bb45)) +* deployed oracle ([0d41742](https://github.com/VenusProtocol/oracle/commit/0d4174201e5570a60c612bd831acf2ffc57bc4a9)) +* fixed deploy script ([e4f1e16](https://github.com/VenusProtocol/oracle/commit/e4f1e166b9edf8451caaac96e2abc12f04a1074c)) +* fixed ut ([6809779](https://github.com/VenusProtocol/oracle/commit/6809779b51cd4a4db0ba6c8a6620738165129966)) +* fixed yarn lock ([e165afc](https://github.com/VenusProtocol/oracle/commit/e165afcccf3dd5745dfff2942595aa3d72ae81a6)) +* removed berachain deployment ([cf0ff73](https://github.com/VenusProtocol/oracle/commit/cf0ff73bc19f1f17e48366b8aebda1ca9130f4df)) +* removed proxy ([549f763](https://github.com/VenusProtocol/oracle/commit/549f763fa34f4b0e708f9be6aa8649dcaae8a8cc)) + ## [2.13.0](https://github.com/VenusProtocol/oracle/compare/v2.12.0...v2.13.0) (2025-07-01) diff --git a/package.json b/package.json index 6642c66b..b4913783 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@venusprotocol/oracle", "description": "Venus Protocol Price Oracle", - "version": "2.13.0", + "version": "2.14.0-dev.1", "author": "Venus", "engines": { "node": ">=18.x.x" From de0e15690cad6b713069ea9200a7a4b2d359bfef Mon Sep 17 00:00:00 2001 From: GitGuru7 Date: Fri, 26 Sep 2025 13:34:01 +0530 Subject: [PATCH 14/24] feat: add PT-USDe oracle deployemnts --- deploy/24-deploy-USDe-pendle-oracles.ts | 82 ++ .../PendleOracle-PT-USDe-30Oct2025.json | 785 ++++++++++++++++++ .../26a7070d6dc65f243bcdfd66c9c6afcc.json | 241 ++++++ helpers/deploymentConfig.ts | 1 + 4 files changed, 1109 insertions(+) create mode 100644 deploy/24-deploy-USDe-pendle-oracles.ts create mode 100644 deployments/bsctestnet/PendleOracle-PT-USDe-30Oct2025.json create mode 100644 deployments/bsctestnet/solcInputs/26a7070d6dc65f243bcdfd66c9c6afcc.json diff --git a/deploy/24-deploy-USDe-pendle-oracles.ts b/deploy/24-deploy-USDe-pendle-oracles.ts new file mode 100644 index 00000000..7d0a6795 --- /dev/null +++ b/deploy/24-deploy-USDe-pendle-oracles.ts @@ -0,0 +1,82 @@ +import { ethers } from "hardhat"; +import { DeployFunction } from "hardhat-deploy/dist/types"; +import { HardhatRuntimeEnvironment } from "hardhat/types"; + +import { ADDRESSES } from "../helpers/deploymentConfig"; +import { isMainnet } from "../helpers/deploymentUtils"; + +enum PendleRateKind { + PT_TO_ASSET = 0, + PT_TO_SY = 1, +} + +const func: DeployFunction = async ({ getNamedAccounts, deployments, network }: HardhatRuntimeEnvironment) => { + const { deploy } = deployments; + const { deployer } = await getNamedAccounts(); + + const resilientOracle = await ethers.getContract("ResilientOracle"); + const addresses = ADDRESSES[network.name]; + const ptOracleAddress = addresses.PTOracle || (await ethers.getContract("MockPendlePtOracle")).address; + + const commonParams = { + from: deployer, + log: true, + deterministicDeployment: false, + skipIfAlreadyDeployed: true, + waitConfirmations: 1, + }; + + await deploy("PendleOracle-PT-USDe-30Oct2025", { + contract: "PendleOracle", + args: [ + { + market: addresses["PT-USDe-30Oct2025_Market"] || "0x0000000000000000000000000000000000000003", + ptOracle: ptOracleAddress, + rateKind: PendleRateKind.PT_TO_SY, + ptToken: addresses["PT-USDe-30Oct2025"], + underlyingToken: addresses.USDe, + resilientOracle: resilientOracle.address, + twapDuration: 1800, + annualGrowthRate: 0, + snapshotInterval: 0, + initialSnapshotMaxExchangeRate: 0, + initialSnapshotTimestamp: 0, + accessControlManager: addresses.acm, + snapshotGap: 0, + }, + ], + ...commonParams, + }); + + if (isMainnet(network)) { + await deploy("PendleOracle-PT-USDe-30Oct2025_Reference_PtToAsset", { + contract: "PendleOracle", + from: deployer, + log: true, + deterministicDeployment: false, + args: [ + { + market: addresses["PT-USDe-30Oct2025_Market"] || "0x0000000000000000000000000000000000000003", + ptOracle: ptOracleAddress, + rateKind: PendleRateKind.PT_TO_ASSET, + ptToken: addresses["PT-USDe-30Oct2025"], + underlyingToken: addresses.USDe, + resilientOracle: resilientOracle.address, + twapDuration: 1800, + annualGrowthRate: 0, + snapshotInterval: 0, + initialSnapshotMaxExchangeRate: 0, + initialSnapshotTimestamp: 0, + accessControlManager: addresses.acm, + snapshotGap: 0, + }, + ], + skipIfAlreadyDeployed: true, + }); + } +}; + +export default func; +func.tags = ["PT-USDe"]; +func.skip = async (hre: HardhatRuntimeEnvironment) => + hre.network.name !== "bsctestnet" && hre.network.name !== "bscmainnet"; diff --git a/deployments/bsctestnet/PendleOracle-PT-USDe-30Oct2025.json b/deployments/bsctestnet/PendleOracle-PT-USDe-30Oct2025.json new file mode 100644 index 00000000..1b5cebaf --- /dev/null +++ b/deployments/bsctestnet/PendleOracle-PT-USDe-30Oct2025.json @@ -0,0 +1,785 @@ +{ + "address": "0x6c41e88f4ac0BD30e57cE4094CFE7524661F5Ef3", + "abi": [ + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "market", + "type": "address" + }, + { + "internalType": "address", + "name": "ptOracle", + "type": "address" + }, + { + "internalType": "enum PendleOracle.RateKind", + "name": "rateKind", + "type": "uint8" + }, + { + "internalType": "address", + "name": "ptToken", + "type": "address" + }, + { + "internalType": "address", + "name": "underlyingToken", + "type": "address" + }, + { + "internalType": "address", + "name": "resilientOracle", + "type": "address" + }, + { + "internalType": "uint32", + "name": "twapDuration", + "type": "uint32" + }, + { + "internalType": "uint256", + "name": "annualGrowthRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "snapshotInterval", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "initialSnapshotMaxExchangeRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "initialSnapshotTimestamp", + "type": "uint256" + }, + { + "internalType": "address", + "name": "accessControlManager", + "type": "address" + }, + { + "internalType": "uint256", + "name": "snapshotGap", + "type": "uint256" + } + ], + "internalType": "struct PendleOracle.ConstructorParams", + "name": "params", + "type": "tuple" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "InvalidDuration", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidGrowthRate", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialSnapshot", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidSnapshotMaxExchangeRate", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidTokenAddress", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "calledContract", + "type": "address" + }, + { + "internalType": "string", + "name": "methodSignature", + "type": "string" + } + ], + "name": "Unauthorized", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroAddressNotAllowed", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroValueNotAllowed", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "oldGrowthRatePerSecond", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newGrowthRatePerSecond", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "oldSnapshotInterval", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newSnapshotInterval", + "type": "uint256" + } + ], + "name": "GrowthRateUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "oldSnapshotGap", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newSnapshotGap", + "type": "uint256" + } + ], + "name": "SnapshotGapUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "maxExchangeRate", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "name": "SnapshotUpdated", + "type": "event" + }, + { + "inputs": [], + "name": "ACCESS_CONTROL_MANAGER", + "outputs": [ + { + "internalType": "contract IAccessControlManagerV8", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "CORRELATED_TOKEN", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MARKET", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PT_ORACLE", + "outputs": [ + { + "internalType": "contract IPendlePtOracle", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "RATE_KIND", + "outputs": [ + { + "internalType": "enum PendleOracle.RateKind", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "RESILIENT_ORACLE", + "outputs": [ + { + "internalType": "contract ResilientOracleInterface", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "TWAP_DURATION", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UNDERLYING_DECIMALS", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UNDERLYING_TOKEN", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getMaxAllowedExchangeRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "getPrice", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getUnderlyingAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "growthRatePerSecond", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "isCapped", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_annualGrowthRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_snapshotInterval", + "type": "uint256" + } + ], + "name": "setGrowthRate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_snapshotMaxExchangeRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_snapshotTimestamp", + "type": "uint256" + } + ], + "name": "setSnapshot", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_snapshotGap", + "type": "uint256" + } + ], + "name": "setSnapshotGap", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "snapshotGap", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "snapshotInterval", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "snapshotMaxExchangeRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "snapshotTimestamp", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "updateSnapshot", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "transactionHash": "0x91cfa74ca4e84aebeb2e4ebb925558a161aaa37cf17c8bcffe15f5188c1d268d", + "receipt": { + "to": null, + "from": "0xe2a089cA69a90f1E27E723EFD339Cff4c4701AcC", + "contractAddress": "0x6c41e88f4ac0BD30e57cE4094CFE7524661F5Ef3", + "transactionIndex": 0, + "gasUsed": "941190", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0xaeb0da976e6cfb7b743c713a06ece0755925a3d2c057869d0a3e0fe8e643e2f3", + "transactionHash": "0x91cfa74ca4e84aebeb2e4ebb925558a161aaa37cf17c8bcffe15f5188c1d268d", + "logs": [], + "blockNumber": 66694300, + "cumulativeGasUsed": "941190", + "status": 1, + "byzantium": true + }, + "args": [ + { + "market": "0x0000000000000000000000000000000000000003", + "ptOracle": "0xa37A9127C302fEc17d456a6E1a5643a18a1779aD", + "rateKind": 1, + "ptToken": "0x3099fc25fCdE347D42a22329147d47aB0b0eb6Dd", + "underlyingToken": "0x986C30591f5aAb401ea3aa63aFA595608721B1B9", + "resilientOracle": "0x3cD69251D04A28d887Ac14cbe2E14c52F3D57823", + "twapDuration": 1800, + "annualGrowthRate": 0, + "snapshotInterval": 0, + "initialSnapshotMaxExchangeRate": 0, + "initialSnapshotTimestamp": 0, + "accessControlManager": "0x45f8a08F534f34A97187626E05d4b6648Eeaa9AA", + "snapshotGap": 0 + } + ], + "numDeployments": 1, + "solcInputHash": "26a7070d6dc65f243bcdfd66c9c6afcc", + "metadata": "{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"market\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"ptOracle\",\"type\":\"address\"},{\"internalType\":\"enum PendleOracle.RateKind\",\"name\":\"rateKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"ptToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"underlyingToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resilientOracle\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"twapDuration\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"annualGrowthRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"snapshotInterval\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSnapshotMaxExchangeRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSnapshotTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"accessControlManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"snapshotGap\",\"type\":\"uint256\"}],\"internalType\":\"struct PendleOracle.ConstructorParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidDuration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidGrowthRate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialSnapshot\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSnapshotMaxExchangeRate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"calledContract\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"methodSignature\",\"type\":\"string\"}],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroValueNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldGrowthRatePerSecond\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newGrowthRatePerSecond\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldSnapshotInterval\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSnapshotInterval\",\"type\":\"uint256\"}],\"name\":\"GrowthRateUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldSnapshotGap\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newSnapshotGap\",\"type\":\"uint256\"}],\"name\":\"SnapshotGapUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maxExchangeRate\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"SnapshotUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ACCESS_CONTROL_MANAGER\",\"outputs\":[{\"internalType\":\"contract IAccessControlManagerV8\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CORRELATED_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MARKET\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PT_ORACLE\",\"outputs\":[{\"internalType\":\"contract IPendlePtOracle\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RATE_KIND\",\"outputs\":[{\"internalType\":\"enum PendleOracle.RateKind\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RESILIENT_ORACLE\",\"outputs\":[{\"internalType\":\"contract ResilientOracleInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TWAP_DURATION\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UNDERLYING_DECIMALS\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UNDERLYING_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaxAllowedExchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUnderlyingAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"growthRatePerSecond\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isCapped\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_annualGrowthRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotInterval\",\"type\":\"uint256\"}],\"name\":\"setGrowthRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_snapshotMaxExchangeRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotTimestamp\",\"type\":\"uint256\"}],\"name\":\"setSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_snapshotGap\",\"type\":\"uint256\"}],\"name\":\"setSnapshotGap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotGap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotInterval\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotMaxExchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Venus\",\"details\":\"As a base price the oracle uses either the price of the Pendle market's asset (in this case PT_TO_ASSET rate should be used) or the price of the Pendle market's interest bearing token (e.g. wstETH for stETH; in this case PT_TO_SY rate should be used). Technically, interest bearing token is different from standardized yield (SY) token, but since SY is a wrapper around an interest bearing token, we can safely assume the prices of the two are equal. This is not always true for asset price though: using PT_TO_ASSET rate assumes that the yield token can be seamlessly redeemed for the underlying asset. In reality, this might not always be the case. For more details, see https://docs.pendle.finance/Developers/Contracts/StandardizedYield\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"custom:error\":\"InvalidDuration Thrown if the duration is invalid\"},\"getMaxAllowedExchangeRate()\":{\"returns\":{\"_0\":\"maxExchangeRate Maximum allowed exchange rate\"}},\"getPrice(address)\":{\"custom:error\":\"InvalidTokenAddress error is thrown if the token address is invalid\",\"params\":{\"asset\":\"Address of the token\"},\"returns\":{\"_0\":\"price The price of the token in scaled decimal places. It can be capped to a maximum value taking into account the growth rate\"}},\"getUnderlyingAmount()\":{\"returns\":{\"_0\":\"amount The amount of underlying token (either the market's asset or the yield token) for 1 PT, adjusted for decimals such that the result has the same precision as the underlying token\"}},\"isCapped()\":{\"returns\":{\"_0\":\"isCapped Boolean indicating if the price is capped\"}},\"setGrowthRate(uint256,uint256)\":{\"custom:error\":\"InvalidGrowthRate error is thrown if the growth rate is invalid\",\"custom:event\":\"Emits GrowthRateUpdated event on successful update of the growth rate\",\"params\":{\"_annualGrowthRate\":\"The annual growth rate to set\",\"_snapshotInterval\":\"The snapshot interval to set\"}},\"setSnapshot(uint256,uint256)\":{\"custom:event\":\"Emits SnapshotUpdated event on successful update of the snapshot\",\"params\":{\"_snapshotMaxExchangeRate\":\"The exchange rate to set\",\"_snapshotTimestamp\":\"The timestamp to set\"}},\"setSnapshotGap(uint256)\":{\"custom:event\":\"Emits SnapshotGapUpdated event on successful update of the snapshot gap\",\"params\":{\"_snapshotGap\":\"The snapshot gap to set\"}},\"updateSnapshot()\":{\"custom:error\":\"InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero\",\"custom:event\":\"Emits SnapshotUpdated event on successful update of the snapshot\"}},\"stateVariables\":{\"UNDERLYING_DECIMALS\":{\"details\":\"We make an assumption that the underlying decimals will not change throughout the lifetime of the Pendle market\"}},\"title\":\"PendleOracle\",\"version\":1},\"userdoc\":{\"errors\":{\"InvalidDuration()\":[{\"notice\":\"Thrown if the duration is invalid\"}],\"InvalidGrowthRate()\":[{\"notice\":\"Thrown if the growth rate is invalid\"}],\"InvalidInitialSnapshot()\":[{\"notice\":\"Thrown if the initial snapshot is invalid\"}],\"InvalidSnapshotMaxExchangeRate()\":[{\"notice\":\"Thrown if the max snapshot exchange rate is invalid\"}],\"InvalidTokenAddress()\":[{\"notice\":\"Thrown if the token address is invalid\"}],\"Unauthorized(address,address,string)\":[{\"notice\":\"@notice Thrown when the action is prohibited by AccessControlManager\"}],\"ZeroAddressNotAllowed()\":[{\"notice\":\"Thrown if the supplied address is a zero address where it is not allowed\"}],\"ZeroValueNotAllowed()\":[{\"notice\":\"Thrown if the supplied value is 0 where it is not allowed\"}]},\"events\":{\"GrowthRateUpdated(uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted when the growth rate is updated\"},\"SnapshotGapUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the snapshot gap is updated\"},\"SnapshotUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the snapshot is updated\"}},\"kind\":\"user\",\"methods\":{\"ACCESS_CONTROL_MANAGER()\":{\"notice\":\"Address of the AccessControlManager contract\"},\"CORRELATED_TOKEN()\":{\"notice\":\"Address of the correlated token\"},\"MARKET()\":{\"notice\":\"Address of the market\"},\"PT_ORACLE()\":{\"notice\":\"Address of the PT oracle\"},\"RATE_KIND()\":{\"notice\":\"Whether to use PT/SY (standardized yield token) rate or PT/market asset rate\"},\"RESILIENT_ORACLE()\":{\"notice\":\"Address of Resilient Oracle\"},\"TWAP_DURATION()\":{\"notice\":\"Twap duration for the oracle\"},\"UNDERLYING_DECIMALS()\":{\"notice\":\"Decimals of the underlying token\"},\"UNDERLYING_TOKEN()\":{\"notice\":\"Address of the underlying token\"},\"constructor\":{\"notice\":\"Constructor for the implementation contract.\"},\"getMaxAllowedExchangeRate()\":{\"notice\":\"Gets the maximum allowed exchange rate for token\"},\"getPrice(address)\":{\"notice\":\"Fetches the price of the token\"},\"getUnderlyingAmount()\":{\"notice\":\"Fetches the amount of underlying token for 1 PT\"},\"isCapped()\":{\"notice\":\"Returns if the price is capped\"},\"setGrowthRate(uint256,uint256)\":{\"notice\":\"Sets the growth rate and snapshot interval\"},\"setSnapshot(uint256,uint256)\":{\"notice\":\"Directly sets the snapshot exchange rate and timestamp\"},\"setSnapshotGap(uint256)\":{\"notice\":\"Sets the snapshot gap\"},\"snapshotGap()\":{\"notice\":\"Gap to add when updating the snapshot\"},\"snapshotInterval()\":{\"notice\":\"Snapshot update interval\"},\"snapshotMaxExchangeRate()\":{\"notice\":\"Last stored snapshot maximum exchange rate\"},\"snapshotTimestamp()\":{\"notice\":\"Last stored snapshot timestamp\"},\"updateSnapshot()\":{\"notice\":\"Updates the snapshot price and timestamp\"}},\"notice\":\"This oracle fetches the price of a pendle token\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracles/PendleOracle.sol\":\"PendleOracle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev External interface of AccessControl declared to support ERC165 detection.\\n */\\ninterface IAccessControl {\\n /**\\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\\n *\\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\\n * {RoleAdminChanged} not being emitted signaling this.\\n *\\n * _Available since v3.1._\\n */\\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\\n\\n /**\\n * @dev Emitted when `account` is granted `role`.\\n *\\n * `sender` is the account that originated the contract call, an admin role\\n * bearer except when using {AccessControl-_setupRole}.\\n */\\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Emitted when `account` is revoked `role`.\\n *\\n * `sender` is the account that originated the contract call:\\n * - if using `revokeRole`, it is the admin role bearer\\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\\n */\\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Returns `true` if `account` has been granted `role`.\\n */\\n function hasRole(bytes32 role, address account) external view returns (bool);\\n\\n /**\\n * @dev Returns the admin role that controls `role`. See {grantRole} and\\n * {revokeRole}.\\n *\\n * To change a role's admin, use {AccessControl-_setRoleAdmin}.\\n */\\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function grantRole(bytes32 role, address account) external;\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function revokeRole(bytes32 role, address account) external;\\n\\n /**\\n * @dev Revokes `role` from the calling account.\\n *\\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n * purpose is to provide a mechanism for accounts to lose their privileges\\n * if they are compromised (such as when a trusted device is misplaced).\\n *\\n * If the calling account had been granted `role`, emits a {RoleRevoked}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must be `account`.\\n */\\n function renounceRole(bytes32 role, address account) external;\\n}\\n\",\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n *\\n * _Available since v4.1._\\n */\\ninterface IERC20Metadata is IERC20 {\\n /**\\n * @dev Returns the name of the token.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the symbol of the token.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the decimals places of the token.\\n */\\n function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\"},\"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\nimport \\\"@openzeppelin/contracts/access/IAccessControl.sol\\\";\\n\\n/**\\n * @title IAccessControlManagerV8\\n * @author Venus\\n * @notice Interface implemented by the `AccessControlManagerV8` contract.\\n */\\ninterface IAccessControlManagerV8 is IAccessControl {\\n function giveCallPermission(address contractAddress, string calldata functionSig, address accountToPermit) external;\\n\\n function revokeCallPermission(\\n address contractAddress,\\n string calldata functionSig,\\n address accountToRevoke\\n ) external;\\n\\n function isAllowedToCall(address account, string calldata functionSig) external view returns (bool);\\n\\n function hasPermission(\\n address account,\\n address contractAddress,\\n string calldata functionSig\\n ) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xaa29b098440d0b3a131c5ecdf25ce548790c1b5ac7bf9b5c0264b6af6f7a1e0b\",\"license\":\"BSD-3-Clause\"},\"@venusprotocol/solidity-utilities/contracts/constants.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\n/// @dev Base unit for computations, usually used in scaling (multiplications, divisions)\\nuint256 constant EXP_SCALE = 1e18;\\n\\n/// @dev A unit (literal one) in EXP_SCALE, usually used in additions/subtractions\\nuint256 constant MANTISSA_ONE = EXP_SCALE;\\n\\n/// @dev The approximate number of seconds per year\\nuint256 constant SECONDS_PER_YEAR = 31_536_000;\\n\",\"keccak256\":\"0x14de93ead464da249af31bea0e3bcfb62ec693bea3475fb4d90f055ac81dc5eb\",\"license\":\"BSD-3-Clause\"},\"@venusprotocol/solidity-utilities/contracts/validators.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.25;\\n\\n/// @notice Thrown if the supplied address is a zero address where it is not allowed\\nerror ZeroAddressNotAllowed();\\n\\n/// @notice Thrown if the supplied value is 0 where it is not allowed\\nerror ZeroValueNotAllowed();\\n\\n/// @notice Checks if the provided address is nonzero, reverts otherwise\\n/// @param address_ Address to check\\n/// @custom:error ZeroAddressNotAllowed is thrown if the provided address is a zero address\\nfunction ensureNonzeroAddress(address address_) pure {\\n if (address_ == address(0)) {\\n revert ZeroAddressNotAllowed();\\n }\\n}\\n\\n/// @notice Checks if the provided value is nonzero, reverts otherwise\\n/// @param value_ Value to check\\n/// @custom:error ZeroValueNotAllowed is thrown if the provided value is 0\\nfunction ensureNonzeroValue(uint256 value_) pure {\\n if (value_ == 0) {\\n revert ZeroValueNotAllowed();\\n }\\n}\\n\",\"keccak256\":\"0xdb88e14d50dd21889ca3329d755673d022c47e8da005b6a545c7f69c2c4b7b86\",\"license\":\"BSD-3-Clause\"},\"contracts/interfaces/ICappedOracle.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.25;\\n\\ninterface ICappedOracle {\\n function updateSnapshot() external;\\n}\\n\",\"keccak256\":\"0xad239e65b5e92b3486418c5ccca120247702251f9724cd96657c3cfdc7fedc31\",\"license\":\"BSD-3-Clause\"},\"contracts/interfaces/IPendlePtOracle.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.25;\\n\\ninterface IPendlePtOracle {\\n function getPtToAssetRate(address market, uint32 duration) external view returns (uint256);\\n\\n function getPtToSyRate(address market, uint32 duration) external view returns (uint256);\\n\\n function getOracleState(\\n address market,\\n uint32 duration\\n )\\n external\\n view\\n returns (bool increaseCardinalityRequired, uint16 cardinalityRequired, bool oldestObservationSatisfied);\\n}\\n\",\"keccak256\":\"0x14d96d7f75397e4291288ef6367053bd970d95fc0c3e2a028b077f6342e0160a\",\"license\":\"BSD-3-Clause\"},\"contracts/interfaces/OracleInterface.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\ninterface OracleInterface {\\n function getPrice(address asset) external view returns (uint256);\\n}\\n\\ninterface ResilientOracleInterface is OracleInterface {\\n function updatePrice(address vToken) external;\\n\\n function updateAssetPrice(address asset) external;\\n\\n function getUnderlyingPrice(address vToken) external view returns (uint256);\\n}\\n\\ninterface BoundValidatorInterface {\\n function validatePriceWithAnchorPrice(\\n address asset,\\n uint256 reporterPrice,\\n uint256 anchorPrice\\n ) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\"},\"contracts/oracles/PendleOracle.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.25;\\n\\nimport { IPendlePtOracle } from \\\"../interfaces/IPendlePtOracle.sol\\\";\\nimport { CorrelatedTokenOracle } from \\\"./common/CorrelatedTokenOracle.sol\\\";\\nimport { ensureNonzeroAddress, ensureNonzeroValue } from \\\"@venusprotocol/solidity-utilities/contracts/validators.sol\\\";\\nimport { IERC20Metadata } from \\\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\\\";\\n\\n/**\\n * @title PendleOracle\\n * @author Venus\\n * @notice This oracle fetches the price of a pendle token\\n * @dev As a base price the oracle uses either the price of the Pendle\\n * market's asset (in this case PT_TO_ASSET rate should be used) or\\n * the price of the Pendle market's interest bearing token (e.g. wstETH\\n * for stETH; in this case PT_TO_SY rate should be used). Technically,\\n * interest bearing token is different from standardized yield (SY) token,\\n * but since SY is a wrapper around an interest bearing token, we can safely\\n * assume the prices of the two are equal. This is not always true for asset\\n * price though: using PT_TO_ASSET rate assumes that the yield token can\\n * be seamlessly redeemed for the underlying asset. In reality, this might\\n * not always be the case. For more details, see\\n * https://docs.pendle.finance/Developers/Contracts/StandardizedYield\\n */\\ncontract PendleOracle is CorrelatedTokenOracle {\\n struct ConstructorParams {\\n /// @notice Pendle market\\n address market;\\n /// @notice Pendle oracle\\n address ptOracle;\\n /// @notice Either PT_TO_ASSET or PT_TO_SY\\n RateKind rateKind;\\n /// @notice Pendle PT token\\n address ptToken;\\n /// @notice Underlying token, can be either the market's asset or the interest bearing token\\n address underlyingToken;\\n /// @notice Resilient oracle to get the underlying token price from\\n address resilientOracle;\\n /// @notice TWAP duration to call Pendle oracle with\\n uint32 twapDuration;\\n /// @notice Annual growth rate of the underlying token\\n uint256 annualGrowthRate;\\n /// @notice Snapshot interval for the oracle\\n uint256 snapshotInterval;\\n /// @notice Initial exchange rate of the underlying token\\n uint256 initialSnapshotMaxExchangeRate;\\n /// @notice Initial timestamp of the underlying token\\n uint256 initialSnapshotTimestamp;\\n /// @notice Access control manager\\n address accessControlManager;\\n /// @notice Gap to add when updating the snapshot\\n uint256 snapshotGap;\\n }\\n\\n /// @notice Which asset to use as a base for the returned PT\\n /// price. Can be either a standardized yield token (SY), in\\n /// this case PT/SY price is returned, or the Pendle\\n /// market's asset directly.\\n enum RateKind {\\n PT_TO_ASSET,\\n PT_TO_SY\\n }\\n\\n /// @notice Address of the PT oracle\\n IPendlePtOracle public immutable PT_ORACLE;\\n\\n /// @notice Whether to use PT/SY (standardized yield token) rate\\n /// or PT/market asset rate\\n RateKind public immutable RATE_KIND;\\n\\n /// @notice Address of the market\\n address public immutable MARKET;\\n\\n /// @notice Twap duration for the oracle\\n uint32 public immutable TWAP_DURATION;\\n\\n /// @notice Decimals of the underlying token\\n /// @dev We make an assumption that the underlying decimals will\\n /// not change throughout the lifetime of the Pendle market\\n uint8 public immutable UNDERLYING_DECIMALS;\\n\\n /// @notice Thrown if the duration is invalid\\n error InvalidDuration();\\n\\n /**\\n * @notice Constructor for the implementation contract.\\n * @custom:error InvalidDuration Thrown if the duration is invalid\\n */\\n constructor(\\n ConstructorParams memory params\\n )\\n CorrelatedTokenOracle(\\n params.ptToken,\\n params.underlyingToken,\\n params.resilientOracle,\\n params.annualGrowthRate,\\n params.snapshotInterval,\\n params.initialSnapshotMaxExchangeRate,\\n params.initialSnapshotTimestamp,\\n params.accessControlManager,\\n params.snapshotGap\\n )\\n {\\n ensureNonzeroAddress(params.market);\\n ensureNonzeroAddress(params.ptOracle);\\n ensureNonzeroValue(params.twapDuration);\\n\\n MARKET = params.market;\\n PT_ORACLE = IPendlePtOracle(params.ptOracle);\\n RATE_KIND = params.rateKind;\\n TWAP_DURATION = params.twapDuration;\\n UNDERLYING_DECIMALS = IERC20Metadata(UNDERLYING_TOKEN).decimals();\\n\\n (bool increaseCardinalityRequired, , bool oldestObservationSatisfied) = PT_ORACLE.getOracleState(\\n MARKET,\\n TWAP_DURATION\\n );\\n if (increaseCardinalityRequired || !oldestObservationSatisfied) {\\n revert InvalidDuration();\\n }\\n }\\n\\n /// @notice Fetches the amount of underlying token for 1 PT\\n /// @return amount The amount of underlying token (either the market's asset\\n /// or the yield token) for 1 PT, adjusted for decimals such that the result\\n /// has the same precision as the underlying token\\n function getUnderlyingAmount() public view override returns (uint256) {\\n uint256 rate;\\n if (RATE_KIND == RateKind.PT_TO_SY) {\\n rate = PT_ORACLE.getPtToSyRate(MARKET, TWAP_DURATION);\\n } else {\\n rate = PT_ORACLE.getPtToAssetRate(MARKET, TWAP_DURATION);\\n }\\n return ((10 ** UNDERLYING_DECIMALS) * rate) / 1e18;\\n }\\n}\\n\",\"keccak256\":\"0xaa7963ac7657ea62079c2162cb4fc45524f8ffbbc6e84f89a5d4e54b71dc6025\",\"license\":\"BSD-3-Clause\"},\"contracts/oracles/common/CorrelatedTokenOracle.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.25;\\n\\nimport { OracleInterface, ResilientOracleInterface } from \\\"../../interfaces/OracleInterface.sol\\\";\\nimport { ensureNonzeroAddress } from \\\"@venusprotocol/solidity-utilities/contracts/validators.sol\\\";\\nimport { SECONDS_PER_YEAR } from \\\"@venusprotocol/solidity-utilities/contracts/constants.sol\\\";\\nimport { IERC20Metadata } from \\\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\\\";\\nimport { ICappedOracle } from \\\"../../interfaces/ICappedOracle.sol\\\";\\nimport { IAccessControlManagerV8 } from \\\"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol\\\";\\n\\n/**\\n * @title CorrelatedTokenOracle\\n * @notice This oracle fetches the price of a token that is correlated to another token.\\n */\\nabstract contract CorrelatedTokenOracle is OracleInterface, ICappedOracle {\\n /// @notice Address of the correlated token\\n address public immutable CORRELATED_TOKEN;\\n\\n /// @notice Address of the underlying token\\n address public immutable UNDERLYING_TOKEN;\\n\\n /// @notice Address of Resilient Oracle\\n ResilientOracleInterface public immutable RESILIENT_ORACLE;\\n\\n /// @notice Address of the AccessControlManager contract\\n IAccessControlManagerV8 public immutable ACCESS_CONTROL_MANAGER;\\n\\n //// @notice Growth rate percentage in seconds. Ex: 1e18 is 100%\\n uint256 public growthRatePerSecond;\\n\\n /// @notice Snapshot update interval\\n uint256 public snapshotInterval;\\n\\n /// @notice Last stored snapshot maximum exchange rate\\n uint256 public snapshotMaxExchangeRate;\\n\\n /// @notice Last stored snapshot timestamp\\n uint256 public snapshotTimestamp;\\n\\n /// @notice Gap to add when updating the snapshot\\n uint256 public snapshotGap;\\n\\n /// @notice Emitted when the snapshot is updated\\n event SnapshotUpdated(uint256 indexed maxExchangeRate, uint256 indexed timestamp);\\n\\n /// @notice Emitted when the growth rate is updated\\n event GrowthRateUpdated(\\n uint256 indexed oldGrowthRatePerSecond,\\n uint256 indexed newGrowthRatePerSecond,\\n uint256 indexed oldSnapshotInterval,\\n uint256 newSnapshotInterval\\n );\\n\\n /// @notice Emitted when the snapshot gap is updated\\n event SnapshotGapUpdated(uint256 indexed oldSnapshotGap, uint256 indexed newSnapshotGap);\\n\\n /// @notice Thrown if the token address is invalid\\n error InvalidTokenAddress();\\n\\n /// @notice Thrown if the growth rate is invalid\\n error InvalidGrowthRate();\\n\\n /// @notice Thrown if the initial snapshot is invalid\\n error InvalidInitialSnapshot();\\n\\n /// @notice Thrown if the max snapshot exchange rate is invalid\\n error InvalidSnapshotMaxExchangeRate();\\n\\n /// @notice @notice Thrown when the action is prohibited by AccessControlManager\\n error Unauthorized(address sender, address calledContract, string methodSignature);\\n\\n /**\\n * @notice Constructor for the implementation contract.\\n * @custom:error InvalidGrowthRate error is thrown if the growth rate is invalid\\n * @custom:error InvalidInitialSnapshot error is thrown if the initial snapshot values are invalid\\n */\\n constructor(\\n address _correlatedToken,\\n address _underlyingToken,\\n address _resilientOracle,\\n uint256 _annualGrowthRate,\\n uint256 _snapshotInterval,\\n uint256 _initialSnapshotMaxExchangeRate,\\n uint256 _initialSnapshotTimestamp,\\n address _accessControlManager,\\n uint256 _snapshotGap\\n ) {\\n growthRatePerSecond = _annualGrowthRate / SECONDS_PER_YEAR;\\n\\n if ((growthRatePerSecond == 0 && _snapshotInterval > 0) || (growthRatePerSecond > 0 && _snapshotInterval == 0))\\n revert InvalidGrowthRate();\\n\\n if ((_initialSnapshotMaxExchangeRate == 0 || _initialSnapshotTimestamp == 0) && _snapshotInterval > 0) {\\n revert InvalidInitialSnapshot();\\n }\\n\\n ensureNonzeroAddress(_correlatedToken);\\n ensureNonzeroAddress(_underlyingToken);\\n ensureNonzeroAddress(_resilientOracle);\\n ensureNonzeroAddress(_accessControlManager);\\n\\n CORRELATED_TOKEN = _correlatedToken;\\n UNDERLYING_TOKEN = _underlyingToken;\\n RESILIENT_ORACLE = ResilientOracleInterface(_resilientOracle);\\n snapshotInterval = _snapshotInterval;\\n\\n snapshotMaxExchangeRate = _initialSnapshotMaxExchangeRate;\\n snapshotTimestamp = _initialSnapshotTimestamp;\\n snapshotGap = _snapshotGap;\\n\\n ACCESS_CONTROL_MANAGER = IAccessControlManagerV8(_accessControlManager);\\n }\\n\\n /**\\n * @notice Directly sets the snapshot exchange rate and timestamp\\n * @param _snapshotMaxExchangeRate The exchange rate to set\\n * @param _snapshotTimestamp The timestamp to set\\n * @custom:event Emits SnapshotUpdated event on successful update of the snapshot\\n */\\n function setSnapshot(uint256 _snapshotMaxExchangeRate, uint256 _snapshotTimestamp) external {\\n _checkAccessAllowed(\\\"setSnapshot(uint256,uint256)\\\");\\n\\n snapshotMaxExchangeRate = _snapshotMaxExchangeRate;\\n snapshotTimestamp = _snapshotTimestamp;\\n\\n emit SnapshotUpdated(snapshotMaxExchangeRate, snapshotTimestamp);\\n }\\n\\n /**\\n * @notice Sets the growth rate and snapshot interval\\n * @param _annualGrowthRate The annual growth rate to set\\n * @param _snapshotInterval The snapshot interval to set\\n * @custom:error InvalidGrowthRate error is thrown if the growth rate is invalid\\n * @custom:event Emits GrowthRateUpdated event on successful update of the growth rate\\n */\\n function setGrowthRate(uint256 _annualGrowthRate, uint256 _snapshotInterval) external {\\n _checkAccessAllowed(\\\"setGrowthRate(uint256,uint256)\\\");\\n uint256 oldGrowthRatePerSecond = growthRatePerSecond;\\n\\n growthRatePerSecond = _annualGrowthRate / SECONDS_PER_YEAR;\\n\\n if ((growthRatePerSecond == 0 && _snapshotInterval > 0) || (growthRatePerSecond > 0 && _snapshotInterval == 0))\\n revert InvalidGrowthRate();\\n\\n emit GrowthRateUpdated(oldGrowthRatePerSecond, growthRatePerSecond, snapshotInterval, _snapshotInterval);\\n\\n snapshotInterval = _snapshotInterval;\\n }\\n\\n /**\\n * @notice Sets the snapshot gap\\n * @param _snapshotGap The snapshot gap to set\\n * @custom:event Emits SnapshotGapUpdated event on successful update of the snapshot gap\\n */\\n function setSnapshotGap(uint256 _snapshotGap) external {\\n _checkAccessAllowed(\\\"setSnapshotGap(uint256)\\\");\\n\\n emit SnapshotGapUpdated(snapshotGap, _snapshotGap);\\n\\n snapshotGap = _snapshotGap;\\n }\\n\\n /**\\n * @notice Returns if the price is capped\\n * @return isCapped Boolean indicating if the price is capped\\n */\\n function isCapped() external view virtual returns (bool) {\\n if (snapshotInterval == 0) {\\n return false;\\n }\\n\\n uint256 maxAllowedExchangeRate = getMaxAllowedExchangeRate();\\n if (maxAllowedExchangeRate == 0) {\\n return false;\\n }\\n\\n uint256 exchangeRate = getUnderlyingAmount();\\n\\n return exchangeRate > maxAllowedExchangeRate;\\n }\\n\\n /**\\n * @notice Updates the snapshot price and timestamp\\n * @custom:event Emits SnapshotUpdated event on successful update of the snapshot\\n * @custom:error InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero\\n */\\n function updateSnapshot() public override {\\n if (block.timestamp - snapshotTimestamp < snapshotInterval || snapshotInterval == 0) return;\\n\\n uint256 exchangeRate = getUnderlyingAmount();\\n uint256 maxAllowedExchangeRate = getMaxAllowedExchangeRate();\\n\\n snapshotMaxExchangeRate =\\n (exchangeRate > maxAllowedExchangeRate ? maxAllowedExchangeRate : exchangeRate) +\\n snapshotGap;\\n snapshotTimestamp = block.timestamp;\\n\\n if (snapshotMaxExchangeRate == 0) revert InvalidSnapshotMaxExchangeRate();\\n\\n RESILIENT_ORACLE.updateAssetPrice(UNDERLYING_TOKEN);\\n emit SnapshotUpdated(snapshotMaxExchangeRate, snapshotTimestamp);\\n }\\n\\n /**\\n * @notice Fetches the price of the token\\n * @param asset Address of the token\\n * @return price The price of the token in scaled decimal places. It can be capped\\n * to a maximum value taking into account the growth rate\\n * @custom:error InvalidTokenAddress error is thrown if the token address is invalid\\n */\\n function getPrice(address asset) public view override returns (uint256) {\\n if (asset != CORRELATED_TOKEN) revert InvalidTokenAddress();\\n\\n uint256 exchangeRate = getUnderlyingAmount();\\n\\n if (snapshotInterval == 0) {\\n return _calculatePrice(exchangeRate);\\n }\\n\\n uint256 maxAllowedExchangeRate = getMaxAllowedExchangeRate();\\n\\n uint256 finalExchangeRate = (exchangeRate > maxAllowedExchangeRate && maxAllowedExchangeRate != 0)\\n ? maxAllowedExchangeRate\\n : exchangeRate;\\n\\n return _calculatePrice(finalExchangeRate);\\n }\\n\\n /**\\n * @notice Gets the maximum allowed exchange rate for token\\n * @return maxExchangeRate Maximum allowed exchange rate\\n */\\n function getMaxAllowedExchangeRate() public view returns (uint256) {\\n uint256 timeElapsed = block.timestamp - snapshotTimestamp;\\n uint256 maxExchangeRate = snapshotMaxExchangeRate +\\n (snapshotMaxExchangeRate * growthRatePerSecond * timeElapsed) /\\n 1e18;\\n return maxExchangeRate;\\n }\\n\\n /**\\n * @notice Gets the underlying amount for correlated token\\n * @return underlyingAmount Amount of underlying token\\n */\\n function getUnderlyingAmount() public view virtual returns (uint256);\\n\\n /**\\n * @notice Fetches price of the token based on an underlying exchange rate\\n * @param exchangeRate The underlying exchange rate to use\\n * @return price The price of the token in scaled decimal places\\n */\\n function _calculatePrice(uint256 exchangeRate) internal view returns (uint256) {\\n uint256 underlyingUSDPrice = RESILIENT_ORACLE.getPrice(UNDERLYING_TOKEN);\\n\\n IERC20Metadata token = IERC20Metadata(CORRELATED_TOKEN);\\n uint256 decimals = token.decimals();\\n\\n return (exchangeRate * underlyingUSDPrice) / (10 ** decimals);\\n }\\n\\n /**\\n * @notice Reverts if the call is not allowed by AccessControlManager\\n * @param signature Method signature\\n * @custom:error Unauthorized error is thrown if the call is not allowed\\n */\\n function _checkAccessAllowed(string memory signature) internal view {\\n bool isAllowedToCall = ACCESS_CONTROL_MANAGER.isAllowedToCall(msg.sender, signature);\\n\\n if (!isAllowedToCall) {\\n revert Unauthorized(msg.sender, address(this), signature);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x808b444fa4d1d440dc43de290f1eb59a64646ce9085028b286fa30346305872e\",\"license\":\"BSD-3-Clause\"}},\"version\":1}", + "bytecode": "0x6101a0604052348015610010575f80fd5b5060405161155938038061155983398101604081905261002f916103a6565b6060810151608082015160a083015160e084015161010085015161012086015161014087015161016088015161018089015161006f6301e1338087610481565b5f81905515801561007f57505f85115b8061009357505f8054118015610093575084155b156100b1576040516353b7e64560e11b815260040160405180910390fd5b8315806100bc575082155b80156100c757505f85115b156100e55760405163b8a5589b60e01b815260040160405180910390fd5b6100ee896102eb565b6100f7886102eb565b610100876102eb565b610109826102eb565b6001600160a01b0398891660805296881660a05294871660c052600192909255600255600355506004919091551660e0528051610145906102eb565b6020810151610153906102eb565b60c08101516101679063ffffffff16610315565b80516001600160a01b03908116610140526020820151166101005260408101516001811115610198576101986104a0565b6101208160018111156101ad576101ad6104a0565b815250508060c0015163ffffffff166101608163ffffffff168152505060a0516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610208573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061022c91906104b4565b60ff166101805261010051610140516101605160405162439f4b60e91b81526001600160a01b03928316600482015263ffffffff90911660248201525f928392169063873e960090604401606060405180830381865afa158015610292573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102b691906104ea565b925050915081806102c5575080155b156102e357604051637616640160e01b815260040160405180910390fd5b505050610532565b6001600160a01b038116610312576040516342bcdf7f60e11b815260040160405180910390fd5b50565b805f036103125760405163273e150360e21b815260040160405180910390fd5b6040516101a081016001600160401b038111828210171561036457634e487b7160e01b5f52604160045260245ffd5b60405290565b80516001600160a01b0381168114610380575f80fd5b919050565b805160028110610380575f80fd5b805163ffffffff81168114610380575f80fd5b5f6101a082840312156103b7575f80fd5b6103bf610335565b6103c88361036a565b81526103d66020840161036a565b60208201526103e760408401610385565b60408201526103f86060840161036a565b60608201526104096080840161036a565b608082015261041a60a0840161036a565b60a082015261042b60c08401610393565b60c082015260e0838101519082015261010080840151908201526101208084015190820152610140808401519082015261016061046981850161036a565b90820152610180928301519281019290925250919050565b5f8261049b57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52602160045260245ffd5b5f602082840312156104c4575f80fd5b815160ff811681146104d4575f80fd5b9392505050565b80518015158114610380575f80fd5b5f805f606084860312156104fc575f80fd5b610505846104db565b9250602084015161ffff8116811461051b575f80fd5b9150610529604085016104db565b90509250925092565b60805160a05160c05160e0516101005161012051610140516101605161018051610f596106005f395f81816101d9015261099d01525f81816103070152818161081b01526108f601525f818161038b015281816107f301526108ce01525f818161014601526107a701525f81816102e001528181610847015261092201525f818161022e0152610b9a01525f818161034c0152818161069c0152610a6d01525f818161019a015281816106740152610a4101525f81816102a6015281816103b00152610adb0152610f595ff3fe608060405234801561000f575f80fd5b506004361061013d575f3560e01c806369240426116100b45780639c43eb54116100795780639c43eb541461033e578063a4edcd4c14610347578063abb856131461036e578063ac5a693e14610376578063bdf13af21461037e578063f46f16c214610386575f80fd5b8063692404261461029957806369818a35146102a15780637fc4e4a0146102c8578063809d7b31146102db578063879ac8f814610302575f80fd5b806341976e091161010557806341976e091461021657806345be2dc7146102295780635213f9c814610250578063596efe6f14610265578063643d813d1461026e578063671528d414610281575f80fd5b806302125d091461014157806307d0413c1461017e57806329db1be6146101955780633dae7c22146101d45780634169d2451461020d575b5f80fd5b6101687f000000000000000000000000000000000000000000000000000000000000000081565b6040516101759190610c57565b60405180910390f35b61018760015481565b604051908152602001610175565b6101bc7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610175565b6101fb7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610175565b61018760045481565b610187610224366004610c7d565b6103ad565b6101bc7f000000000000000000000000000000000000000000000000000000000000000081565b61026361025e366004610ca3565b61045e565b005b61018760025481565b61026361027c366004610cba565b6104cf565b6102896105a5565b6040519015158152602001610175565b6102636105e0565b6101bc7f000000000000000000000000000000000000000000000000000000000000000081565b6102636102d6366004610cba565b610729565b6101bc7f000000000000000000000000000000000000000000000000000000000000000081565b6103297f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610175565b61018760035481565b6101bc7f000000000000000000000000000000000000000000000000000000000000000081565b6101876107a1565b6101875f5481565b6101876109dd565b6101bc7f000000000000000000000000000000000000000000000000000000000000000081565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161461040057604051630f58058360e11b815260040160405180910390fd5b5f6104096107a1565b90506001545f036104245761041d81610a2a565b9392505050565b5f61042d6109dd565b90505f818311801561043e57508115155b610448578261044a565b815b905061045581610a2a565b95945050505050565b61049c6040518060400160405280601781526020017f736574536e617073686f744761702875696e7432353629000000000000000000815250610b81565b6004546040518291907feb3716d3f8388c182853c1dc98b18931f3a600bbab31f2ff48631f6412e4997f905f90a3600455565b61050d6040518060400160405280601e81526020017f73657447726f777468526174652875696e743235362c75696e74323536290000815250610b81565b5f5461051d6301e1338084610cee565b5f81905515801561052d57505f82115b8061054157505f8054118015610541575081155b1561055f576040516353b7e64560e11b815260040160405180910390fd5b6001545f54827fa65cbeb0e28a8803a912daac67c472c160aa01e2c988755fa424f290321de6088560405161059691815260200190565b60405180910390a45060015550565b5f6001545f036105b457505f90565b5f6105bd6109dd565b9050805f036105cd575f91505090565b5f6105d66107a1565b9190911192915050565b6001546003546105f09042610d0d565b10806105fc5750600154155b1561060357565b5f61060c6107a1565b90505f6106176109dd565b9050600454818311610629578261062b565b815b6106359190610d26565b6002819055426003555f0361065d57604051635f18388760e01b815260040160405180910390fd5b60405163b62cad6960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063b62cad69906024015f604051808303815f87803b1580156106dd575f80fd5b505af11580156106ef573d5f803e3d5ffd5b505050506003546002547f2c8c8fcb8c77a0ca21dcc3ab8fc0ade761557e76b1240cb40ebbef9fcee00f7d60405160405180910390a35050565b6107676040518060400160405280601c81526020017f736574536e617073686f742875696e743235362c75696e743235362900000000815250610b81565b60028290556003819055604051819083907f2c8c8fcb8c77a0ca21dcc3ab8fc0ade761557e76b1240cb40ebbef9fcee00f7d905f90a35050565b5f8060017f000000000000000000000000000000000000000000000000000000000000000060018111156107d7576107d7610c43565b036108b75760405163a31426d160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f000000000000000000000000000000000000000000000000000000000000000063ffffffff1660248301527f0000000000000000000000000000000000000000000000000000000000000000169063a31426d190604401602060405180830381865afa15801561088c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108b09190610d39565b905061098e565b60405163abca0eab60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f000000000000000000000000000000000000000000000000000000000000000063ffffffff1660248301527f0000000000000000000000000000000000000000000000000000000000000000169063abca0eab90604401602060405180830381865afa158015610967573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061098b9190610d39565b90505b670de0b6b3a7640000816109c37f0000000000000000000000000000000000000000000000000000000000000000600a610e30565b6109cd9190610e3e565b6109d79190610cee565b91505090565b5f80600354426109ed9190610d0d565b90505f670de0b6b3a7640000825f54600254610a099190610e3e565b610a139190610e3e565b610a1d9190610cee565b60025461041d9190610d26565b6040516341976e0960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f9182917f000000000000000000000000000000000000000000000000000000000000000016906341976e0990602401602060405180830381865afa158015610ab2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ad69190610d39565b90505f7f000000000000000000000000000000000000000000000000000000000000000090505f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b39573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b5d9190610e55565b60ff169050610b6d81600a610e75565b610b778487610e3e565b6104559190610cee565b6040516318c5e8ab60e01b81525f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906318c5e8ab90610bd19033908690600401610eae565b602060405180830381865afa158015610bec573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c109190610ed9565b905080610c3f57333083604051634a3fa29360e01b8152600401610c3693929190610ef8565b60405180910390fd5b5050565b634e487b7160e01b5f52602160045260245ffd5b6020810160028310610c7757634e487b7160e01b5f52602160045260245ffd5b91905290565b5f60208284031215610c8d575f80fd5b81356001600160a01b038116811461041d575f80fd5b5f60208284031215610cb3575f80fd5b5035919050565b5f8060408385031215610ccb575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b5f82610d0857634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115610d2057610d20610cda565b92915050565b80820180821115610d2057610d20610cda565b5f60208284031215610d49575f80fd5b5051919050565b600181815b80851115610d8a57815f1904821115610d7057610d70610cda565b80851615610d7d57918102915b93841c9390800290610d55565b509250929050565b5f82610da057506001610d20565b81610dac57505f610d20565b8160018114610dc25760028114610dcc57610de8565b6001915050610d20565b60ff841115610ddd57610ddd610cda565b50506001821b610d20565b5060208310610133831016604e8410600b8410161715610e0b575081810a610d20565b610e158383610d50565b805f1904821115610e2857610e28610cda565b029392505050565b5f61041d60ff841683610d92565b8082028115828204841417610d2057610d20610cda565b5f60208284031215610e65575f80fd5b815160ff8116811461041d575f80fd5b5f61041d8383610d92565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6001600160a01b03831681526040602082018190525f90610ed190830184610e80565b949350505050565b5f60208284031215610ee9575f80fd5b8151801515811461041d575f80fd5b6001600160a01b038481168252831660208201526060604082018190525f9061045590830184610e8056fea2646970667358221220dd4434cf5ec982b81a2a3a25f96ea3d5d76d95704500f208da19253bd6abc73b64736f6c63430008190033", + "deployedBytecode": "0x608060405234801561000f575f80fd5b506004361061013d575f3560e01c806369240426116100b45780639c43eb54116100795780639c43eb541461033e578063a4edcd4c14610347578063abb856131461036e578063ac5a693e14610376578063bdf13af21461037e578063f46f16c214610386575f80fd5b8063692404261461029957806369818a35146102a15780637fc4e4a0146102c8578063809d7b31146102db578063879ac8f814610302575f80fd5b806341976e091161010557806341976e091461021657806345be2dc7146102295780635213f9c814610250578063596efe6f14610265578063643d813d1461026e578063671528d414610281575f80fd5b806302125d091461014157806307d0413c1461017e57806329db1be6146101955780633dae7c22146101d45780634169d2451461020d575b5f80fd5b6101687f000000000000000000000000000000000000000000000000000000000000000081565b6040516101759190610c57565b60405180910390f35b61018760015481565b604051908152602001610175565b6101bc7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610175565b6101fb7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610175565b61018760045481565b610187610224366004610c7d565b6103ad565b6101bc7f000000000000000000000000000000000000000000000000000000000000000081565b61026361025e366004610ca3565b61045e565b005b61018760025481565b61026361027c366004610cba565b6104cf565b6102896105a5565b6040519015158152602001610175565b6102636105e0565b6101bc7f000000000000000000000000000000000000000000000000000000000000000081565b6102636102d6366004610cba565b610729565b6101bc7f000000000000000000000000000000000000000000000000000000000000000081565b6103297f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610175565b61018760035481565b6101bc7f000000000000000000000000000000000000000000000000000000000000000081565b6101876107a1565b6101875f5481565b6101876109dd565b6101bc7f000000000000000000000000000000000000000000000000000000000000000081565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161461040057604051630f58058360e11b815260040160405180910390fd5b5f6104096107a1565b90506001545f036104245761041d81610a2a565b9392505050565b5f61042d6109dd565b90505f818311801561043e57508115155b610448578261044a565b815b905061045581610a2a565b95945050505050565b61049c6040518060400160405280601781526020017f736574536e617073686f744761702875696e7432353629000000000000000000815250610b81565b6004546040518291907feb3716d3f8388c182853c1dc98b18931f3a600bbab31f2ff48631f6412e4997f905f90a3600455565b61050d6040518060400160405280601e81526020017f73657447726f777468526174652875696e743235362c75696e74323536290000815250610b81565b5f5461051d6301e1338084610cee565b5f81905515801561052d57505f82115b8061054157505f8054118015610541575081155b1561055f576040516353b7e64560e11b815260040160405180910390fd5b6001545f54827fa65cbeb0e28a8803a912daac67c472c160aa01e2c988755fa424f290321de6088560405161059691815260200190565b60405180910390a45060015550565b5f6001545f036105b457505f90565b5f6105bd6109dd565b9050805f036105cd575f91505090565b5f6105d66107a1565b9190911192915050565b6001546003546105f09042610d0d565b10806105fc5750600154155b1561060357565b5f61060c6107a1565b90505f6106176109dd565b9050600454818311610629578261062b565b815b6106359190610d26565b6002819055426003555f0361065d57604051635f18388760e01b815260040160405180910390fd5b60405163b62cad6960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063b62cad69906024015f604051808303815f87803b1580156106dd575f80fd5b505af11580156106ef573d5f803e3d5ffd5b505050506003546002547f2c8c8fcb8c77a0ca21dcc3ab8fc0ade761557e76b1240cb40ebbef9fcee00f7d60405160405180910390a35050565b6107676040518060400160405280601c81526020017f736574536e617073686f742875696e743235362c75696e743235362900000000815250610b81565b60028290556003819055604051819083907f2c8c8fcb8c77a0ca21dcc3ab8fc0ade761557e76b1240cb40ebbef9fcee00f7d905f90a35050565b5f8060017f000000000000000000000000000000000000000000000000000000000000000060018111156107d7576107d7610c43565b036108b75760405163a31426d160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f000000000000000000000000000000000000000000000000000000000000000063ffffffff1660248301527f0000000000000000000000000000000000000000000000000000000000000000169063a31426d190604401602060405180830381865afa15801561088c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108b09190610d39565b905061098e565b60405163abca0eab60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f000000000000000000000000000000000000000000000000000000000000000063ffffffff1660248301527f0000000000000000000000000000000000000000000000000000000000000000169063abca0eab90604401602060405180830381865afa158015610967573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061098b9190610d39565b90505b670de0b6b3a7640000816109c37f0000000000000000000000000000000000000000000000000000000000000000600a610e30565b6109cd9190610e3e565b6109d79190610cee565b91505090565b5f80600354426109ed9190610d0d565b90505f670de0b6b3a7640000825f54600254610a099190610e3e565b610a139190610e3e565b610a1d9190610cee565b60025461041d9190610d26565b6040516341976e0960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f9182917f000000000000000000000000000000000000000000000000000000000000000016906341976e0990602401602060405180830381865afa158015610ab2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ad69190610d39565b90505f7f000000000000000000000000000000000000000000000000000000000000000090505f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b39573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b5d9190610e55565b60ff169050610b6d81600a610e75565b610b778487610e3e565b6104559190610cee565b6040516318c5e8ab60e01b81525f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906318c5e8ab90610bd19033908690600401610eae565b602060405180830381865afa158015610bec573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c109190610ed9565b905080610c3f57333083604051634a3fa29360e01b8152600401610c3693929190610ef8565b60405180910390fd5b5050565b634e487b7160e01b5f52602160045260245ffd5b6020810160028310610c7757634e487b7160e01b5f52602160045260245ffd5b91905290565b5f60208284031215610c8d575f80fd5b81356001600160a01b038116811461041d575f80fd5b5f60208284031215610cb3575f80fd5b5035919050565b5f8060408385031215610ccb575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b5f82610d0857634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115610d2057610d20610cda565b92915050565b80820180821115610d2057610d20610cda565b5f60208284031215610d49575f80fd5b5051919050565b600181815b80851115610d8a57815f1904821115610d7057610d70610cda565b80851615610d7d57918102915b93841c9390800290610d55565b509250929050565b5f82610da057506001610d20565b81610dac57505f610d20565b8160018114610dc25760028114610dcc57610de8565b6001915050610d20565b60ff841115610ddd57610ddd610cda565b50506001821b610d20565b5060208310610133831016604e8410600b8410161715610e0b575081810a610d20565b610e158383610d50565b805f1904821115610e2857610e28610cda565b029392505050565b5f61041d60ff841683610d92565b8082028115828204841417610d2057610d20610cda565b5f60208284031215610e65575f80fd5b815160ff8116811461041d575f80fd5b5f61041d8383610d92565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6001600160a01b03831681526040602082018190525f90610ed190830184610e80565b949350505050565b5f60208284031215610ee9575f80fd5b8151801515811461041d575f80fd5b6001600160a01b038481168252831660208201526060604082018190525f9061045590830184610e8056fea2646970667358221220dd4434cf5ec982b81a2a3a25f96ea3d5d76d95704500f208da19253bd6abc73b64736f6c63430008190033", + "devdoc": { + "author": "Venus", + "details": "As a base price the oracle uses either the price of the Pendle market's asset (in this case PT_TO_ASSET rate should be used) or the price of the Pendle market's interest bearing token (e.g. wstETH for stETH; in this case PT_TO_SY rate should be used). Technically, interest bearing token is different from standardized yield (SY) token, but since SY is a wrapper around an interest bearing token, we can safely assume the prices of the two are equal. This is not always true for asset price though: using PT_TO_ASSET rate assumes that the yield token can be seamlessly redeemed for the underlying asset. In reality, this might not always be the case. For more details, see https://docs.pendle.finance/Developers/Contracts/StandardizedYield", + "kind": "dev", + "methods": { + "constructor": { + "custom:error": "InvalidDuration Thrown if the duration is invalid" + }, + "getMaxAllowedExchangeRate()": { + "returns": { + "_0": "maxExchangeRate Maximum allowed exchange rate" + } + }, + "getPrice(address)": { + "custom:error": "InvalidTokenAddress error is thrown if the token address is invalid", + "params": { + "asset": "Address of the token" + }, + "returns": { + "_0": "price The price of the token in scaled decimal places. It can be capped to a maximum value taking into account the growth rate" + } + }, + "getUnderlyingAmount()": { + "returns": { + "_0": "amount The amount of underlying token (either the market's asset or the yield token) for 1 PT, adjusted for decimals such that the result has the same precision as the underlying token" + } + }, + "isCapped()": { + "returns": { + "_0": "isCapped Boolean indicating if the price is capped" + } + }, + "setGrowthRate(uint256,uint256)": { + "custom:error": "InvalidGrowthRate error is thrown if the growth rate is invalid", + "custom:event": "Emits GrowthRateUpdated event on successful update of the growth rate", + "params": { + "_annualGrowthRate": "The annual growth rate to set", + "_snapshotInterval": "The snapshot interval to set" + } + }, + "setSnapshot(uint256,uint256)": { + "custom:event": "Emits SnapshotUpdated event on successful update of the snapshot", + "params": { + "_snapshotMaxExchangeRate": "The exchange rate to set", + "_snapshotTimestamp": "The timestamp to set" + } + }, + "setSnapshotGap(uint256)": { + "custom:event": "Emits SnapshotGapUpdated event on successful update of the snapshot gap", + "params": { + "_snapshotGap": "The snapshot gap to set" + } + }, + "updateSnapshot()": { + "custom:error": "InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero", + "custom:event": "Emits SnapshotUpdated event on successful update of the snapshot" + } + }, + "stateVariables": { + "UNDERLYING_DECIMALS": { + "details": "We make an assumption that the underlying decimals will not change throughout the lifetime of the Pendle market" + } + }, + "title": "PendleOracle", + "version": 1 + }, + "userdoc": { + "errors": { + "InvalidDuration()": [ + { + "notice": "Thrown if the duration is invalid" + } + ], + "InvalidGrowthRate()": [ + { + "notice": "Thrown if the growth rate is invalid" + } + ], + "InvalidInitialSnapshot()": [ + { + "notice": "Thrown if the initial snapshot is invalid" + } + ], + "InvalidSnapshotMaxExchangeRate()": [ + { + "notice": "Thrown if the max snapshot exchange rate is invalid" + } + ], + "InvalidTokenAddress()": [ + { + "notice": "Thrown if the token address is invalid" + } + ], + "Unauthorized(address,address,string)": [ + { + "notice": "@notice Thrown when the action is prohibited by AccessControlManager" + } + ], + "ZeroAddressNotAllowed()": [ + { + "notice": "Thrown if the supplied address is a zero address where it is not allowed" + } + ], + "ZeroValueNotAllowed()": [ + { + "notice": "Thrown if the supplied value is 0 where it is not allowed" + } + ] + }, + "events": { + "GrowthRateUpdated(uint256,uint256,uint256,uint256)": { + "notice": "Emitted when the growth rate is updated" + }, + "SnapshotGapUpdated(uint256,uint256)": { + "notice": "Emitted when the snapshot gap is updated" + }, + "SnapshotUpdated(uint256,uint256)": { + "notice": "Emitted when the snapshot is updated" + } + }, + "kind": "user", + "methods": { + "ACCESS_CONTROL_MANAGER()": { + "notice": "Address of the AccessControlManager contract" + }, + "CORRELATED_TOKEN()": { + "notice": "Address of the correlated token" + }, + "MARKET()": { + "notice": "Address of the market" + }, + "PT_ORACLE()": { + "notice": "Address of the PT oracle" + }, + "RATE_KIND()": { + "notice": "Whether to use PT/SY (standardized yield token) rate or PT/market asset rate" + }, + "RESILIENT_ORACLE()": { + "notice": "Address of Resilient Oracle" + }, + "TWAP_DURATION()": { + "notice": "Twap duration for the oracle" + }, + "UNDERLYING_DECIMALS()": { + "notice": "Decimals of the underlying token" + }, + "UNDERLYING_TOKEN()": { + "notice": "Address of the underlying token" + }, + "constructor": { + "notice": "Constructor for the implementation contract." + }, + "getMaxAllowedExchangeRate()": { + "notice": "Gets the maximum allowed exchange rate for token" + }, + "getPrice(address)": { + "notice": "Fetches the price of the token" + }, + "getUnderlyingAmount()": { + "notice": "Fetches the amount of underlying token for 1 PT" + }, + "isCapped()": { + "notice": "Returns if the price is capped" + }, + "setGrowthRate(uint256,uint256)": { + "notice": "Sets the growth rate and snapshot interval" + }, + "setSnapshot(uint256,uint256)": { + "notice": "Directly sets the snapshot exchange rate and timestamp" + }, + "setSnapshotGap(uint256)": { + "notice": "Sets the snapshot gap" + }, + "snapshotGap()": { + "notice": "Gap to add when updating the snapshot" + }, + "snapshotInterval()": { + "notice": "Snapshot update interval" + }, + "snapshotMaxExchangeRate()": { + "notice": "Last stored snapshot maximum exchange rate" + }, + "snapshotTimestamp()": { + "notice": "Last stored snapshot timestamp" + }, + "updateSnapshot()": { + "notice": "Updates the snapshot price and timestamp" + } + }, + "notice": "This oracle fetches the price of a pendle token", + "version": 1 + }, + "storageLayout": { + "storage": [ + { + "astId": 6423, + "contract": "contracts/oracles/PendleOracle.sol:PendleOracle", + "label": "growthRatePerSecond", + "offset": 0, + "slot": "0", + "type": "t_uint256" + }, + { + "astId": 6426, + "contract": "contracts/oracles/PendleOracle.sol:PendleOracle", + "label": "snapshotInterval", + "offset": 0, + "slot": "1", + "type": "t_uint256" + }, + { + "astId": 6429, + "contract": "contracts/oracles/PendleOracle.sol:PendleOracle", + "label": "snapshotMaxExchangeRate", + "offset": 0, + "slot": "2", + "type": "t_uint256" + }, + { + "astId": 6432, + "contract": "contracts/oracles/PendleOracle.sol:PendleOracle", + "label": "snapshotTimestamp", + "offset": 0, + "slot": "3", + "type": "t_uint256" + }, + { + "astId": 6435, + "contract": "contracts/oracles/PendleOracle.sol:PendleOracle", + "label": "snapshotGap", + "offset": 0, + "slot": "4", + "type": "t_uint256" + } + ], + "types": { + "t_uint256": { + "encoding": "inplace", + "label": "uint256", + "numberOfBytes": "32" + } + } + } +} diff --git a/deployments/bsctestnet/solcInputs/26a7070d6dc65f243bcdfd66c9c6afcc.json b/deployments/bsctestnet/solcInputs/26a7070d6dc65f243bcdfd66c9c6afcc.json new file mode 100644 index 00000000..db0e7172 --- /dev/null +++ b/deployments/bsctestnet/solcInputs/26a7070d6dc65f243bcdfd66c9c6afcc.json @@ -0,0 +1,241 @@ +{ + "language": "Solidity", + "sources": { + "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\ninterface AggregatorV3Interface {\n function decimals() external view returns (uint8);\n\n function description() external view returns (string memory);\n\n function version() external view returns (uint256);\n\n function getRoundData(uint80 _roundId)\n external\n view\n returns (\n uint80 roundId,\n int256 answer,\n uint256 startedAt,\n uint256 updatedAt,\n uint80 answeredInRound\n );\n\n function latestRoundData()\n external\n view\n returns (\n uint80 roundId,\n int256 answer,\n uint256 startedAt,\n uint256 updatedAt,\n uint80 answeredInRound\n );\n}\n" + }, + "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable2Step.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./OwnableUpgradeable.sol\";\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Contract module which provides access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership} and {acceptOwnership}.\n *\n * This module is used through inheritance. It will make available all functions\n * from parent (Ownable).\n */\nabstract contract Ownable2StepUpgradeable is Initializable, OwnableUpgradeable {\n address private _pendingOwner;\n\n event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner);\n\n function __Ownable2Step_init() internal onlyInitializing {\n __Ownable_init_unchained();\n }\n\n function __Ownable2Step_init_unchained() internal onlyInitializing {\n }\n /**\n * @dev Returns the address of the pending owner.\n */\n function pendingOwner() public view virtual returns (address) {\n return _pendingOwner;\n }\n\n /**\n * @dev Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one.\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public virtual override onlyOwner {\n _pendingOwner = newOwner;\n emit OwnershipTransferStarted(owner(), newOwner);\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`) and deletes any pending owner.\n * Internal function without access restriction.\n */\n function _transferOwnership(address newOwner) internal virtual override {\n delete _pendingOwner;\n super._transferOwnership(newOwner);\n }\n\n /**\n * @dev The new owner accepts the ownership transfer.\n */\n function acceptOwnership() public virtual {\n address sender = _msgSender();\n require(pendingOwner() == sender, \"Ownable2Step: caller is not the new owner\");\n _transferOwnership(sender);\n }\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[49] private __gap;\n}\n" + }, + "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../utils/ContextUpgradeable.sol\";\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\n address private _owner;\n\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n /**\n * @dev Initializes the contract setting the deployer as the initial owner.\n */\n function __Ownable_init() internal onlyInitializing {\n __Ownable_init_unchained();\n }\n\n function __Ownable_init_unchained() internal onlyInitializing {\n _transferOwnership(_msgSender());\n }\n\n /**\n * @dev Throws if called by any account other than the owner.\n */\n modifier onlyOwner() {\n _checkOwner();\n _;\n }\n\n /**\n * @dev Returns the address of the current owner.\n */\n function owner() public view virtual returns (address) {\n return _owner;\n }\n\n /**\n * @dev Throws if the sender is not the owner.\n */\n function _checkOwner() internal view virtual {\n require(owner() == _msgSender(), \"Ownable: caller is not the owner\");\n }\n\n /**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby disabling any functionality that is only available to the owner.\n */\n function renounceOwnership() public virtual onlyOwner {\n _transferOwnership(address(0));\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public virtual onlyOwner {\n require(newOwner != address(0), \"Ownable: new owner is the zero address\");\n _transferOwnership(newOwner);\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Internal function without access restriction.\n */\n function _transferOwnership(address newOwner) internal virtual {\n address oldOwner = _owner;\n _owner = newOwner;\n emit OwnershipTransferred(oldOwner, newOwner);\n }\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[49] private __gap;\n}\n" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\n\npragma solidity ^0.8.2;\n\nimport \"../../utils/AddressUpgradeable.sol\";\n\n/**\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n *\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n * reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n * case an upgrade adds a module that needs to be initialized.\n *\n * For example:\n *\n * [.hljs-theme-light.nopadding]\n * ```solidity\n * contract MyToken is ERC20Upgradeable {\n * function initialize() initializer public {\n * __ERC20_init(\"MyToken\", \"MTK\");\n * }\n * }\n *\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n * function initializeV2() reinitializer(2) public {\n * __ERC20Permit_init(\"MyToken\");\n * }\n * }\n * ```\n *\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n *\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n *\n * [CAUTION]\n * ====\n * Avoid leaving a contract uninitialized.\n *\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n *\n * [.hljs-theme-light.nopadding]\n * ```\n * /// @custom:oz-upgrades-unsafe-allow constructor\n * constructor() {\n * _disableInitializers();\n * }\n * ```\n * ====\n */\nabstract contract Initializable {\n /**\n * @dev Indicates that the contract has been initialized.\n * @custom:oz-retyped-from bool\n */\n uint8 private _initialized;\n\n /**\n * @dev Indicates that the contract is in the process of being initialized.\n */\n bool private _initializing;\n\n /**\n * @dev Triggered when the contract has been initialized or reinitialized.\n */\n event Initialized(uint8 version);\n\n /**\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n * `onlyInitializing` functions can be used to initialize parent contracts.\n *\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\n * constructor.\n *\n * Emits an {Initialized} event.\n */\n modifier initializer() {\n bool isTopLevelCall = !_initializing;\n require(\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\n \"Initializable: contract is already initialized\"\n );\n _initialized = 1;\n if (isTopLevelCall) {\n _initializing = true;\n }\n _;\n if (isTopLevelCall) {\n _initializing = false;\n emit Initialized(1);\n }\n }\n\n /**\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n * used to initialize parent contracts.\n *\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\n * are added through upgrades and that require initialization.\n *\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n * cannot be nested. If one is invoked in the context of another, execution will revert.\n *\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n * a contract, executing them in the right order is up to the developer or operator.\n *\n * WARNING: setting the version to 255 will prevent any future reinitialization.\n *\n * Emits an {Initialized} event.\n */\n modifier reinitializer(uint8 version) {\n require(!_initializing && _initialized < version, \"Initializable: contract is already initialized\");\n _initialized = version;\n _initializing = true;\n _;\n _initializing = false;\n emit Initialized(version);\n }\n\n /**\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\n */\n modifier onlyInitializing() {\n require(_initializing, \"Initializable: contract is not initializing\");\n _;\n }\n\n /**\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n * through proxies.\n *\n * Emits an {Initialized} event the first time it is successfully executed.\n */\n function _disableInitializers() internal virtual {\n require(!_initializing, \"Initializable: contract is initializing\");\n if (_initialized != type(uint8).max) {\n _initialized = type(uint8).max;\n emit Initialized(type(uint8).max);\n }\n }\n\n /**\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\n */\n function _getInitializedVersion() internal view returns (uint8) {\n return _initialized;\n }\n\n /**\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\n */\n function _isInitializing() internal view returns (bool) {\n return _initializing;\n }\n}\n" + }, + "@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../utils/ContextUpgradeable.sol\";\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Contract module which allows children to implement an emergency stop\n * mechanism that can be triggered by an authorized account.\n *\n * This module is used through inheritance. It will make available the\n * modifiers `whenNotPaused` and `whenPaused`, which can be applied to\n * the functions of your contract. Note that they will not be pausable by\n * simply including this module, only once the modifiers are put in place.\n */\nabstract contract PausableUpgradeable is Initializable, ContextUpgradeable {\n /**\n * @dev Emitted when the pause is triggered by `account`.\n */\n event Paused(address account);\n\n /**\n * @dev Emitted when the pause is lifted by `account`.\n */\n event Unpaused(address account);\n\n bool private _paused;\n\n /**\n * @dev Initializes the contract in unpaused state.\n */\n function __Pausable_init() internal onlyInitializing {\n __Pausable_init_unchained();\n }\n\n function __Pausable_init_unchained() internal onlyInitializing {\n _paused = false;\n }\n\n /**\n * @dev Modifier to make a function callable only when the contract is not paused.\n *\n * Requirements:\n *\n * - The contract must not be paused.\n */\n modifier whenNotPaused() {\n _requireNotPaused();\n _;\n }\n\n /**\n * @dev Modifier to make a function callable only when the contract is paused.\n *\n * Requirements:\n *\n * - The contract must be paused.\n */\n modifier whenPaused() {\n _requirePaused();\n _;\n }\n\n /**\n * @dev Returns true if the contract is paused, and false otherwise.\n */\n function paused() public view virtual returns (bool) {\n return _paused;\n }\n\n /**\n * @dev Throws if the contract is paused.\n */\n function _requireNotPaused() internal view virtual {\n require(!paused(), \"Pausable: paused\");\n }\n\n /**\n * @dev Throws if the contract is not paused.\n */\n function _requirePaused() internal view virtual {\n require(paused(), \"Pausable: not paused\");\n }\n\n /**\n * @dev Triggers stopped state.\n *\n * Requirements:\n *\n * - The contract must not be paused.\n */\n function _pause() internal virtual whenNotPaused {\n _paused = true;\n emit Paused(_msgSender());\n }\n\n /**\n * @dev Returns to normal state.\n *\n * Requirements:\n *\n * - The contract must be paused.\n */\n function _unpause() internal virtual whenPaused {\n _paused = false;\n emit Unpaused(_msgSender());\n }\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[49] private __gap;\n}\n" + }, + "@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\n\npragma solidity ^0.8.1;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary AddressUpgradeable {\n /**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n * ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a contract.\n *\n * Among others, `isContract` will return false for the following\n * types of addresses:\n *\n * - an externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a contract lived, but was destroyed\n *\n * Furthermore, `isContract` will also return true if the target contract within\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n * which only has an effect at the end of a transaction.\n * ====\n *\n * [IMPORTANT]\n * ====\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\n *\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n * constructor.\n * ====\n */\n function isContract(address account) internal view returns (bool) {\n // This method relies on extcodesize/address.code.length, which returns 0\n // for contracts in construction, since the code is only stored at the end\n // of the constructor execution.\n\n return account.code.length > 0;\n }\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n (bool success, ) = recipient.call{value: amount}(\"\");\n require(success, \"Address: unable to send value, recipient may have reverted\");\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason, it is bubbled up by this\n * function (like regular Solidity function calls).\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n *\n * _Available since v3.1._\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, \"Address: low-level call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n * `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n * with `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value,\n string memory errorMessage\n ) internal returns (bytes memory) {\n require(address(this).balance >= value, \"Address: insufficient balance for call\");\n (bool success, bytes memory returndata) = target.call{value: value}(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n return functionStaticCall(target, data, \"Address: low-level static call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n (bool success, bytes memory returndata) = target.staticcall(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n *\n * _Available since v4.8._\n */\n function verifyCallResultFromTarget(\n address target,\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n if (success) {\n if (returndata.length == 0) {\n // only check isContract if the call was successful and the return data is empty\n // otherwise we already know that it was a contract\n require(isContract(target), \"Address: call to non-contract\");\n }\n return returndata;\n } else {\n _revert(returndata, errorMessage);\n }\n }\n\n /**\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n * revert reason or using the provided one.\n *\n * _Available since v4.3._\n */\n function verifyCallResult(\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal pure returns (bytes memory) {\n if (success) {\n return returndata;\n } else {\n _revert(returndata, errorMessage);\n }\n }\n\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n /// @solidity memory-safe-assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(errorMessage);\n }\n }\n}\n" + }, + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\n\npragma solidity ^0.8.0;\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract ContextUpgradeable is Initializable {\n function __Context_init() internal onlyInitializing {\n }\n\n function __Context_init_unchained() internal onlyInitializing {\n }\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n\n function _contextSuffixLength() internal view virtual returns (uint256) {\n return 0;\n }\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[50] private __gap;\n}\n" + }, + "@openzeppelin/contracts/access/IAccessControl.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev External interface of AccessControl declared to support ERC165 detection.\n */\ninterface IAccessControl {\n /**\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n *\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n * {RoleAdminChanged} not being emitted signaling this.\n *\n * _Available since v3.1._\n */\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\n\n /**\n * @dev Emitted when `account` is granted `role`.\n *\n * `sender` is the account that originated the contract call, an admin role\n * bearer except when using {AccessControl-_setupRole}.\n */\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\n\n /**\n * @dev Emitted when `account` is revoked `role`.\n *\n * `sender` is the account that originated the contract call:\n * - if using `revokeRole`, it is the admin role bearer\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\n */\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\n\n /**\n * @dev Returns `true` if `account` has been granted `role`.\n */\n function hasRole(bytes32 role, address account) external view returns (bool);\n\n /**\n * @dev Returns the admin role that controls `role`. See {grantRole} and\n * {revokeRole}.\n *\n * To change a role's admin, use {AccessControl-_setRoleAdmin}.\n */\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\n\n /**\n * @dev Grants `role` to `account`.\n *\n * If `account` had not been already granted `role`, emits a {RoleGranted}\n * event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function grantRole(bytes32 role, address account) external;\n\n /**\n * @dev Revokes `role` from `account`.\n *\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function revokeRole(bytes32 role, address account) external;\n\n /**\n * @dev Revokes `role` from the calling account.\n *\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\n * purpose is to provide a mechanism for accounts to lose their privileges\n * if they are compromised (such as when a trusted device is misplaced).\n *\n * If the calling account had been granted `role`, emits a {RoleRevoked}\n * event.\n *\n * Requirements:\n *\n * - the caller must be `account`.\n */\n function renounceRole(bytes32 role, address account) external;\n}\n" + }, + "@openzeppelin/contracts/token/ERC20/ERC20.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC20.sol\";\nimport \"./extensions/IERC20Metadata.sol\";\nimport \"../../utils/Context.sol\";\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n * For a generic mechanism see {ERC20PresetMinterPauser}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * The default value of {decimals} is 18. To change this, you should override\n * this function so it returns a different value.\n *\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\n * instead returning `false` on failure. This behavior is nonetheless\n * conventional and does not conflict with the expectations of ERC20\n * applications.\n *\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n * This allows applications to reconstruct the allowance for all accounts just\n * by listening to said events. Other implementations of the EIP may not emit\n * these events, as it isn't required by the specification.\n *\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n * functions have been added to mitigate the well-known issues around setting\n * allowances. See {IERC20-approve}.\n */\ncontract ERC20 is Context, IERC20, IERC20Metadata {\n mapping(address => uint256) private _balances;\n\n mapping(address => mapping(address => uint256)) private _allowances;\n\n uint256 private _totalSupply;\n\n string private _name;\n string private _symbol;\n\n /**\n * @dev Sets the values for {name} and {symbol}.\n *\n * All two of these values are immutable: they can only be set once during\n * construction.\n */\n constructor(string memory name_, string memory symbol_) {\n _name = name_;\n _symbol = symbol_;\n }\n\n /**\n * @dev Returns the name of the token.\n */\n function name() public view virtual override returns (string memory) {\n return _name;\n }\n\n /**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */\n function symbol() public view virtual override returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev Returns the number of decimals used to get its user representation.\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\n * be displayed to a user as `5.05` (`505 / 10 ** 2`).\n *\n * Tokens usually opt for a value of 18, imitating the relationship between\n * Ether and Wei. This is the default value returned by this function, unless\n * it's overridden.\n *\n * NOTE: This information is only used for _display_ purposes: it in\n * no way affects any of the arithmetic of the contract, including\n * {IERC20-balanceOf} and {IERC20-transfer}.\n */\n function decimals() public view virtual override returns (uint8) {\n return 18;\n }\n\n /**\n * @dev See {IERC20-totalSupply}.\n */\n function totalSupply() public view virtual override returns (uint256) {\n return _totalSupply;\n }\n\n /**\n * @dev See {IERC20-balanceOf}.\n */\n function balanceOf(address account) public view virtual override returns (uint256) {\n return _balances[account];\n }\n\n /**\n * @dev See {IERC20-transfer}.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - the caller must have a balance of at least `amount`.\n */\n function transfer(address to, uint256 amount) public virtual override returns (bool) {\n address owner = _msgSender();\n _transfer(owner, to, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-allowance}.\n */\n function allowance(address owner, address spender) public view virtual override returns (uint256) {\n return _allowances[owner][spender];\n }\n\n /**\n * @dev See {IERC20-approve}.\n *\n * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on\n * `transferFrom`. This is semantically equivalent to an infinite approval.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function approve(address spender, uint256 amount) public virtual override returns (bool) {\n address owner = _msgSender();\n _approve(owner, spender, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-transferFrom}.\n *\n * Emits an {Approval} event indicating the updated allowance. This is not\n * required by the EIP. See the note at the beginning of {ERC20}.\n *\n * NOTE: Does not update the allowance if the current allowance\n * is the maximum `uint256`.\n *\n * Requirements:\n *\n * - `from` and `to` cannot be the zero address.\n * - `from` must have a balance of at least `amount`.\n * - the caller must have allowance for ``from``'s tokens of at least\n * `amount`.\n */\n function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {\n address spender = _msgSender();\n _spendAllowance(from, spender, amount);\n _transfer(from, to, amount);\n return true;\n }\n\n /**\n * @dev Atomically increases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\n address owner = _msgSender();\n _approve(owner, spender, allowance(owner, spender) + addedValue);\n return true;\n }\n\n /**\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `spender` must have allowance for the caller of at least\n * `subtractedValue`.\n */\n function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\n address owner = _msgSender();\n uint256 currentAllowance = allowance(owner, spender);\n require(currentAllowance >= subtractedValue, \"ERC20: decreased allowance below zero\");\n unchecked {\n _approve(owner, spender, currentAllowance - subtractedValue);\n }\n\n return true;\n }\n\n /**\n * @dev Moves `amount` of tokens from `from` to `to`.\n *\n * This internal function is equivalent to {transfer}, and can be used to\n * e.g. implement automatic token fees, slashing mechanisms, etc.\n *\n * Emits a {Transfer} event.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `from` must have a balance of at least `amount`.\n */\n function _transfer(address from, address to, uint256 amount) internal virtual {\n require(from != address(0), \"ERC20: transfer from the zero address\");\n require(to != address(0), \"ERC20: transfer to the zero address\");\n\n _beforeTokenTransfer(from, to, amount);\n\n uint256 fromBalance = _balances[from];\n require(fromBalance >= amount, \"ERC20: transfer amount exceeds balance\");\n unchecked {\n _balances[from] = fromBalance - amount;\n // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by\n // decrementing then incrementing.\n _balances[to] += amount;\n }\n\n emit Transfer(from, to, amount);\n\n _afterTokenTransfer(from, to, amount);\n }\n\n /** @dev Creates `amount` tokens and assigns them to `account`, increasing\n * the total supply.\n *\n * Emits a {Transfer} event with `from` set to the zero address.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n */\n function _mint(address account, uint256 amount) internal virtual {\n require(account != address(0), \"ERC20: mint to the zero address\");\n\n _beforeTokenTransfer(address(0), account, amount);\n\n _totalSupply += amount;\n unchecked {\n // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.\n _balances[account] += amount;\n }\n emit Transfer(address(0), account, amount);\n\n _afterTokenTransfer(address(0), account, amount);\n }\n\n /**\n * @dev Destroys `amount` tokens from `account`, reducing the\n * total supply.\n *\n * Emits a {Transfer} event with `to` set to the zero address.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n * - `account` must have at least `amount` tokens.\n */\n function _burn(address account, uint256 amount) internal virtual {\n require(account != address(0), \"ERC20: burn from the zero address\");\n\n _beforeTokenTransfer(account, address(0), amount);\n\n uint256 accountBalance = _balances[account];\n require(accountBalance >= amount, \"ERC20: burn amount exceeds balance\");\n unchecked {\n _balances[account] = accountBalance - amount;\n // Overflow not possible: amount <= accountBalance <= totalSupply.\n _totalSupply -= amount;\n }\n\n emit Transfer(account, address(0), amount);\n\n _afterTokenTransfer(account, address(0), amount);\n }\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n *\n * This internal function is equivalent to `approve`, and can be used to\n * e.g. set automatic allowances for certain subsystems, etc.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `owner` cannot be the zero address.\n * - `spender` cannot be the zero address.\n */\n function _approve(address owner, address spender, uint256 amount) internal virtual {\n require(owner != address(0), \"ERC20: approve from the zero address\");\n require(spender != address(0), \"ERC20: approve to the zero address\");\n\n _allowances[owner][spender] = amount;\n emit Approval(owner, spender, amount);\n }\n\n /**\n * @dev Updates `owner` s allowance for `spender` based on spent `amount`.\n *\n * Does not update the allowance amount in case of infinite allowance.\n * Revert if not enough allowance is available.\n *\n * Might emit an {Approval} event.\n */\n function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {\n uint256 currentAllowance = allowance(owner, spender);\n if (currentAllowance != type(uint256).max) {\n require(currentAllowance >= amount, \"ERC20: insufficient allowance\");\n unchecked {\n _approve(owner, spender, currentAllowance - amount);\n }\n }\n }\n\n /**\n * @dev Hook that is called before any transfer of tokens. This includes\n * minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * will be transferred to `to`.\n * - when `from` is zero, `amount` tokens will be minted for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}\n\n /**\n * @dev Hook that is called after any transfer of tokens. This includes\n * minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * has been transferred to `to`.\n * - when `from` is zero, `amount` tokens have been minted for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens have been burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}\n}\n" + }, + "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC20.sol\";\n\n/**\n * @dev Interface for the optional metadata functions from the ERC20 standard.\n *\n * _Available since v4.1._\n */\ninterface IERC20Metadata is IERC20 {\n /**\n * @dev Returns the name of the token.\n */\n function name() external view returns (string memory);\n\n /**\n * @dev Returns the symbol of the token.\n */\n function symbol() external view returns (string memory);\n\n /**\n * @dev Returns the decimals places of the token.\n */\n function decimals() external view returns (uint8);\n}\n" + }, + "@openzeppelin/contracts/token/ERC20/IERC20.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n /**\n * @dev Returns the amount of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address to, uint256 amount) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 amount) external returns (bool);\n\n /**\n * @dev Moves `amount` tokens from `from` to `to` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\n}\n" + }, + "@openzeppelin/contracts/utils/Context.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n\n function _contextSuffixLength() internal view virtual returns (uint256) {\n return 0;\n }\n}\n" + }, + "@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol\";\n\nimport \"./IAccessControlManagerV8.sol\";\n\n/**\n * @title AccessControlledV8\n * @author Venus\n * @notice This contract is helper between access control manager and actual contract. This contract further inherited by other contract (using solidity 0.8.13)\n * to integrate access controlled mechanism. It provides initialise methods and verifying access methods.\n */\nabstract contract AccessControlledV8 is Initializable, Ownable2StepUpgradeable {\n /// @notice Access control manager contract\n IAccessControlManagerV8 private _accessControlManager;\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[49] private __gap;\n\n /// @notice Emitted when access control manager contract address is changed\n event NewAccessControlManager(address oldAccessControlManager, address newAccessControlManager);\n\n /// @notice Thrown when the action is prohibited by AccessControlManager\n error Unauthorized(address sender, address calledContract, string methodSignature);\n\n function __AccessControlled_init(address accessControlManager_) internal onlyInitializing {\n __Ownable2Step_init();\n __AccessControlled_init_unchained(accessControlManager_);\n }\n\n function __AccessControlled_init_unchained(address accessControlManager_) internal onlyInitializing {\n _setAccessControlManager(accessControlManager_);\n }\n\n /**\n * @notice Sets the address of AccessControlManager\n * @dev Admin function to set address of AccessControlManager\n * @param accessControlManager_ The new address of the AccessControlManager\n * @custom:event Emits NewAccessControlManager event\n * @custom:access Only Governance\n */\n function setAccessControlManager(address accessControlManager_) external onlyOwner {\n _setAccessControlManager(accessControlManager_);\n }\n\n /**\n * @notice Returns the address of the access control manager contract\n */\n function accessControlManager() external view returns (IAccessControlManagerV8) {\n return _accessControlManager;\n }\n\n /**\n * @dev Internal function to set address of AccessControlManager\n * @param accessControlManager_ The new address of the AccessControlManager\n */\n function _setAccessControlManager(address accessControlManager_) internal {\n require(address(accessControlManager_) != address(0), \"invalid acess control manager address\");\n address oldAccessControlManager = address(_accessControlManager);\n _accessControlManager = IAccessControlManagerV8(accessControlManager_);\n emit NewAccessControlManager(oldAccessControlManager, accessControlManager_);\n }\n\n /**\n * @notice Reverts if the call is not allowed by AccessControlManager\n * @param signature Method signature\n */\n function _checkAccessAllowed(string memory signature) internal view {\n bool isAllowedToCall = _accessControlManager.isAllowedToCall(msg.sender, signature);\n\n if (!isAllowedToCall) {\n revert Unauthorized(msg.sender, address(this), signature);\n }\n }\n}\n" + }, + "@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\nimport \"@openzeppelin/contracts/access/IAccessControl.sol\";\n\n/**\n * @title IAccessControlManagerV8\n * @author Venus\n * @notice Interface implemented by the `AccessControlManagerV8` contract.\n */\ninterface IAccessControlManagerV8 is IAccessControl {\n function giveCallPermission(address contractAddress, string calldata functionSig, address accountToPermit) external;\n\n function revokeCallPermission(\n address contractAddress,\n string calldata functionSig,\n address accountToRevoke\n ) external;\n\n function isAllowedToCall(address account, string calldata functionSig) external view returns (bool);\n\n function hasPermission(\n address account,\n address contractAddress,\n string calldata functionSig\n ) external view returns (bool);\n}\n" + }, + "@venusprotocol/solidity-utilities/contracts/constants.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\n/// @dev Base unit for computations, usually used in scaling (multiplications, divisions)\nuint256 constant EXP_SCALE = 1e18;\n\n/// @dev A unit (literal one) in EXP_SCALE, usually used in additions/subtractions\nuint256 constant MANTISSA_ONE = EXP_SCALE;\n\n/// @dev The approximate number of seconds per year\nuint256 constant SECONDS_PER_YEAR = 31_536_000;\n" + }, + "@venusprotocol/solidity-utilities/contracts/validators.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\n/// @notice Thrown if the supplied address is a zero address where it is not allowed\nerror ZeroAddressNotAllowed();\n\n/// @notice Thrown if the supplied value is 0 where it is not allowed\nerror ZeroValueNotAllowed();\n\n/// @notice Checks if the provided address is nonzero, reverts otherwise\n/// @param address_ Address to check\n/// @custom:error ZeroAddressNotAllowed is thrown if the provided address is a zero address\nfunction ensureNonzeroAddress(address address_) pure {\n if (address_ == address(0)) {\n revert ZeroAddressNotAllowed();\n }\n}\n\n/// @notice Checks if the provided value is nonzero, reverts otherwise\n/// @param value_ Value to check\n/// @custom:error ZeroValueNotAllowed is thrown if the provided value is 0\nfunction ensureNonzeroValue(uint256 value_) pure {\n if (value_ == 0) {\n revert ZeroValueNotAllowed();\n }\n}\n" + }, + "contracts/interfaces/FeedRegistryInterface.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\ninterface FeedRegistryInterface {\n function latestRoundDataByName(\n string memory base,\n string memory quote\n )\n external\n view\n returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound);\n\n function decimalsByName(string memory base, string memory quote) external view returns (uint8);\n}\n" + }, + "contracts/interfaces/IAccountant.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface IAccountant {\n function getRateSafe() external view returns (uint256);\n}\n" + }, + "contracts/interfaces/IAnkrBNB.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface IAnkrBNB {\n function sharesToBonds(uint256 amount) external view returns (uint256);\n function decimals() external view returns (uint8);\n}\n" + }, + "contracts/interfaces/IAsBNB.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface IAsBNB {\n function minter() external view returns (address);\n function decimals() external view returns (uint8);\n}\n" + }, + "contracts/interfaces/IAsBNBMinter.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface IAsBNBMinter {\n function convertToTokens(uint256 amount) external view returns (uint256);\n}\n" + }, + "contracts/interfaces/ICappedOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface ICappedOracle {\n function updateSnapshot() external;\n}\n" + }, + "contracts/interfaces/IERC4626.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface IERC4626 {\n function convertToAssets(uint256 shares) external view returns (uint256);\n function decimals() external view returns (uint8);\n}\n" + }, + "contracts/interfaces/IEtherFiLiquidityPool.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface IEtherFiLiquidityPool {\n function amountForShare(uint256 _share) external view returns (uint256);\n}\n" + }, + "contracts/interfaces/IPendlePtOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface IPendlePtOracle {\n function getPtToAssetRate(address market, uint32 duration) external view returns (uint256);\n\n function getPtToSyRate(address market, uint32 duration) external view returns (uint256);\n\n function getOracleState(\n address market,\n uint32 duration\n )\n external\n view\n returns (bool increaseCardinalityRequired, uint16 cardinalityRequired, bool oldestObservationSatisfied);\n}\n" + }, + "contracts/interfaces/IPStakePool.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface IPStakePool {\n struct Data {\n uint256 totalWei;\n uint256 poolTokenSupply;\n }\n\n /**\n * @dev The current exchange rate for converting stkBNB to BNB.\n */\n function exchangeRate() external view returns (Data memory);\n}\n" + }, + "contracts/interfaces/ISFrax.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface ISFrax {\n function convertToAssets(uint256 shares) external view returns (uint256);\n function decimals() external view returns (uint8);\n}\n" + }, + "contracts/interfaces/ISfrxEthFraxOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface ISfrxEthFraxOracle {\n function getPrices() external view returns (bool _isbadData, uint256 _priceLow, uint256 _priceHigh);\n}\n" + }, + "contracts/interfaces/IStaderStakeManager.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface IStaderStakeManager {\n function convertBnbXToBnb(uint256 _amount) external view returns (uint256);\n}\n" + }, + "contracts/interfaces/IStETH.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\ninterface IStETH {\n function getPooledEthByShares(uint256 _sharesAmount) external view returns (uint256);\n function decimals() external view returns (uint8);\n}\n" + }, + "contracts/interfaces/ISynclubStakeManager.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface ISynclubStakeManager {\n function convertSnBnbToBnb(uint256 _amount) external view returns (uint256);\n}\n" + }, + "contracts/interfaces/IWBETH.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface IWBETH {\n function exchangeRate() external view returns (uint256);\n function decimals() external view returns (uint8);\n}\n" + }, + "contracts/interfaces/IZkETH.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\ninterface IZkETH {\n function LSTPerToken() external view returns (uint256);\n function decimals() external view returns (uint8);\n}\n" + }, + "contracts/interfaces/OracleInterface.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\ninterface OracleInterface {\n function getPrice(address asset) external view returns (uint256);\n}\n\ninterface ResilientOracleInterface is OracleInterface {\n function updatePrice(address vToken) external;\n\n function updateAssetPrice(address asset) external;\n\n function getUnderlyingPrice(address vToken) external view returns (uint256);\n}\n\ninterface BoundValidatorInterface {\n function validatePriceWithAnchorPrice(\n address asset,\n uint256 reporterPrice,\n uint256 anchorPrice\n ) external view returns (bool);\n}\n" + }, + "contracts/interfaces/PublicResolverInterface.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\n// SPDX-FileCopyrightText: 2022 Venus\npragma solidity ^0.8.25;\n\ninterface PublicResolverInterface {\n function addr(bytes32 node) external view returns (address payable);\n}\n" + }, + "contracts/interfaces/SIDRegistryInterface.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\n// SPDX-FileCopyrightText: 2022 Venus\npragma solidity ^0.8.25;\n\ninterface SIDRegistryInterface {\n function resolver(bytes32 node) external view returns (address);\n}\n" + }, + "contracts/interfaces/VBep20Interface.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\nimport \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\";\n\ninterface VBep20Interface is IERC20Metadata {\n /**\n * @notice Underlying asset for this VToken\n */\n function underlying() external view returns (address);\n}\n" + }, + "contracts/lib/Transient.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\nlibrary Transient {\n /**\n * @notice Cache the asset price into transient storage\n * @param key address of the asset\n * @param value asset price\n */\n function cachePrice(bytes32 cacheSlot, address key, uint256 value) internal {\n bytes32 slot = keccak256(abi.encode(cacheSlot, key));\n assembly (\"memory-safe\") {\n tstore(slot, value)\n }\n }\n\n /**\n * @notice Read cached price from transient storage\n * @param key address of the asset\n * @return value cached asset price\n */\n function readCachedPrice(bytes32 cacheSlot, address key) internal view returns (uint256 value) {\n bytes32 slot = keccak256(abi.encode(cacheSlot, key));\n assembly (\"memory-safe\") {\n value := tload(slot)\n }\n }\n}\n" + }, + "contracts/oracles/AnkrBNBOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { IAnkrBNB } from \"../interfaces/IAnkrBNB.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\nimport { EXP_SCALE } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\n\n/**\n * @title AnkrBNBOracle\n * @author Venus\n * @notice This oracle fetches the price of ankrBNB asset\n */\ncontract AnkrBNBOracle is CorrelatedTokenOracle {\n /// @notice This is used as token address of BNB on BSC\n address public constant NATIVE_TOKEN_ADDR = 0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB;\n\n /// @notice Constructor for the implementation contract.\n constructor(\n address ankrBNB,\n address resilientOracle,\n uint256 annualGrowthRate,\n uint256 _snapshotInterval,\n uint256 initialSnapshotMaxExchangeRate,\n uint256 initialSnapshotTimestamp,\n address accessControlManager,\n uint256 _snapshotGap\n )\n CorrelatedTokenOracle(\n ankrBNB,\n NATIVE_TOKEN_ADDR,\n resilientOracle,\n annualGrowthRate,\n _snapshotInterval,\n initialSnapshotMaxExchangeRate,\n initialSnapshotTimestamp,\n accessControlManager,\n _snapshotGap\n )\n {}\n\n /**\n * @notice Fetches the amount of BNB for 1 ankrBNB\n * @return amount The amount of BNB for ankrBNB\n */\n function getUnderlyingAmount() public view override returns (uint256) {\n return IAnkrBNB(CORRELATED_TOKEN).sharesToBonds(EXP_SCALE);\n }\n}\n" + }, + "contracts/oracles/AsBNBOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { IAsBNB } from \"../interfaces/IAsBNB.sol\";\nimport { IAsBNBMinter } from \"../interfaces/IAsBNBMinter.sol\";\nimport { EXP_SCALE } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\n\n/**\n * @title asBNBOracle\n * @author Venus\n * @notice This oracle fetches the price of asBNB asset\n */\ncontract AsBNBOracle is CorrelatedTokenOracle {\n /// @notice Constructor for the implementation contract.\n constructor(\n address asBNB,\n address slisBNB,\n address resilientOracle,\n uint256 annualGrowthRate,\n uint256 _snapshotInterval,\n uint256 initialSnapshotMaxExchangeRate,\n uint256 initialSnapshotTimestamp,\n address accessControlManager,\n uint256 _snapshotGap\n )\n CorrelatedTokenOracle(\n asBNB,\n slisBNB,\n resilientOracle,\n annualGrowthRate,\n _snapshotInterval,\n initialSnapshotMaxExchangeRate,\n initialSnapshotTimestamp,\n accessControlManager,\n _snapshotGap\n )\n {}\n\n /**\n * @notice Fetches the amount of slisBNB for 1 asBNB\n * @return price The amount of slisBNB for asBNB\n */\n function getUnderlyingAmount() public view override returns (uint256) {\n IAsBNBMinter minter = IAsBNBMinter(IAsBNB(CORRELATED_TOKEN).minter());\n return minter.convertToTokens(EXP_SCALE);\n }\n}\n" + }, + "contracts/oracles/BinanceOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\";\nimport \"../interfaces/VBep20Interface.sol\";\nimport \"../interfaces/SIDRegistryInterface.sol\";\nimport \"../interfaces/FeedRegistryInterface.sol\";\nimport \"../interfaces/PublicResolverInterface.sol\";\nimport \"../interfaces/OracleInterface.sol\";\nimport \"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol\";\nimport \"../interfaces/OracleInterface.sol\";\n\n/**\n * @title BinanceOracle\n * @author Venus\n * @notice This oracle fetches price of assets from Binance.\n */\ncontract BinanceOracle is AccessControlledV8, OracleInterface {\n /// @notice Used to fetch feed registry address.\n address public sidRegistryAddress;\n\n /// @notice Set this as asset address for BNB. This is the underlying address for vBNB\n address public constant BNB_ADDR = 0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB;\n\n /// @notice Max stale period configuration for assets\n mapping(string => uint256) public maxStalePeriod;\n\n /// @notice Override symbols to be compatible with Binance feed registry\n mapping(string => string) public symbols;\n\n /// @notice Used to fetch price of assets used directly when space ID is not supported by current chain.\n address public feedRegistryAddress;\n\n /// @notice Emits when asset stale period is updated.\n event MaxStalePeriodAdded(string indexed asset, uint256 maxStalePeriod);\n\n /// @notice Emits when symbol of the asset is updated.\n event SymbolOverridden(string indexed symbol, string overriddenSymbol);\n\n /// @notice Emits when address of feed registry is updated.\n event FeedRegistryUpdated(address indexed oldFeedRegistry, address indexed newFeedRegistry);\n\n /**\n * @notice Checks whether an address is null or not\n */\n modifier notNullAddress(address someone) {\n if (someone == address(0)) revert(\"can't be zero address\");\n _;\n }\n\n /// @notice Constructor for the implementation contract.\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n\n /**\n * @notice Sets the contracts required to fetch prices\n * @param _sidRegistryAddress Address of SID registry\n * @param _acm Address of the access control manager contract\n */\n function initialize(address _sidRegistryAddress, address _acm) external initializer {\n sidRegistryAddress = _sidRegistryAddress;\n __AccessControlled_init(_acm);\n }\n\n /**\n * @notice Used to set the max stale period of an asset\n * @param symbol The symbol of the asset\n * @param _maxStalePeriod The max stake period\n */\n function setMaxStalePeriod(string memory symbol, uint256 _maxStalePeriod) external {\n _checkAccessAllowed(\"setMaxStalePeriod(string,uint256)\");\n if (_maxStalePeriod == 0) revert(\"stale period can't be zero\");\n if (bytes(symbol).length == 0) revert(\"symbol cannot be empty\");\n\n maxStalePeriod[symbol] = _maxStalePeriod;\n emit MaxStalePeriodAdded(symbol, _maxStalePeriod);\n }\n\n /**\n * @notice Used to override a symbol when fetching price\n * @param symbol The symbol to override\n * @param overrideSymbol The symbol after override\n */\n function setSymbolOverride(string calldata symbol, string calldata overrideSymbol) external {\n _checkAccessAllowed(\"setSymbolOverride(string,string)\");\n if (bytes(symbol).length == 0) revert(\"symbol cannot be empty\");\n\n symbols[symbol] = overrideSymbol;\n emit SymbolOverridden(symbol, overrideSymbol);\n }\n\n /**\n * @notice Used to set feed registry address when current chain does not support space ID.\n * @param newfeedRegistryAddress Address of new feed registry.\n */\n function setFeedRegistryAddress(\n address newfeedRegistryAddress\n ) external notNullAddress(newfeedRegistryAddress) onlyOwner {\n if (sidRegistryAddress != address(0)) revert(\"sidRegistryAddress must be zero\");\n emit FeedRegistryUpdated(feedRegistryAddress, newfeedRegistryAddress);\n feedRegistryAddress = newfeedRegistryAddress;\n }\n\n /**\n * @notice Uses Space ID to fetch the feed registry address\n * @return feedRegistryAddress Address of binance oracle feed registry.\n */\n function getFeedRegistryAddress() public view returns (address) {\n bytes32 nodeHash = 0x94fe3821e0768eb35012484db4df61890f9a6ca5bfa984ef8ff717e73139faff;\n\n SIDRegistryInterface sidRegistry = SIDRegistryInterface(sidRegistryAddress);\n address publicResolverAddress = sidRegistry.resolver(nodeHash);\n PublicResolverInterface publicResolver = PublicResolverInterface(publicResolverAddress);\n\n return publicResolver.addr(nodeHash);\n }\n\n /**\n * @notice Gets the price of a asset from the binance oracle\n * @param asset Address of the asset\n * @return Price in USD\n */\n function getPrice(address asset) public view returns (uint256) {\n string memory symbol;\n uint256 decimals;\n\n if (asset == BNB_ADDR) {\n symbol = \"BNB\";\n decimals = 18;\n } else {\n IERC20Metadata token = IERC20Metadata(asset);\n symbol = token.symbol();\n decimals = token.decimals();\n }\n\n string memory overrideSymbol = symbols[symbol];\n\n if (bytes(overrideSymbol).length != 0) {\n symbol = overrideSymbol;\n }\n\n return _getPrice(symbol, decimals);\n }\n\n function _getPrice(string memory symbol, uint256 decimals) internal view returns (uint256) {\n FeedRegistryInterface feedRegistry;\n\n if (sidRegistryAddress != address(0)) {\n // If sidRegistryAddress is available, fetch feedRegistryAddress from sidRegistry\n feedRegistry = FeedRegistryInterface(getFeedRegistryAddress());\n } else {\n // Use feedRegistry directly if sidRegistryAddress is not available\n feedRegistry = FeedRegistryInterface(feedRegistryAddress);\n }\n\n (, int256 answer, , uint256 updatedAt, ) = feedRegistry.latestRoundDataByName(symbol, \"USD\");\n if (answer <= 0) revert(\"invalid binance oracle price\");\n if (block.timestamp < updatedAt) revert(\"updatedAt exceeds block time\");\n\n uint256 deltaTime;\n unchecked {\n deltaTime = block.timestamp - updatedAt;\n }\n if (deltaTime > maxStalePeriod[symbol]) revert(\"binance oracle price expired\");\n\n uint256 decimalDelta = feedRegistry.decimalsByName(symbol, \"USD\");\n return (uint256(answer) * (10 ** (18 - decimalDelta))) * (10 ** (18 - decimals));\n }\n}\n" + }, + "contracts/oracles/BNBxOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { IStaderStakeManager } from \"../interfaces/IStaderStakeManager.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\nimport { EXP_SCALE } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\n\n/**\n * @title BNBxOracle\n * @author Venus\n * @notice This oracle fetches the price of BNBx asset\n */\ncontract BNBxOracle is CorrelatedTokenOracle {\n /// @notice This is used as token address of BNB on BSC\n address public constant NATIVE_TOKEN_ADDR = 0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB;\n\n /// @notice Address of StakeManager\n IStaderStakeManager public immutable STAKE_MANAGER;\n\n /// @notice Constructor for the implementation contract.\n constructor(\n address stakeManager,\n address bnbx,\n address resilientOracle,\n uint256 annualGrowthRate,\n uint256 _snapshotInterval,\n uint256 initialSnapshotMaxExchangeRate,\n uint256 initialSnapshotTimestamp,\n address accessControlManager,\n uint256 _snapshotGap\n )\n CorrelatedTokenOracle(\n bnbx,\n NATIVE_TOKEN_ADDR,\n resilientOracle,\n annualGrowthRate,\n _snapshotInterval,\n initialSnapshotMaxExchangeRate,\n initialSnapshotTimestamp,\n accessControlManager,\n _snapshotGap\n )\n {\n ensureNonzeroAddress(stakeManager);\n STAKE_MANAGER = IStaderStakeManager(stakeManager);\n }\n\n /**\n * @notice Fetches the amount of BNB for 1 BNBx\n * @return price The amount of BNB for BNBx\n */\n function getUnderlyingAmount() public view override returns (uint256) {\n return STAKE_MANAGER.convertBnbXToBnb(EXP_SCALE);\n }\n}\n" + }, + "contracts/oracles/BoundValidator.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"../interfaces/VBep20Interface.sol\";\nimport \"../interfaces/OracleInterface.sol\";\nimport \"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol\";\n\n/**\n * @title BoundValidator\n * @author Venus\n * @notice The BoundValidator contract is used to validate prices fetched from two different sources.\n * Each asset has an upper and lower bound ratio set in the config. In order for a price to be valid\n * it must fall within this range of the validator price.\n */\ncontract BoundValidator is AccessControlledV8, BoundValidatorInterface {\n struct ValidateConfig {\n /// @notice asset address\n address asset;\n /// @notice Upper bound of deviation between reported price and anchor price,\n /// beyond which the reported price will be invalidated\n uint256 upperBoundRatio;\n /// @notice Lower bound of deviation between reported price and anchor price,\n /// below which the reported price will be invalidated\n uint256 lowerBoundRatio;\n }\n\n /// @notice validation configs by asset\n mapping(address => ValidateConfig) public validateConfigs;\n\n /// @notice Emit this event when new validation configs are added\n event ValidateConfigAdded(address indexed asset, uint256 indexed upperBound, uint256 indexed lowerBound);\n\n /// @notice Constructor for the implementation contract. Sets immutable variables.\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n\n /**\n * @notice Initializes the owner of the contract\n * @param accessControlManager_ Address of the access control manager contract\n */\n function initialize(address accessControlManager_) external initializer {\n __AccessControlled_init(accessControlManager_);\n }\n\n /**\n * @notice Add multiple validation configs at the same time\n * @param configs Array of validation configs\n * @custom:access Only Governance\n * @custom:error Zero length error is thrown if length of the config array is 0\n * @custom:event Emits ValidateConfigAdded for each validation config that is successfully set\n */\n function setValidateConfigs(ValidateConfig[] memory configs) external {\n uint256 length = configs.length;\n if (length == 0) revert(\"invalid validate config length\");\n for (uint256 i; i < length; ++i) {\n setValidateConfig(configs[i]);\n }\n }\n\n /**\n * @notice Add a single validation config\n * @param config Validation config struct\n * @custom:access Only Governance\n * @custom:error Null address error is thrown if asset address is null\n * @custom:error Range error thrown if bound ratio is not positive\n * @custom:error Range error thrown if lower bound is greater than or equal to upper bound\n * @custom:event Emits ValidateConfigAdded when a validation config is successfully set\n */\n function setValidateConfig(ValidateConfig memory config) public {\n _checkAccessAllowed(\"setValidateConfig(ValidateConfig)\");\n\n if (config.asset == address(0)) revert(\"asset can't be zero address\");\n if (config.upperBoundRatio == 0 || config.lowerBoundRatio == 0) revert(\"bound must be positive\");\n if (config.upperBoundRatio <= config.lowerBoundRatio) revert(\"upper bound must be higher than lowner bound\");\n validateConfigs[config.asset] = config;\n emit ValidateConfigAdded(config.asset, config.upperBoundRatio, config.lowerBoundRatio);\n }\n\n /**\n * @notice Test reported asset price against anchor price\n * @param asset asset address\n * @param reportedPrice The price to be tested\n * @custom:error Missing error thrown if asset config is not set\n * @custom:error Price error thrown if anchor price is not valid\n */\n function validatePriceWithAnchorPrice(\n address asset,\n uint256 reportedPrice,\n uint256 anchorPrice\n ) public view virtual override returns (bool) {\n if (validateConfigs[asset].upperBoundRatio == 0) revert(\"validation config not exist\");\n if (anchorPrice == 0) revert(\"anchor price is not valid\");\n return _isWithinAnchor(asset, reportedPrice, anchorPrice);\n }\n\n /**\n * @notice Test whether the reported price is within the valid bounds\n * @param asset Asset address\n * @param reportedPrice The price to be tested\n * @param anchorPrice The reported price must be within the the valid bounds of this price\n */\n function _isWithinAnchor(address asset, uint256 reportedPrice, uint256 anchorPrice) private view returns (bool) {\n if (reportedPrice != 0) {\n // we need to multiply anchorPrice by 1e18 to make the ratio 18 decimals\n uint256 anchorRatio = (anchorPrice * 1e18) / reportedPrice;\n uint256 upperBoundAnchorRatio = validateConfigs[asset].upperBoundRatio;\n uint256 lowerBoundAnchorRatio = validateConfigs[asset].lowerBoundRatio;\n return anchorRatio <= upperBoundAnchorRatio && anchorRatio >= lowerBoundAnchorRatio;\n }\n return false;\n }\n\n // BoundValidator is to get inherited, so it's a good practice to add some storage gaps like\n // OpenZepplin proposed in their contracts: https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n // solhint-disable-next-line\n uint256[49] private __gap;\n}\n" + }, + "contracts/oracles/ChainlinkOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"../interfaces/VBep20Interface.sol\";\nimport \"../interfaces/OracleInterface.sol\";\nimport \"@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol\";\nimport \"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol\";\n\n/**\n * @title ChainlinkOracle\n * @author Venus\n * @notice This oracle fetches prices of assets from the Chainlink oracle.\n */\ncontract ChainlinkOracle is AccessControlledV8, OracleInterface {\n struct TokenConfig {\n /// @notice Underlying token address, which can't be a null address\n /// @notice Used to check if a token is supported\n /// @notice 0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB address for native tokens\n /// (e.g BNB for BNB chain, ETH for Ethereum network)\n address asset;\n /// @notice Chainlink feed address\n address feed;\n /// @notice Price expiration period of this asset\n uint256 maxStalePeriod;\n }\n\n /// @notice Set this as asset address for native token on each chain.\n /// This is the underlying address for vBNB on BNB chain or an underlying asset for a native market on any chain.\n address public constant NATIVE_TOKEN_ADDR = 0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB;\n\n /// @notice Manually set an override price, useful under extenuating conditions such as price feed failure\n mapping(address => uint256) public prices;\n\n /// @notice Token config by assets\n mapping(address => TokenConfig) public tokenConfigs;\n\n /// @notice Emit when a price is manually set\n event PricePosted(address indexed asset, uint256 previousPriceMantissa, uint256 newPriceMantissa);\n\n /// @notice Emit when a token config is added\n event TokenConfigAdded(address indexed asset, address feed, uint256 maxStalePeriod);\n\n modifier notNullAddress(address someone) {\n if (someone == address(0)) revert(\"can't be zero address\");\n _;\n }\n\n /// @notice Constructor for the implementation contract.\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n\n /**\n * @notice Initializes the owner of the contract\n * @param accessControlManager_ Address of the access control manager contract\n */\n function initialize(address accessControlManager_) external initializer {\n __AccessControlled_init(accessControlManager_);\n }\n\n /**\n * @notice Manually set the price of a given asset\n * @param asset Asset address\n * @param price Asset price in 18 decimals\n * @custom:access Only Governance\n * @custom:event Emits PricePosted event on successfully setup of asset price\n */\n function setDirectPrice(address asset, uint256 price) external notNullAddress(asset) {\n _checkAccessAllowed(\"setDirectPrice(address,uint256)\");\n\n uint256 previousPriceMantissa = prices[asset];\n prices[asset] = price;\n emit PricePosted(asset, previousPriceMantissa, price);\n }\n\n /**\n * @notice Add multiple token configs at the same time\n * @param tokenConfigs_ config array\n * @custom:access Only Governance\n * @custom:error Zero length error thrown, if length of the array in parameter is 0\n */\n function setTokenConfigs(TokenConfig[] memory tokenConfigs_) external {\n if (tokenConfigs_.length == 0) revert(\"length can't be 0\");\n uint256 numTokenConfigs = tokenConfigs_.length;\n for (uint256 i; i < numTokenConfigs; ++i) {\n setTokenConfig(tokenConfigs_[i]);\n }\n }\n\n /**\n * @notice Add single token config. asset & feed cannot be null addresses and maxStalePeriod must be positive\n * @param tokenConfig Token config struct\n * @custom:access Only Governance\n * @custom:error NotNullAddress error is thrown if asset address is null\n * @custom:error NotNullAddress error is thrown if token feed address is null\n * @custom:error Range error is thrown if maxStale period of token is not greater than zero\n * @custom:event Emits TokenConfigAdded event on successfully setting of the token config\n */\n function setTokenConfig(\n TokenConfig memory tokenConfig\n ) public notNullAddress(tokenConfig.asset) notNullAddress(tokenConfig.feed) {\n _checkAccessAllowed(\"setTokenConfig(TokenConfig)\");\n\n if (tokenConfig.maxStalePeriod == 0) revert(\"stale period can't be zero\");\n tokenConfigs[tokenConfig.asset] = tokenConfig;\n emit TokenConfigAdded(tokenConfig.asset, tokenConfig.feed, tokenConfig.maxStalePeriod);\n }\n\n /**\n * @notice Gets the price of a asset from the chainlink oracle\n * @param asset Address of the asset\n * @return Price in USD from Chainlink or a manually set price for the asset\n */\n function getPrice(address asset) public view virtual returns (uint256) {\n uint256 decimals;\n\n if (asset == NATIVE_TOKEN_ADDR) {\n decimals = 18;\n } else {\n IERC20Metadata token = IERC20Metadata(asset);\n decimals = token.decimals();\n }\n\n return _getPriceInternal(asset, decimals);\n }\n\n /**\n * @notice Gets the Chainlink price for a given asset\n * @param asset address of the asset\n * @param decimals decimals of the asset\n * @return price Asset price in USD or a manually set price of the asset\n */\n function _getPriceInternal(address asset, uint256 decimals) internal view returns (uint256 price) {\n uint256 tokenPrice = prices[asset];\n if (tokenPrice != 0) {\n price = tokenPrice;\n } else {\n price = _getChainlinkPrice(asset);\n }\n\n uint256 decimalDelta = 18 - decimals;\n return price * (10 ** decimalDelta);\n }\n\n /**\n * @notice Get the Chainlink price for an asset, revert if token config doesn't exist\n * @dev The precision of the price feed is used to ensure the returned price has 18 decimals of precision\n * @param asset Address of the asset\n * @return price Price in USD, with 18 decimals of precision\n * @custom:error NotNullAddress error is thrown if the asset address is null\n * @custom:error Price error is thrown if the Chainlink price of asset is not greater than zero\n * @custom:error Timing error is thrown if current timestamp is less than the last updatedAt timestamp\n * @custom:error Timing error is thrown if time difference between current time and last updated time\n * is greater than maxStalePeriod\n */\n function _getChainlinkPrice(\n address asset\n ) private view notNullAddress(tokenConfigs[asset].asset) returns (uint256) {\n TokenConfig memory tokenConfig = tokenConfigs[asset];\n AggregatorV3Interface feed = AggregatorV3Interface(tokenConfig.feed);\n\n // note: maxStalePeriod cannot be 0\n uint256 maxStalePeriod = tokenConfig.maxStalePeriod;\n\n // Chainlink USD-denominated feeds store answers at 8 decimals, mostly\n uint256 decimalDelta = 18 - feed.decimals();\n\n (, int256 answer, , uint256 updatedAt, ) = feed.latestRoundData();\n if (answer <= 0) revert(\"chainlink price must be positive\");\n if (block.timestamp < updatedAt) revert(\"updatedAt exceeds block time\");\n\n uint256 deltaTime;\n unchecked {\n deltaTime = block.timestamp - updatedAt;\n }\n\n if (deltaTime > maxStalePeriod) revert(\"chainlink price expired\");\n\n return uint256(answer) * (10 ** decimalDelta);\n }\n}\n" + }, + "contracts/oracles/common/CorrelatedTokenOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { OracleInterface, ResilientOracleInterface } from \"../../interfaces/OracleInterface.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\nimport { SECONDS_PER_YEAR } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\nimport { IERC20Metadata } from \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\";\nimport { ICappedOracle } from \"../../interfaces/ICappedOracle.sol\";\nimport { IAccessControlManagerV8 } from \"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol\";\n\n/**\n * @title CorrelatedTokenOracle\n * @notice This oracle fetches the price of a token that is correlated to another token.\n */\nabstract contract CorrelatedTokenOracle is OracleInterface, ICappedOracle {\n /// @notice Address of the correlated token\n address public immutable CORRELATED_TOKEN;\n\n /// @notice Address of the underlying token\n address public immutable UNDERLYING_TOKEN;\n\n /// @notice Address of Resilient Oracle\n ResilientOracleInterface public immutable RESILIENT_ORACLE;\n\n /// @notice Address of the AccessControlManager contract\n IAccessControlManagerV8 public immutable ACCESS_CONTROL_MANAGER;\n\n //// @notice Growth rate percentage in seconds. Ex: 1e18 is 100%\n uint256 public growthRatePerSecond;\n\n /// @notice Snapshot update interval\n uint256 public snapshotInterval;\n\n /// @notice Last stored snapshot maximum exchange rate\n uint256 public snapshotMaxExchangeRate;\n\n /// @notice Last stored snapshot timestamp\n uint256 public snapshotTimestamp;\n\n /// @notice Gap to add when updating the snapshot\n uint256 public snapshotGap;\n\n /// @notice Emitted when the snapshot is updated\n event SnapshotUpdated(uint256 indexed maxExchangeRate, uint256 indexed timestamp);\n\n /// @notice Emitted when the growth rate is updated\n event GrowthRateUpdated(\n uint256 indexed oldGrowthRatePerSecond,\n uint256 indexed newGrowthRatePerSecond,\n uint256 indexed oldSnapshotInterval,\n uint256 newSnapshotInterval\n );\n\n /// @notice Emitted when the snapshot gap is updated\n event SnapshotGapUpdated(uint256 indexed oldSnapshotGap, uint256 indexed newSnapshotGap);\n\n /// @notice Thrown if the token address is invalid\n error InvalidTokenAddress();\n\n /// @notice Thrown if the growth rate is invalid\n error InvalidGrowthRate();\n\n /// @notice Thrown if the initial snapshot is invalid\n error InvalidInitialSnapshot();\n\n /// @notice Thrown if the max snapshot exchange rate is invalid\n error InvalidSnapshotMaxExchangeRate();\n\n /// @notice @notice Thrown when the action is prohibited by AccessControlManager\n error Unauthorized(address sender, address calledContract, string methodSignature);\n\n /**\n * @notice Constructor for the implementation contract.\n * @custom:error InvalidGrowthRate error is thrown if the growth rate is invalid\n * @custom:error InvalidInitialSnapshot error is thrown if the initial snapshot values are invalid\n */\n constructor(\n address _correlatedToken,\n address _underlyingToken,\n address _resilientOracle,\n uint256 _annualGrowthRate,\n uint256 _snapshotInterval,\n uint256 _initialSnapshotMaxExchangeRate,\n uint256 _initialSnapshotTimestamp,\n address _accessControlManager,\n uint256 _snapshotGap\n ) {\n growthRatePerSecond = _annualGrowthRate / SECONDS_PER_YEAR;\n\n if ((growthRatePerSecond == 0 && _snapshotInterval > 0) || (growthRatePerSecond > 0 && _snapshotInterval == 0))\n revert InvalidGrowthRate();\n\n if ((_initialSnapshotMaxExchangeRate == 0 || _initialSnapshotTimestamp == 0) && _snapshotInterval > 0) {\n revert InvalidInitialSnapshot();\n }\n\n ensureNonzeroAddress(_correlatedToken);\n ensureNonzeroAddress(_underlyingToken);\n ensureNonzeroAddress(_resilientOracle);\n ensureNonzeroAddress(_accessControlManager);\n\n CORRELATED_TOKEN = _correlatedToken;\n UNDERLYING_TOKEN = _underlyingToken;\n RESILIENT_ORACLE = ResilientOracleInterface(_resilientOracle);\n snapshotInterval = _snapshotInterval;\n\n snapshotMaxExchangeRate = _initialSnapshotMaxExchangeRate;\n snapshotTimestamp = _initialSnapshotTimestamp;\n snapshotGap = _snapshotGap;\n\n ACCESS_CONTROL_MANAGER = IAccessControlManagerV8(_accessControlManager);\n }\n\n /**\n * @notice Directly sets the snapshot exchange rate and timestamp\n * @param _snapshotMaxExchangeRate The exchange rate to set\n * @param _snapshotTimestamp The timestamp to set\n * @custom:event Emits SnapshotUpdated event on successful update of the snapshot\n */\n function setSnapshot(uint256 _snapshotMaxExchangeRate, uint256 _snapshotTimestamp) external {\n _checkAccessAllowed(\"setSnapshot(uint256,uint256)\");\n\n snapshotMaxExchangeRate = _snapshotMaxExchangeRate;\n snapshotTimestamp = _snapshotTimestamp;\n\n emit SnapshotUpdated(snapshotMaxExchangeRate, snapshotTimestamp);\n }\n\n /**\n * @notice Sets the growth rate and snapshot interval\n * @param _annualGrowthRate The annual growth rate to set\n * @param _snapshotInterval The snapshot interval to set\n * @custom:error InvalidGrowthRate error is thrown if the growth rate is invalid\n * @custom:event Emits GrowthRateUpdated event on successful update of the growth rate\n */\n function setGrowthRate(uint256 _annualGrowthRate, uint256 _snapshotInterval) external {\n _checkAccessAllowed(\"setGrowthRate(uint256,uint256)\");\n uint256 oldGrowthRatePerSecond = growthRatePerSecond;\n\n growthRatePerSecond = _annualGrowthRate / SECONDS_PER_YEAR;\n\n if ((growthRatePerSecond == 0 && _snapshotInterval > 0) || (growthRatePerSecond > 0 && _snapshotInterval == 0))\n revert InvalidGrowthRate();\n\n emit GrowthRateUpdated(oldGrowthRatePerSecond, growthRatePerSecond, snapshotInterval, _snapshotInterval);\n\n snapshotInterval = _snapshotInterval;\n }\n\n /**\n * @notice Sets the snapshot gap\n * @param _snapshotGap The snapshot gap to set\n * @custom:event Emits SnapshotGapUpdated event on successful update of the snapshot gap\n */\n function setSnapshotGap(uint256 _snapshotGap) external {\n _checkAccessAllowed(\"setSnapshotGap(uint256)\");\n\n emit SnapshotGapUpdated(snapshotGap, _snapshotGap);\n\n snapshotGap = _snapshotGap;\n }\n\n /**\n * @notice Returns if the price is capped\n * @return isCapped Boolean indicating if the price is capped\n */\n function isCapped() external view virtual returns (bool) {\n if (snapshotInterval == 0) {\n return false;\n }\n\n uint256 maxAllowedExchangeRate = getMaxAllowedExchangeRate();\n if (maxAllowedExchangeRate == 0) {\n return false;\n }\n\n uint256 exchangeRate = getUnderlyingAmount();\n\n return exchangeRate > maxAllowedExchangeRate;\n }\n\n /**\n * @notice Updates the snapshot price and timestamp\n * @custom:event Emits SnapshotUpdated event on successful update of the snapshot\n * @custom:error InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero\n */\n function updateSnapshot() public override {\n if (block.timestamp - snapshotTimestamp < snapshotInterval || snapshotInterval == 0) return;\n\n uint256 exchangeRate = getUnderlyingAmount();\n uint256 maxAllowedExchangeRate = getMaxAllowedExchangeRate();\n\n snapshotMaxExchangeRate =\n (exchangeRate > maxAllowedExchangeRate ? maxAllowedExchangeRate : exchangeRate) +\n snapshotGap;\n snapshotTimestamp = block.timestamp;\n\n if (snapshotMaxExchangeRate == 0) revert InvalidSnapshotMaxExchangeRate();\n\n RESILIENT_ORACLE.updateAssetPrice(UNDERLYING_TOKEN);\n emit SnapshotUpdated(snapshotMaxExchangeRate, snapshotTimestamp);\n }\n\n /**\n * @notice Fetches the price of the token\n * @param asset Address of the token\n * @return price The price of the token in scaled decimal places. It can be capped\n * to a maximum value taking into account the growth rate\n * @custom:error InvalidTokenAddress error is thrown if the token address is invalid\n */\n function getPrice(address asset) public view override returns (uint256) {\n if (asset != CORRELATED_TOKEN) revert InvalidTokenAddress();\n\n uint256 exchangeRate = getUnderlyingAmount();\n\n if (snapshotInterval == 0) {\n return _calculatePrice(exchangeRate);\n }\n\n uint256 maxAllowedExchangeRate = getMaxAllowedExchangeRate();\n\n uint256 finalExchangeRate = (exchangeRate > maxAllowedExchangeRate && maxAllowedExchangeRate != 0)\n ? maxAllowedExchangeRate\n : exchangeRate;\n\n return _calculatePrice(finalExchangeRate);\n }\n\n /**\n * @notice Gets the maximum allowed exchange rate for token\n * @return maxExchangeRate Maximum allowed exchange rate\n */\n function getMaxAllowedExchangeRate() public view returns (uint256) {\n uint256 timeElapsed = block.timestamp - snapshotTimestamp;\n uint256 maxExchangeRate = snapshotMaxExchangeRate +\n (snapshotMaxExchangeRate * growthRatePerSecond * timeElapsed) /\n 1e18;\n return maxExchangeRate;\n }\n\n /**\n * @notice Gets the underlying amount for correlated token\n * @return underlyingAmount Amount of underlying token\n */\n function getUnderlyingAmount() public view virtual returns (uint256);\n\n /**\n * @notice Fetches price of the token based on an underlying exchange rate\n * @param exchangeRate The underlying exchange rate to use\n * @return price The price of the token in scaled decimal places\n */\n function _calculatePrice(uint256 exchangeRate) internal view returns (uint256) {\n uint256 underlyingUSDPrice = RESILIENT_ORACLE.getPrice(UNDERLYING_TOKEN);\n\n IERC20Metadata token = IERC20Metadata(CORRELATED_TOKEN);\n uint256 decimals = token.decimals();\n\n return (exchangeRate * underlyingUSDPrice) / (10 ** decimals);\n }\n\n /**\n * @notice Reverts if the call is not allowed by AccessControlManager\n * @param signature Method signature\n * @custom:error Unauthorized error is thrown if the call is not allowed\n */\n function _checkAccessAllowed(string memory signature) internal view {\n bool isAllowedToCall = ACCESS_CONTROL_MANAGER.isAllowedToCall(msg.sender, signature);\n\n if (!isAllowedToCall) {\n revert Unauthorized(msg.sender, address(this), signature);\n }\n }\n}\n" + }, + "contracts/oracles/ERC4626Oracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { IERC4626 } from \"../interfaces/IERC4626.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\n\n/**\n * @title ERC4626Oracle\n * @author Venus\n * @notice This oracle fetches the price of ERC4626 tokens\n */\ncontract ERC4626Oracle is CorrelatedTokenOracle {\n uint256 public immutable ONE_CORRELATED_TOKEN;\n\n /// @notice Constructor for the implementation contract.\n constructor(\n address correlatedToken,\n address underlyingToken,\n address resilientOracle,\n uint256 annualGrowthRate,\n uint256 _snapshotInterval,\n uint256 initialSnapshotMaxExchangeRate,\n uint256 initialSnapshotTimestamp,\n address accessControlManager,\n uint256 _snapshotGap\n )\n CorrelatedTokenOracle(\n correlatedToken,\n underlyingToken,\n resilientOracle,\n annualGrowthRate,\n _snapshotInterval,\n initialSnapshotMaxExchangeRate,\n initialSnapshotTimestamp,\n accessControlManager,\n _snapshotGap\n )\n {\n ONE_CORRELATED_TOKEN = 10 ** IERC4626(correlatedToken).decimals();\n }\n\n /**\n * @notice Fetches the amount of underlying token for 1 correlated token\n * @return amount The amount of underlying token for correlated token\n */\n function getUnderlyingAmount() public view override returns (uint256) {\n return IERC4626(CORRELATED_TOKEN).convertToAssets(ONE_CORRELATED_TOKEN);\n }\n}\n" + }, + "contracts/oracles/EtherfiAccountantOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\nimport { IAccountant } from \"../interfaces/IAccountant.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\n\n/**\n * @title EtherfiAccountantOracle\n * @author Venus\n * @notice This oracle fetches the price of any Ether.fi asset that uses\n * Accountant contracts to derive the underlying price\n */\ncontract EtherfiAccountantOracle is CorrelatedTokenOracle {\n /// @notice Address of Accountant\n IAccountant public immutable ACCOUNTANT;\n\n /// @notice Constructor for the implementation contract.\n constructor(\n address accountant,\n address correlatedToken,\n address underlyingToken,\n address resilientOracle,\n uint256 annualGrowthRate,\n uint256 _snapshotInterval,\n uint256 initialSnapshotMaxExchangeRate,\n uint256 initialSnapshotTimestamp,\n address accessControlManager,\n uint256 _snapshotGap\n )\n CorrelatedTokenOracle(\n correlatedToken,\n underlyingToken,\n resilientOracle,\n annualGrowthRate,\n _snapshotInterval,\n initialSnapshotMaxExchangeRate,\n initialSnapshotTimestamp,\n accessControlManager,\n _snapshotGap\n )\n {\n ensureNonzeroAddress(accountant);\n ACCOUNTANT = IAccountant(accountant);\n }\n\n /**\n * @notice Fetches the conversion rate from the ACCOUNTANT contract\n * @return amount Amount of WBTC\n */\n function getUnderlyingAmount() public view override returns (uint256) {\n return ACCOUNTANT.getRateSafe();\n }\n}\n" + }, + "contracts/oracles/mocks/MockBinanceOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { OwnableUpgradeable } from \"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\";\nimport { OracleInterface } from \"../../interfaces/OracleInterface.sol\";\n\ncontract MockBinanceOracle is OwnableUpgradeable, OracleInterface {\n mapping(address => uint256) public assetPrices;\n\n constructor() {}\n\n function initialize() public initializer {}\n\n function setPrice(address asset, uint256 price) external {\n assetPrices[asset] = price;\n }\n\n function getPrice(address token) public view returns (uint256) {\n return assetPrices[token];\n }\n}\n" + }, + "contracts/oracles/mocks/MockChainlinkOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { OwnableUpgradeable } from \"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\";\nimport { OracleInterface } from \"../../interfaces/OracleInterface.sol\";\n\ncontract MockChainlinkOracle is OwnableUpgradeable, OracleInterface {\n mapping(address => uint256) public assetPrices;\n\n //set price in 6 decimal precision\n constructor() {}\n\n function initialize() public initializer {\n __Ownable_init();\n }\n\n function setPrice(address asset, uint256 price) external {\n assetPrices[asset] = price;\n }\n\n //https://compound.finance/docs/prices\n function getPrice(address token) public view returns (uint256) {\n return assetPrices[token];\n }\n}\n" + }, + "contracts/oracles/OneJumpOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\nimport { OracleInterface } from \"../interfaces/OracleInterface.sol\";\nimport { IERC20Metadata } from \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\";\n\n/**\n * @title OneJumpOracle\n * @author Venus\n * @notice This oracle fetches the price of an asset in through an intermediate asset\n */\ncontract OneJumpOracle is CorrelatedTokenOracle {\n /// @notice Address of the intermediate oracle\n OracleInterface public immutable INTERMEDIATE_ORACLE;\n\n /// @notice Constructor for the implementation contract.\n constructor(\n address correlatedToken,\n address underlyingToken,\n address resilientOracle,\n address intermediateOracle,\n uint256 annualGrowthRate,\n uint256 _snapshotInterval,\n uint256 initialSnapshotMaxExchangeRate,\n uint256 initialSnapshotTimestamp,\n address accessControlManager,\n uint256 _snapshotGap\n )\n CorrelatedTokenOracle(\n correlatedToken,\n underlyingToken,\n resilientOracle,\n annualGrowthRate,\n _snapshotInterval,\n initialSnapshotMaxExchangeRate,\n initialSnapshotTimestamp,\n accessControlManager,\n _snapshotGap\n )\n {\n ensureNonzeroAddress(intermediateOracle);\n INTERMEDIATE_ORACLE = OracleInterface(intermediateOracle);\n }\n\n /**\n * @notice Fetches the amount of the underlying token for 1 correlated token, using the intermediate oracle\n * @return amount The amount of the underlying token for 1 correlated token scaled by the underlying token decimals\n */\n function getUnderlyingAmount() public view override returns (uint256) {\n uint256 underlyingDecimals = IERC20Metadata(UNDERLYING_TOKEN).decimals();\n uint256 correlatedDecimals = IERC20Metadata(CORRELATED_TOKEN).decimals();\n\n uint256 underlyingAmount = INTERMEDIATE_ORACLE.getPrice(CORRELATED_TOKEN);\n\n return (underlyingAmount * (10 ** correlatedDecimals)) / (10 ** (36 - underlyingDecimals));\n }\n}\n" + }, + "contracts/oracles/PendleOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { IPendlePtOracle } from \"../interfaces/IPendlePtOracle.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\nimport { ensureNonzeroAddress, ensureNonzeroValue } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\nimport { IERC20Metadata } from \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\";\n\n/**\n * @title PendleOracle\n * @author Venus\n * @notice This oracle fetches the price of a pendle token\n * @dev As a base price the oracle uses either the price of the Pendle\n * market's asset (in this case PT_TO_ASSET rate should be used) or\n * the price of the Pendle market's interest bearing token (e.g. wstETH\n * for stETH; in this case PT_TO_SY rate should be used). Technically,\n * interest bearing token is different from standardized yield (SY) token,\n * but since SY is a wrapper around an interest bearing token, we can safely\n * assume the prices of the two are equal. This is not always true for asset\n * price though: using PT_TO_ASSET rate assumes that the yield token can\n * be seamlessly redeemed for the underlying asset. In reality, this might\n * not always be the case. For more details, see\n * https://docs.pendle.finance/Developers/Contracts/StandardizedYield\n */\ncontract PendleOracle is CorrelatedTokenOracle {\n struct ConstructorParams {\n /// @notice Pendle market\n address market;\n /// @notice Pendle oracle\n address ptOracle;\n /// @notice Either PT_TO_ASSET or PT_TO_SY\n RateKind rateKind;\n /// @notice Pendle PT token\n address ptToken;\n /// @notice Underlying token, can be either the market's asset or the interest bearing token\n address underlyingToken;\n /// @notice Resilient oracle to get the underlying token price from\n address resilientOracle;\n /// @notice TWAP duration to call Pendle oracle with\n uint32 twapDuration;\n /// @notice Annual growth rate of the underlying token\n uint256 annualGrowthRate;\n /// @notice Snapshot interval for the oracle\n uint256 snapshotInterval;\n /// @notice Initial exchange rate of the underlying token\n uint256 initialSnapshotMaxExchangeRate;\n /// @notice Initial timestamp of the underlying token\n uint256 initialSnapshotTimestamp;\n /// @notice Access control manager\n address accessControlManager;\n /// @notice Gap to add when updating the snapshot\n uint256 snapshotGap;\n }\n\n /// @notice Which asset to use as a base for the returned PT\n /// price. Can be either a standardized yield token (SY), in\n /// this case PT/SY price is returned, or the Pendle\n /// market's asset directly.\n enum RateKind {\n PT_TO_ASSET,\n PT_TO_SY\n }\n\n /// @notice Address of the PT oracle\n IPendlePtOracle public immutable PT_ORACLE;\n\n /// @notice Whether to use PT/SY (standardized yield token) rate\n /// or PT/market asset rate\n RateKind public immutable RATE_KIND;\n\n /// @notice Address of the market\n address public immutable MARKET;\n\n /// @notice Twap duration for the oracle\n uint32 public immutable TWAP_DURATION;\n\n /// @notice Decimals of the underlying token\n /// @dev We make an assumption that the underlying decimals will\n /// not change throughout the lifetime of the Pendle market\n uint8 public immutable UNDERLYING_DECIMALS;\n\n /// @notice Thrown if the duration is invalid\n error InvalidDuration();\n\n /**\n * @notice Constructor for the implementation contract.\n * @custom:error InvalidDuration Thrown if the duration is invalid\n */\n constructor(\n ConstructorParams memory params\n )\n CorrelatedTokenOracle(\n params.ptToken,\n params.underlyingToken,\n params.resilientOracle,\n params.annualGrowthRate,\n params.snapshotInterval,\n params.initialSnapshotMaxExchangeRate,\n params.initialSnapshotTimestamp,\n params.accessControlManager,\n params.snapshotGap\n )\n {\n ensureNonzeroAddress(params.market);\n ensureNonzeroAddress(params.ptOracle);\n ensureNonzeroValue(params.twapDuration);\n\n MARKET = params.market;\n PT_ORACLE = IPendlePtOracle(params.ptOracle);\n RATE_KIND = params.rateKind;\n TWAP_DURATION = params.twapDuration;\n UNDERLYING_DECIMALS = IERC20Metadata(UNDERLYING_TOKEN).decimals();\n\n (bool increaseCardinalityRequired, , bool oldestObservationSatisfied) = PT_ORACLE.getOracleState(\n MARKET,\n TWAP_DURATION\n );\n if (increaseCardinalityRequired || !oldestObservationSatisfied) {\n revert InvalidDuration();\n }\n }\n\n /// @notice Fetches the amount of underlying token for 1 PT\n /// @return amount The amount of underlying token (either the market's asset\n /// or the yield token) for 1 PT, adjusted for decimals such that the result\n /// has the same precision as the underlying token\n function getUnderlyingAmount() public view override returns (uint256) {\n uint256 rate;\n if (RATE_KIND == RateKind.PT_TO_SY) {\n rate = PT_ORACLE.getPtToSyRate(MARKET, TWAP_DURATION);\n } else {\n rate = PT_ORACLE.getPtToAssetRate(MARKET, TWAP_DURATION);\n }\n return ((10 ** UNDERLYING_DECIMALS) * rate) / 1e18;\n }\n}\n" + }, + "contracts/oracles/SequencerChainlinkOracle.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.25;\n\nimport { ChainlinkOracle } from \"./ChainlinkOracle.sol\";\nimport { AggregatorV3Interface } from \"@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol\";\n\n/**\n @title Sequencer Chain Link Oracle\n @notice Oracle to fetch price using chainlink oracles on L2s with sequencer\n*/\ncontract SequencerChainlinkOracle is ChainlinkOracle {\n /// @notice L2 Sequencer feed\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n AggregatorV3Interface public immutable sequencer;\n\n /// @notice L2 Sequencer grace period\n uint256 public constant GRACE_PERIOD_TIME = 3600;\n\n /**\n @notice Contract constructor\n @param _sequencer L2 sequencer\n @custom:oz-upgrades-unsafe-allow constructor\n */\n constructor(AggregatorV3Interface _sequencer) ChainlinkOracle() {\n require(address(_sequencer) != address(0), \"zero address\");\n\n sequencer = _sequencer;\n }\n\n /// @inheritdoc ChainlinkOracle\n function getPrice(address asset) public view override returns (uint) {\n if (!isSequencerActive()) revert(\"L2 sequencer unavailable\");\n return super.getPrice(asset);\n }\n\n function isSequencerActive() internal view returns (bool) {\n // answer from oracle is a variable with a value of either 1 or 0\n // 0: The sequencer is up\n // 1: The sequencer is down\n // startedAt: This timestamp indicates when the sequencer changed status\n (, int256 answer, uint256 startedAt, , ) = sequencer.latestRoundData();\n if (block.timestamp - startedAt <= GRACE_PERIOD_TIME || answer == 1) return false;\n return true;\n }\n}\n" + }, + "contracts/oracles/SFraxOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { ISFrax } from \"../interfaces/ISFrax.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\nimport { EXP_SCALE } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\n\n/**\n * @title SFraxOracle\n * @author Venus\n * @notice This oracle fetches the price of sFrax\n */\ncontract SFraxOracle is CorrelatedTokenOracle {\n /// @notice Constructor for the implementation contract.\n constructor(\n address sFrax,\n address frax,\n address resilientOracle,\n uint256 annualGrowthRate,\n uint256 _snapshotInterval,\n uint256 initialSnapshotMaxExchangeRate,\n uint256 initialSnapshotTimestamp,\n address accessControlManager,\n uint256 _snapshotGap\n )\n CorrelatedTokenOracle(\n sFrax,\n frax,\n resilientOracle,\n annualGrowthRate,\n _snapshotInterval,\n initialSnapshotMaxExchangeRate,\n initialSnapshotTimestamp,\n accessControlManager,\n _snapshotGap\n )\n {}\n\n /**\n * @notice Fetches the amount of FRAX for 1 sFrax\n * @return amount The amount of FRAX for sFrax\n */\n function getUnderlyingAmount() public view override returns (uint256) {\n return ISFrax(CORRELATED_TOKEN).convertToAssets(EXP_SCALE);\n }\n}\n" + }, + "contracts/oracles/SFrxETHOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { ISfrxEthFraxOracle } from \"../interfaces/ISfrxEthFraxOracle.sol\";\nimport { ensureNonzeroAddress, ensureNonzeroValue } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\nimport { EXP_SCALE } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\nimport { AccessControlledV8 } from \"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol\";\nimport { OracleInterface } from \"../interfaces/OracleInterface.sol\";\n\n/**\n * @title SFrxETHOracle\n * @author Venus\n * @notice This oracle fetches the price of sfrxETH\n */\ncontract SFrxETHOracle is AccessControlledV8, OracleInterface {\n /// @notice Address of SfrxEthFraxOracle\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n ISfrxEthFraxOracle public immutable SFRXETH_FRAX_ORACLE;\n\n /// @notice Address of sfrxETH\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n address public immutable SFRXETH;\n\n /// @notice Maximum allowed price difference\n uint256 public maxAllowedPriceDifference;\n\n /// @notice Emits when the maximum allowed price difference is updated\n event MaxAllowedPriceDifferenceUpdated(uint256 oldMaxAllowedPriceDifference, uint256 newMaxAllowedPriceDifference);\n\n /// @notice Thrown if the price data is invalid\n error BadPriceData();\n\n /// @notice Thrown if the price difference exceeds the allowed limit\n error PriceDifferenceExceeded();\n\n /// @notice Thrown if the token address is invalid\n error InvalidTokenAddress();\n\n /// @notice Constructor for the implementation contract.\n /// @custom:oz-upgrades-unsafe-allow constructor\n /// @custom:error ZeroAddressNotAllowed is thrown when `_sfrxEthFraxOracle` or `_sfrxETH` are the zero address\n constructor(address _sfrxEthFraxOracle, address _sfrxETH) {\n ensureNonzeroAddress(_sfrxEthFraxOracle);\n ensureNonzeroAddress(_sfrxETH);\n\n SFRXETH_FRAX_ORACLE = ISfrxEthFraxOracle(_sfrxEthFraxOracle);\n SFRXETH = _sfrxETH;\n\n _disableInitializers();\n }\n\n /**\n * @notice Sets the contracts required to fetch prices\n * @param _acm Address of the access control manager contract\n * @param _maxAllowedPriceDifference Maximum allowed price difference\n * @custom:error ZeroValueNotAllowed is thrown if `_maxAllowedPriceDifference` is zero\n */\n function initialize(address _acm, uint256 _maxAllowedPriceDifference) external initializer {\n ensureNonzeroValue(_maxAllowedPriceDifference);\n\n __AccessControlled_init(_acm);\n maxAllowedPriceDifference = _maxAllowedPriceDifference;\n }\n\n /**\n * @notice Sets the maximum allowed price difference\n * @param _maxAllowedPriceDifference Maximum allowed price difference\n * @custom:error ZeroValueNotAllowed is thrown if `_maxAllowedPriceDifference` is zero\n */\n function setMaxAllowedPriceDifference(uint256 _maxAllowedPriceDifference) external {\n _checkAccessAllowed(\"setMaxAllowedPriceDifference(uint256)\");\n ensureNonzeroValue(_maxAllowedPriceDifference);\n\n emit MaxAllowedPriceDifferenceUpdated(maxAllowedPriceDifference, _maxAllowedPriceDifference);\n maxAllowedPriceDifference = _maxAllowedPriceDifference;\n }\n\n /**\n * @notice Fetches the USD price of sfrxETH\n * @param asset Address of the sfrxETH token\n * @return price The price scaled by 1e18\n * @custom:error InvalidTokenAddress is thrown when the `asset` is not the sfrxETH token (`SFRXETH`)\n * @custom:error BadPriceData is thrown if the `SFRXETH_FRAX_ORACLE` oracle informs it has bad data\n * @custom:error ZeroValueNotAllowed is thrown if the prices (low or high, in USD) are zero\n * @custom:error PriceDifferenceExceeded is thrown if priceHigh/priceLow is greater than `maxAllowedPriceDifference`\n */\n function getPrice(address asset) external view returns (uint256) {\n if (asset != SFRXETH) revert InvalidTokenAddress();\n\n (bool isBadData, uint256 priceLow, uint256 priceHigh) = SFRXETH_FRAX_ORACLE.getPrices();\n\n if (isBadData) revert BadPriceData();\n\n // calculate price in USD\n uint256 priceHighInUSD = (EXP_SCALE ** 2) / priceLow;\n uint256 priceLowInUSD = (EXP_SCALE ** 2) / priceHigh;\n\n ensureNonzeroValue(priceHighInUSD);\n ensureNonzeroValue(priceLowInUSD);\n\n // validate price difference\n uint256 difference = (priceHighInUSD * EXP_SCALE) / priceLowInUSD;\n if (difference > maxAllowedPriceDifference) revert PriceDifferenceExceeded();\n\n // calculate and return average price\n return (priceHighInUSD + priceLowInUSD) / 2;\n }\n}\n" + }, + "contracts/oracles/SlisBNBOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { ISynclubStakeManager } from \"../interfaces/ISynclubStakeManager.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\nimport { EXP_SCALE } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\n\n/**\n * @title SlisBNBOracle\n * @author Venus\n * @notice This oracle fetches the price of slisBNB asset\n */\ncontract SlisBNBOracle is CorrelatedTokenOracle {\n /// @notice This is used as token address of BNB on BSC\n address public constant NATIVE_TOKEN_ADDR = 0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB;\n\n /// @notice Address of StakeManager\n ISynclubStakeManager public immutable STAKE_MANAGER;\n\n /// @notice Constructor for the implementation contract.\n constructor(\n address stakeManager,\n address slisBNB,\n address resilientOracle,\n uint256 annualGrowthRate,\n uint256 _snapshotInterval,\n uint256 initialSnapshotMaxExchangeRate,\n uint256 initialSnapshotTimestamp,\n address accessControlManager,\n uint256 _snapshotGap\n )\n CorrelatedTokenOracle(\n slisBNB,\n NATIVE_TOKEN_ADDR,\n resilientOracle,\n annualGrowthRate,\n _snapshotInterval,\n initialSnapshotMaxExchangeRate,\n initialSnapshotTimestamp,\n accessControlManager,\n _snapshotGap\n )\n {\n ensureNonzeroAddress(stakeManager);\n STAKE_MANAGER = ISynclubStakeManager(stakeManager);\n }\n\n /**\n * @notice Fetches the amount of BNB for 1 slisBNB\n * @return amount The amount of BNB for slisBNB\n */\n function getUnderlyingAmount() public view override returns (uint256) {\n return STAKE_MANAGER.convertSnBnbToBnb(EXP_SCALE);\n }\n}\n" + }, + "contracts/oracles/StkBNBOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { IPStakePool } from \"../interfaces/IPStakePool.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\nimport { EXP_SCALE } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\n\n/**\n * @title StkBNBOracle\n * @author Venus\n * @notice This oracle fetches the price of stkBNB asset\n */\ncontract StkBNBOracle is CorrelatedTokenOracle {\n /// @notice This is used as token address of BNB on BSC\n address public constant NATIVE_TOKEN_ADDR = 0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB;\n\n /// @notice Address of StakePool\n IPStakePool public immutable STAKE_POOL;\n\n /// @notice Thrown if the pool token supply is zero\n error PoolTokenSupplyIsZero();\n\n /// @notice Constructor for the implementation contract.\n constructor(\n address stakePool,\n address stkBNB,\n address resilientOracle,\n uint256 annualGrowthRate,\n uint256 _snapshotInterval,\n uint256 initialSnapshotMaxExchangeRate,\n uint256 initialSnapshotTimestamp,\n address accessControlManager,\n uint256 _snapshotGap\n )\n CorrelatedTokenOracle(\n stkBNB,\n NATIVE_TOKEN_ADDR,\n resilientOracle,\n annualGrowthRate,\n _snapshotInterval,\n initialSnapshotMaxExchangeRate,\n initialSnapshotTimestamp,\n accessControlManager,\n _snapshotGap\n )\n {\n ensureNonzeroAddress(stakePool);\n STAKE_POOL = IPStakePool(stakePool);\n }\n\n /**\n * @notice Fetches the amount of BNB for 1 stkBNB\n * @return price The amount of BNB for stkBNB\n * @custom:error PoolTokenSupplyIsZero error is thrown if the pool token supply is zero\n */\n function getUnderlyingAmount() public view override returns (uint256) {\n IPStakePool.Data memory exchangeRateData = STAKE_POOL.exchangeRate();\n\n if (exchangeRateData.poolTokenSupply == 0) {\n revert PoolTokenSupplyIsZero();\n }\n\n return (exchangeRateData.totalWei * EXP_SCALE) / exchangeRateData.poolTokenSupply;\n }\n}\n" + }, + "contracts/oracles/WBETHOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { IWBETH } from \"../interfaces/IWBETH.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\n\n/**\n * @title WBETHOracle\n * @author Venus\n * @notice This oracle fetches the price of wBETH asset\n */\ncontract WBETHOracle is CorrelatedTokenOracle {\n /// @notice Constructor for the implementation contract.\n constructor(\n address wbeth,\n address eth,\n address resilientOracle,\n uint256 annualGrowthRate,\n uint256 _snapshotInterval,\n uint256 initialSnapshotMaxExchangeRate,\n uint256 initialSnapshotTimestamp,\n address accessControlManager,\n uint256 _snapshotGap\n )\n CorrelatedTokenOracle(\n wbeth,\n eth,\n resilientOracle,\n annualGrowthRate,\n _snapshotInterval,\n initialSnapshotMaxExchangeRate,\n initialSnapshotTimestamp,\n accessControlManager,\n _snapshotGap\n )\n {}\n\n /**\n * @notice Fetches the amount of ETH for 1 wBETH\n * @return amount The amount of ETH for wBETH\n */\n function getUnderlyingAmount() public view override returns (uint256) {\n return IWBETH(CORRELATED_TOKEN).exchangeRate();\n }\n}\n" + }, + "contracts/oracles/WeETHAccountantOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\nimport { IAccountant } from \"../interfaces/IAccountant.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\n\n/**\n * @title WeETHAccountantOracle\n * @author Venus\n * @notice This oracle fetches the price of Ether.fi tokens based on an `Accountant` contract (i.e. weETHs and weETHk)\n */\ncontract WeETHAccountantOracle is CorrelatedTokenOracle {\n /// @notice Address of Accountant\n IAccountant public immutable ACCOUNTANT;\n\n /// @notice Constructor for the implementation contract.\n constructor(\n address accountant,\n address weethLRT,\n address weth,\n address resilientOracle,\n uint256 annualGrowthRate,\n uint256 _snapshotInterval,\n uint256 initialSnapshotMaxExchangeRate,\n uint256 initialSnapshotTimestamp,\n address accessControlManager,\n uint256 _snapshotGap\n )\n CorrelatedTokenOracle(\n weethLRT,\n weth,\n resilientOracle,\n annualGrowthRate,\n _snapshotInterval,\n initialSnapshotMaxExchangeRate,\n initialSnapshotTimestamp,\n accessControlManager,\n _snapshotGap\n )\n {\n ensureNonzeroAddress(accountant);\n ACCOUNTANT = IAccountant(accountant);\n }\n\n /**\n * @notice Gets the WETH for 1 weETH LRT\n * @return amount Amount of WETH\n */\n function getUnderlyingAmount() public view override returns (uint256) {\n return ACCOUNTANT.getRateSafe();\n }\n}\n" + }, + "contracts/oracles/WeETHOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\nimport { IEtherFiLiquidityPool } from \"../interfaces/IEtherFiLiquidityPool.sol\";\nimport { EXP_SCALE } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\n\n/**\n * @title WeETHOracle\n * @author Venus\n * @notice This oracle fetches the price of weETH\n */\ncontract WeETHOracle is CorrelatedTokenOracle {\n /// @notice Address of Liqiudity pool\n IEtherFiLiquidityPool public immutable LIQUIDITY_POOL;\n\n /// @notice Constructor for the implementation contract.\n constructor(\n address liquidityPool,\n address weETH,\n address eETH,\n address resilientOracle,\n uint256 annualGrowthRate,\n uint256 _snapshotInterval,\n uint256 initialSnapshotMaxExchangeRate,\n uint256 initialSnapshotTimestamp,\n address accessControlManager,\n uint256 _snapshotGap\n )\n CorrelatedTokenOracle(\n weETH,\n eETH,\n resilientOracle,\n annualGrowthRate,\n _snapshotInterval,\n initialSnapshotMaxExchangeRate,\n initialSnapshotTimestamp,\n accessControlManager,\n _snapshotGap\n )\n {\n ensureNonzeroAddress(liquidityPool);\n LIQUIDITY_POOL = IEtherFiLiquidityPool(liquidityPool);\n }\n\n /**\n * @notice Gets the eETH for 1 weETH\n * @return amount Amount of eETH\n */\n function getUnderlyingAmount() public view override returns (uint256) {\n return LIQUIDITY_POOL.amountForShare(EXP_SCALE);\n }\n}\n" + }, + "contracts/oracles/WstETHOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { OracleInterface } from \"../interfaces/OracleInterface.sol\";\nimport { IStETH } from \"../interfaces/IStETH.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\nimport { EXP_SCALE } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\n\n/**\n * @title WstETHOracle\n * @author Venus\n * @notice Depending on the equivalence flag price is either based on assumption that 1 stETH = 1 ETH\n * or the price of stETH/USD (secondary market price) is obtained from the oracle.\n */\ncontract WstETHOracle is OracleInterface {\n /// @notice A flag assuming 1:1 price equivalence between stETH/ETH\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n bool public immutable ASSUME_STETH_ETH_EQUIVALENCE;\n\n /// @notice Address of stETH\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n IStETH public immutable STETH;\n\n /// @notice Address of wstETH\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n address public immutable WSTETH_ADDRESS;\n\n /// @notice Address of WETH\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n address public immutable WETH_ADDRESS;\n\n /// @notice Address of Resilient Oracle\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n OracleInterface public immutable RESILIENT_ORACLE;\n\n /// @notice Constructor for the implementation contract.\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor(\n address wstETHAddress,\n address wETHAddress,\n address stETHAddress,\n address resilientOracleAddress,\n bool assumeEquivalence\n ) {\n ensureNonzeroAddress(wstETHAddress);\n ensureNonzeroAddress(wETHAddress);\n ensureNonzeroAddress(stETHAddress);\n ensureNonzeroAddress(resilientOracleAddress);\n WSTETH_ADDRESS = wstETHAddress;\n WETH_ADDRESS = wETHAddress;\n STETH = IStETH(stETHAddress);\n RESILIENT_ORACLE = OracleInterface(resilientOracleAddress);\n ASSUME_STETH_ETH_EQUIVALENCE = assumeEquivalence;\n }\n\n /**\n * @notice Gets the USD price of wstETH asset\n * @dev Depending on the equivalence flag price is either based on assumption that 1 stETH = 1 ETH\n * or the price of stETH/USD (secondary market price) is obtained from the oracle\n * @param asset Address of wstETH\n * @return wstETH Price in USD scaled by 1e18\n */\n function getPrice(address asset) public view returns (uint256) {\n if (asset != WSTETH_ADDRESS) revert(\"wrong wstETH address\");\n\n // get stETH amount for 1 wstETH scaled by 1e18\n uint256 stETHAmount = STETH.getPooledEthByShares(1 ether);\n\n // price is scaled 1e18 (oracle returns 36 - asset decimal scale)\n uint256 stETHUSDPrice = RESILIENT_ORACLE.getPrice(ASSUME_STETH_ETH_EQUIVALENCE ? WETH_ADDRESS : address(STETH));\n\n // stETHAmount (for 1 wstETH) * stETHUSDPrice / 1e18\n return (stETHAmount * stETHUSDPrice) / EXP_SCALE;\n }\n}\n" + }, + "contracts/oracles/WstETHOracleV2.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { IStETH } from \"../interfaces/IStETH.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\nimport { EXP_SCALE } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\n\n/**\n * @title WstETHOracleV2\n * @author Venus\n * @notice This oracle fetches the price of wstETH\n */\ncontract WstETHOracleV2 is CorrelatedTokenOracle {\n /// @notice Address of stETH\n IStETH public immutable STETH;\n\n /// @notice Constructor for the implementation contract.\n /// @dev The underlyingToken must be correlated so that 1 underlyingToken is equal to 1 stETH, because\n /// getUnderlyingAmount() implicitly assumes that\n constructor(\n address stETH,\n address wstETH,\n address underlyingToken,\n address resilientOracle,\n uint256 annualGrowthRate,\n uint256 _snapshotInterval,\n uint256 initialSnapshotMaxExchangeRate,\n uint256 initialSnapshotTimestamp,\n address accessControlManager,\n uint256 _snapshotGap\n )\n CorrelatedTokenOracle(\n wstETH,\n underlyingToken,\n resilientOracle,\n annualGrowthRate,\n _snapshotInterval,\n initialSnapshotMaxExchangeRate,\n initialSnapshotTimestamp,\n accessControlManager,\n _snapshotGap\n )\n {\n ensureNonzeroAddress(stETH);\n STETH = IStETH(stETH);\n }\n\n /**\n * @notice Gets the amount of underlyingToken for 1 wstETH, assuming that 1 underlyingToken is equivalent to 1 stETH\n * @return amount Amount of underlyingToken\n */\n function getUnderlyingAmount() public view override returns (uint256) {\n return STETH.getPooledEthByShares(EXP_SCALE);\n }\n}\n" + }, + "contracts/oracles/ZkETHOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { IZkETH } from \"../interfaces/IZkETH.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\n\n/**\n * @title ZkETHOracle\n * @author Venus\n * @notice This oracle fetches the price of zkETH\n */\ncontract ZkETHOracle is CorrelatedTokenOracle {\n /// @notice Constructor for the implementation contract.\n constructor(\n address zkETH,\n address rzkETH,\n address resilientOracle,\n uint256 annualGrowthRate,\n uint256 _snapshotInterval,\n uint256 initialSnapshotMaxExchangeRate,\n uint256 initialSnapshotTimestamp,\n address accessControlManager,\n uint256 _snapshotGap\n )\n CorrelatedTokenOracle(\n zkETH,\n rzkETH,\n resilientOracle,\n annualGrowthRate,\n _snapshotInterval,\n initialSnapshotMaxExchangeRate,\n initialSnapshotTimestamp,\n accessControlManager,\n _snapshotGap\n )\n {}\n\n /**\n * @notice Gets the amount of rzkETH for 1 zkETH\n * @return amount Amount of rzkETH\n */\n function getUnderlyingAmount() public view override returns (uint256) {\n return IZkETH(CORRELATED_TOKEN).LSTPerToken();\n }\n}\n" + }, + "contracts/ReferenceOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\n// SPDX-FileCopyrightText: 2025 Venus\npragma solidity 0.8.25;\n\nimport { Ownable2StepUpgradeable } from \"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\nimport { ResilientOracleInterface, OracleInterface } from \"./interfaces/OracleInterface.sol\";\n\n/**\n * @title ReferenceOracle\n * @author Venus\n * @notice Reference oracle is the oracle that is not used for production but required for\n * price monitoring. This oracle contains some extra configurations for assets required to\n * compute reference prices of their derivative assets (OneJump, ERC4626, Pendle, etc.)\n */\ncontract ReferenceOracle is Ownable2StepUpgradeable, OracleInterface {\n struct ExternalPrice {\n /// @notice asset address\n address asset;\n /// @notice price of the asset from an external source\n uint256 price;\n }\n\n /// @notice Slot to temporarily store price information from external sources\n /// like CMC/Coingecko, useful to compute prices of derivative assets based on\n /// prices of the base assets with no on chain price information\n bytes32 public constant PRICES_SLOT = keccak256(abi.encode(\"venus-protocol/oracle/ReferenceOracle/prices\"));\n\n /// @notice Resilient oracle address\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n ResilientOracleInterface public immutable RESILIENT_ORACLE;\n\n /// @notice Oracle configuration for assets\n mapping(address => OracleInterface) public oracles;\n\n /// @notice Event emitted when an oracle is set\n event OracleConfigured(address indexed asset, address indexed oracle);\n\n /**\n * @notice Constructor for the implementation contract. Sets immutable variables.\n * @param resilientOracle Resilient oracle address\n * @custom:error ZeroAddressNotAllowed is thrown if resilient oracle address is null\n * @custom:oz-upgrades-unsafe-allow constructor\n */\n constructor(ResilientOracleInterface resilientOracle) {\n ensureNonzeroAddress(address(resilientOracle));\n RESILIENT_ORACLE = resilientOracle;\n _disableInitializers();\n }\n\n /**\n * @notice Initializes the contract admin\n */\n function initialize() external initializer {\n __Ownable2Step_init();\n }\n\n /**\n * @notice Sets an oracle to use for a specific asset\n * @dev The production resilientOracle will be used if zero address is passed\n * @param asset Asset address\n * @param oracle Oracle address\n * @custom:access Only owner\n * @custom:error ZeroAddressNotAllowed is thrown if asset address is null\n * @custom:event Emits OracleConfigured event\n */\n function setOracle(address asset, OracleInterface oracle) external onlyOwner {\n ensureNonzeroAddress(asset);\n oracles[asset] = OracleInterface(oracle);\n emit OracleConfigured(asset, address(oracle));\n }\n\n /**\n * @notice Gets price of the asset assuming other assets have the defined price\n * @param asset asset address\n * @param externalPrices an array of prices for other assets\n * @return USD price in scaled decimal places\n */\n function getPriceAssuming(address asset, ExternalPrice[] memory externalPrices) external returns (uint256) {\n uint256 externalPricesCount = externalPrices.length;\n for (uint256 i = 0; i < externalPricesCount; ++i) {\n _storeExternalPrice(externalPrices[i].asset, externalPrices[i].price);\n }\n return _getPrice(asset);\n }\n\n /**\n * @notice Gets price of the asset\n * @param asset asset address\n * @return USD price in scaled decimal places\n */\n function getPrice(address asset) external view override returns (uint256) {\n return _getPrice(asset);\n }\n\n function _storeExternalPrice(address asset, uint256 price) internal {\n bytes32 slot = keccak256(abi.encode(PRICES_SLOT, asset));\n // solhint-disable-next-line no-inline-assembly\n assembly (\"memory-safe\") {\n tstore(slot, price)\n }\n }\n\n function _getPrice(address asset) internal view returns (uint256) {\n uint256 externalPrice = _loadExternalPrice(asset);\n if (externalPrice != 0) {\n return externalPrice;\n }\n OracleInterface oracle = oracles[asset];\n if (oracle != OracleInterface(address(0))) {\n return oracle.getPrice(asset);\n }\n return RESILIENT_ORACLE.getPrice(asset);\n }\n\n function _loadExternalPrice(address asset) internal view returns (uint256 value) {\n bytes32 slot = keccak256(abi.encode(PRICES_SLOT, asset));\n // solhint-disable-next-line no-inline-assembly\n assembly (\"memory-safe\") {\n value := tload(slot)\n }\n }\n}\n" + }, + "contracts/ResilientOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\n// SPDX-FileCopyrightText: 2022 Venus\npragma solidity 0.8.25;\n\nimport { PausableUpgradeable } from \"@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol\";\nimport { VBep20Interface } from \"./interfaces/VBep20Interface.sol\";\nimport { OracleInterface, ResilientOracleInterface, BoundValidatorInterface } from \"./interfaces/OracleInterface.sol\";\nimport { AccessControlledV8 } from \"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol\";\nimport { ICappedOracle } from \"./interfaces/ICappedOracle.sol\";\nimport { Transient } from \"./lib/Transient.sol\";\n\n/**\n * @title ResilientOracle\n * @author Venus\n * @notice The Resilient Oracle is the main contract that the protocol uses to fetch prices of assets.\n *\n * DeFi protocols are vulnerable to price oracle failures including oracle manipulation and incorrectly\n * reported prices. If only one oracle is used, this creates a single point of failure and opens a vector\n * for attacking the protocol.\n *\n * The Resilient Oracle uses multiple sources and fallback mechanisms to provide accurate prices and protect\n * the protocol from oracle attacks.\n *\n * For every market (vToken) we configure the main, pivot and fallback oracles. The oracles are configured per\n * vToken's underlying asset address. The main oracle oracle is the most trustworthy price source, the pivot\n * oracle is used as a loose sanity checker and the fallback oracle is used as a backup price source.\n *\n * To validate prices returned from two oracles, we use an upper and lower bound ratio that is set for every\n * market. The upper bound ratio represents the deviation between reported price (the price that’s being\n * validated) and the anchor price (the price we are validating against) above which the reported price will\n * be invalidated. The lower bound ratio presents the deviation between reported price and anchor price below\n * which the reported price will be invalidated. So for oracle price to be considered valid the below statement\n * should be true:\n\n```\nanchorRatio = anchorPrice/reporterPrice\nisValid = anchorRatio <= upperBoundAnchorRatio && anchorRatio >= lowerBoundAnchorRatio\n```\n\n * In most cases, Chainlink is used as the main oracle, other oracles are used as the pivot oracle depending\n * on which supports the given market and Binance oracle is used as the fallback oracle.\n *\n * For a fetched price to be valid it must be positive and not stagnant. If the price is invalid then we consider the\n * oracle to be stagnant and treat it like it's disabled.\n */\ncontract ResilientOracle is PausableUpgradeable, AccessControlledV8, ResilientOracleInterface {\n /**\n * @dev Oracle roles:\n * **main**: The most trustworthy price source\n * **pivot**: Price oracle used as a loose sanity checker\n * **fallback**: The backup source when main oracle price is invalidated\n */\n enum OracleRole {\n MAIN,\n PIVOT,\n FALLBACK\n }\n\n struct TokenConfig {\n /// @notice asset address\n address asset;\n /// @notice `oracles` stores the oracles based on their role in the following order:\n /// [main, pivot, fallback],\n /// It can be indexed with the corresponding enum OracleRole value\n address[3] oracles;\n /// @notice `enableFlagsForOracles` stores the enabled state\n /// for each oracle in the same order as `oracles`\n bool[3] enableFlagsForOracles;\n /// @notice `cachingEnabled` is a flag that indicates whether the asset price should be cached\n bool cachingEnabled;\n }\n\n uint256 public constant INVALID_PRICE = 0;\n\n /// @notice Native market address\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n address public immutable nativeMarket;\n\n /// @notice VAI address\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n address public immutable vai;\n\n /// @notice Set this as asset address for Native token on each chain.This is the underlying for vBNB (on bsc)\n /// and can serve as any underlying asset of a market that supports native tokens\n address public constant NATIVE_TOKEN_ADDR = 0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB;\n\n /// @notice Slot to cache the asset's price, used for transient storage\n /// custom:storage-location erc7201:venus-protocol/oracle/ResilientOracle/cache\n /// keccak256(abi.encode(uint256(keccak256(\"venus-protocol/oracle/ResilientOracle/cache\")) - 1))\n /// & ~bytes32(uint256(0xff))\n bytes32 public constant CACHE_SLOT = 0x4e99ec55972332f5e0ef9c6623192c0401b609161bffae64d9ccdd7ad6cc7800;\n\n /// @notice Bound validator contract address\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n BoundValidatorInterface public immutable boundValidator;\n\n mapping(address => TokenConfig) private tokenConfigs;\n\n event TokenConfigAdded(\n address indexed asset,\n address indexed mainOracle,\n address indexed pivotOracle,\n address fallbackOracle\n );\n\n /// Event emitted when an oracle is set\n event OracleSet(address indexed asset, address indexed oracle, uint256 indexed role);\n\n /// Event emitted when an oracle is enabled or disabled\n event OracleEnabled(address indexed asset, uint256 indexed role, bool indexed enable);\n\n /// Event emitted when an asset cachingEnabled flag is set\n event CachedEnabled(address indexed asset, bool indexed enabled);\n\n /**\n * @notice Checks whether an address is null or not\n */\n modifier notNullAddress(address someone) {\n if (someone == address(0)) revert(\"can't be zero address\");\n _;\n }\n\n /**\n * @notice Checks whether token config exists by checking whether asset is null address\n * @dev address can't be null, so it's suitable to be used to check the validity of the config\n * @param asset asset address\n */\n modifier checkTokenConfigExistence(address asset) {\n if (tokenConfigs[asset].asset == address(0)) revert(\"token config must exist\");\n _;\n }\n\n /// @notice Constructor for the implementation contract. Sets immutable variables.\n /// @dev nativeMarketAddress can be address(0) if on the chain we do not support native market\n /// (e.g vETH on ethereum would not be supported, only vWETH)\n /// @param nativeMarketAddress The address of a native market (for bsc it would be vBNB address)\n /// @param vaiAddress The address of the VAI token (if there is VAI on the deployed chain).\n /// Set to address(0) of VAI is not existent.\n /// @param _boundValidator Address of the bound validator contract\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor(\n address nativeMarketAddress,\n address vaiAddress,\n BoundValidatorInterface _boundValidator\n ) notNullAddress(address(_boundValidator)) {\n nativeMarket = nativeMarketAddress;\n vai = vaiAddress;\n boundValidator = _boundValidator;\n\n _disableInitializers();\n }\n\n /**\n * @notice Initializes the contract admin and sets the BoundValidator contract address\n * @param accessControlManager_ Address of the access control manager contract\n */\n function initialize(address accessControlManager_) external initializer {\n __AccessControlled_init(accessControlManager_);\n __Pausable_init();\n }\n\n /**\n * @notice Pauses oracle\n * @custom:access Only Governance\n */\n function pause() external {\n _checkAccessAllowed(\"pause()\");\n _pause();\n }\n\n /**\n * @notice Unpauses oracle\n * @custom:access Only Governance\n */\n function unpause() external {\n _checkAccessAllowed(\"unpause()\");\n _unpause();\n }\n\n /**\n * @notice Batch sets token configs\n * @param tokenConfigs_ Token config array\n * @custom:access Only Governance\n * @custom:error Throws a length error if the length of the token configs array is 0\n */\n function setTokenConfigs(TokenConfig[] memory tokenConfigs_) external {\n if (tokenConfigs_.length == 0) revert(\"length can't be 0\");\n uint256 numTokenConfigs = tokenConfigs_.length;\n for (uint256 i; i < numTokenConfigs; ++i) {\n setTokenConfig(tokenConfigs_[i]);\n }\n }\n\n /**\n * @notice Sets oracle for a given asset and role.\n * @dev Supplied asset **must** exist and main oracle may not be null\n * @param asset Asset address\n * @param oracle Oracle address\n * @param role Oracle role\n * @custom:access Only Governance\n * @custom:error Null address error if main-role oracle address is null\n * @custom:error NotNullAddress error is thrown if asset address is null\n * @custom:error TokenConfigExistance error is thrown if token config is not set\n * @custom:event Emits OracleSet event with asset address, oracle address and role of the oracle for the asset\n */\n function setOracle(\n address asset,\n address oracle,\n OracleRole role\n ) external notNullAddress(asset) checkTokenConfigExistence(asset) {\n _checkAccessAllowed(\"setOracle(address,address,uint8)\");\n if (oracle == address(0) && role == OracleRole.MAIN) revert(\"can't set zero address to main oracle\");\n tokenConfigs[asset].oracles[uint256(role)] = oracle;\n emit OracleSet(asset, oracle, uint256(role));\n }\n\n /**\n * @notice Enables/ disables oracle for the input asset. Token config for the input asset **must** exist\n * @dev Configuration for the asset **must** already exist and the asset cannot be 0 address\n * @param asset Asset address\n * @param role Oracle role\n * @param enable Enabled boolean of the oracle\n * @custom:access Only Governance\n * @custom:error NotNullAddress error is thrown if asset address is null\n * @custom:error TokenConfigExistance error is thrown if token config is not set\n * @custom:event Emits OracleEnabled event with asset address, role of the oracle and enabled flag\n */\n function enableOracle(\n address asset,\n OracleRole role,\n bool enable\n ) external notNullAddress(asset) checkTokenConfigExistence(asset) {\n _checkAccessAllowed(\"enableOracle(address,uint8,bool)\");\n tokenConfigs[asset].enableFlagsForOracles[uint256(role)] = enable;\n emit OracleEnabled(asset, uint256(role), enable);\n }\n\n /**\n * @notice Updates the capped main oracle snapshot.\n * @dev This function should always be called before calling getUnderlyingPrice\n * @param vToken vToken address\n */\n function updatePrice(address vToken) external override {\n address asset = _getUnderlyingAsset(vToken);\n _updateAssetPrice(asset);\n }\n\n /**\n * @notice Updates the capped main oracle snapshot.\n * @dev This function should always be called before calling getPrice\n * @param asset asset address\n */\n function updateAssetPrice(address asset) external {\n _updateAssetPrice(asset);\n }\n\n /**\n * @dev Gets token config by asset address\n * @param asset asset address\n * @return tokenConfig Config for the asset\n */\n function getTokenConfig(address asset) external view returns (TokenConfig memory) {\n return tokenConfigs[asset];\n }\n\n /**\n * @notice Gets price of the underlying asset for a given vToken. Validation flow:\n * - Check if the oracle is paused globally\n * - Validate price from main oracle against pivot oracle\n * - Validate price from fallback oracle against pivot oracle if the first validation failed\n * - Validate price from main oracle against fallback oracle if the second validation failed\n * In the case that the pivot oracle is not available but main price is available and validation is successful,\n * main oracle price is returned.\n * @param vToken vToken address\n * @return price USD price in scaled decimal places.\n * @custom:error Paused error is thrown when resilent oracle is paused\n * @custom:error Invalid resilient oracle price error is thrown if fetched prices from oracle is invalid\n */\n function getUnderlyingPrice(address vToken) external view override returns (uint256) {\n if (paused()) revert(\"resilient oracle is paused\");\n\n address asset = _getUnderlyingAsset(vToken);\n return _getPrice(asset);\n }\n\n /**\n * @notice Gets price of the asset\n * @param asset asset address\n * @return price USD price in scaled decimal places.\n * @custom:error Paused error is thrown when resilent oracle is paused\n * @custom:error Invalid resilient oracle price error is thrown if fetched prices from oracle is invalid\n */\n function getPrice(address asset) external view override returns (uint256) {\n if (paused()) revert(\"resilient oracle is paused\");\n return _getPrice(asset);\n }\n\n /**\n * @notice Sets/resets single token configs.\n * @dev main oracle **must not** be a null address\n * @param tokenConfig Token config struct\n * @custom:access Only Governance\n * @custom:error NotNullAddress is thrown if asset address is null\n * @custom:error NotNullAddress is thrown if main-role oracle address for asset is null\n * @custom:event Emits TokenConfigAdded event when the asset config is set successfully by the authorized account\n * @custom:event Emits CachedEnabled event when the asset cachingEnabled flag is set successfully\n */\n function setTokenConfig(\n TokenConfig memory tokenConfig\n ) public notNullAddress(tokenConfig.asset) notNullAddress(tokenConfig.oracles[uint256(OracleRole.MAIN)]) {\n _checkAccessAllowed(\"setTokenConfig(TokenConfig)\");\n\n tokenConfigs[tokenConfig.asset] = tokenConfig;\n emit TokenConfigAdded(\n tokenConfig.asset,\n tokenConfig.oracles[uint256(OracleRole.MAIN)],\n tokenConfig.oracles[uint256(OracleRole.PIVOT)],\n tokenConfig.oracles[uint256(OracleRole.FALLBACK)]\n );\n emit CachedEnabled(tokenConfig.asset, tokenConfig.cachingEnabled);\n }\n\n /**\n * @notice Gets oracle and enabled status by asset address\n * @param asset asset address\n * @param role Oracle role\n * @return oracle Oracle address based on role\n * @return enabled Enabled flag of the oracle based on token config\n */\n function getOracle(address asset, OracleRole role) public view returns (address oracle, bool enabled) {\n oracle = tokenConfigs[asset].oracles[uint256(role)];\n enabled = tokenConfigs[asset].enableFlagsForOracles[uint256(role)];\n }\n\n /**\n * @notice Updates the capped oracle snapshot.\n * @dev Cache the asset price and return if already cached\n * @param asset asset address\n */\n function _updateAssetPrice(address asset) internal {\n if (Transient.readCachedPrice(CACHE_SLOT, asset) != 0) {\n return;\n }\n\n (address mainOracle, bool mainOracleEnabled) = getOracle(asset, OracleRole.MAIN);\n if (mainOracle != address(0) && mainOracleEnabled) {\n // if main oracle is not CorrelatedTokenOracle it will revert so we need to catch the revert\n try ICappedOracle(mainOracle).updateSnapshot() {} catch {}\n }\n\n if (_isCacheEnabled(asset)) {\n uint256 price = _getPrice(asset);\n Transient.cachePrice(CACHE_SLOT, asset, price);\n }\n }\n\n /**\n * @notice Gets price for the provided asset\n * @param asset asset address\n * @return price USD price in scaled decimal places.\n * @custom:error Invalid resilient oracle price error is thrown if fetched prices from oracle is invalid\n */\n function _getPrice(address asset) internal view returns (uint256) {\n uint256 pivotPrice = INVALID_PRICE;\n uint256 price;\n\n price = Transient.readCachedPrice(CACHE_SLOT, asset);\n if (price != 0) {\n return price;\n }\n\n // Get pivot oracle price, Invalid price if not available or error\n (address pivotOracle, bool pivotOracleEnabled) = getOracle(asset, OracleRole.PIVOT);\n if (pivotOracleEnabled && pivotOracle != address(0)) {\n try OracleInterface(pivotOracle).getPrice(asset) returns (uint256 pricePivot) {\n pivotPrice = pricePivot;\n } catch {}\n }\n\n // Compare main price and pivot price, return main price and if validation was successful\n // note: In case pivot oracle is not available but main price is available and\n // validation is successful, the main oracle price is returned.\n (uint256 mainPrice, bool validatedPivotMain) = _getMainOraclePrice(\n asset,\n pivotPrice,\n pivotOracleEnabled && pivotOracle != address(0)\n );\n if (mainPrice != INVALID_PRICE && validatedPivotMain) return mainPrice;\n\n // Compare fallback and pivot if main oracle comparision fails with pivot\n // Return fallback price when fallback price is validated successfully with pivot oracle\n (uint256 fallbackPrice, bool validatedPivotFallback) = _getFallbackOraclePrice(asset, pivotPrice);\n if (fallbackPrice != INVALID_PRICE && validatedPivotFallback) return fallbackPrice;\n\n // Lastly compare main price and fallback price\n if (\n mainPrice != INVALID_PRICE &&\n fallbackPrice != INVALID_PRICE &&\n boundValidator.validatePriceWithAnchorPrice(asset, mainPrice, fallbackPrice)\n ) {\n return mainPrice;\n }\n\n revert(\"invalid resilient oracle price\");\n }\n\n /**\n * @notice Gets a price for the provided asset\n * @dev This function won't revert when price is 0, because the fallback oracle may still be\n * able to fetch a correct price\n * @param asset asset address\n * @param pivotPrice Pivot oracle price\n * @param pivotEnabled If pivot oracle is not empty and enabled\n * @return price USD price in scaled decimals\n * e.g. asset decimals is 8 then price is returned as 10**18 * 10**(18-8) = 10**28 decimals\n * @return pivotValidated Boolean representing if the validation of main oracle price\n * and pivot oracle price were successful\n * @custom:error Invalid price error is thrown if main oracle fails to fetch price of the asset\n * @custom:error Invalid price error is thrown if main oracle is not enabled or main oracle\n * address is null\n */\n function _getMainOraclePrice(\n address asset,\n uint256 pivotPrice,\n bool pivotEnabled\n ) internal view returns (uint256, bool) {\n (address mainOracle, bool mainOracleEnabled) = getOracle(asset, OracleRole.MAIN);\n if (mainOracleEnabled && mainOracle != address(0)) {\n try OracleInterface(mainOracle).getPrice(asset) returns (uint256 mainOraclePrice) {\n if (!pivotEnabled) {\n return (mainOraclePrice, true);\n }\n if (pivotPrice == INVALID_PRICE) {\n return (mainOraclePrice, false);\n }\n return (\n mainOraclePrice,\n boundValidator.validatePriceWithAnchorPrice(asset, mainOraclePrice, pivotPrice)\n );\n } catch {\n return (INVALID_PRICE, false);\n }\n }\n\n return (INVALID_PRICE, false);\n }\n\n /**\n * @dev This function won't revert when the price is 0 because getPrice checks if price is > 0\n * @param asset asset address\n * @return price USD price in 18 decimals\n * @return pivotValidated Boolean representing if the validation of fallback oracle price\n * and pivot oracle price were successfully\n * @custom:error Invalid price error is thrown if fallback oracle fails to fetch price of the asset\n * @custom:error Invalid price error is thrown if fallback oracle is not enabled or fallback oracle\n * address is null\n */\n function _getFallbackOraclePrice(address asset, uint256 pivotPrice) private view returns (uint256, bool) {\n (address fallbackOracle, bool fallbackEnabled) = getOracle(asset, OracleRole.FALLBACK);\n if (fallbackEnabled && fallbackOracle != address(0)) {\n try OracleInterface(fallbackOracle).getPrice(asset) returns (uint256 fallbackOraclePrice) {\n if (pivotPrice == INVALID_PRICE) {\n return (fallbackOraclePrice, false);\n }\n return (\n fallbackOraclePrice,\n boundValidator.validatePriceWithAnchorPrice(asset, fallbackOraclePrice, pivotPrice)\n );\n } catch {\n return (INVALID_PRICE, false);\n }\n }\n\n return (INVALID_PRICE, false);\n }\n\n /**\n * @dev This function returns the underlying asset of a vToken\n * @param vToken vToken address\n * @return asset underlying asset address\n */\n function _getUnderlyingAsset(address vToken) private view notNullAddress(vToken) returns (address asset) {\n if (vToken == nativeMarket) {\n asset = NATIVE_TOKEN_ADDR;\n } else if (vToken == vai) {\n asset = vai;\n } else {\n asset = VBep20Interface(vToken).underlying();\n }\n }\n\n /**\n * @dev This function checks if the asset price should be cached\n * @param asset asset address\n * @return bool true if caching is enabled, false otherwise\n */\n function _isCacheEnabled(address asset) private view returns (bool) {\n return tokenConfigs[asset].cachingEnabled;\n }\n}\n" + }, + "contracts/test/MockCallPrice.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.0;\n\nimport { OracleInterface, ResilientOracleInterface } from \"../interfaces/OracleInterface.sol\";\n\ninterface CorrelatedTokenOracleInterface {\n function updateSnapshot() external;\n function getPrice(address asset) external view returns (uint256);\n}\n\ncontract MockCallPrice {\n function getMultiPrice(CorrelatedTokenOracleInterface oracle, address asset) public returns (uint256, uint256) {\n oracle.updateSnapshot();\n return (oracle.getPrice(asset), oracle.getPrice(asset));\n }\n\n function getUnderlyingPriceResilientOracle(\n ResilientOracleInterface oracle,\n address vToken\n ) public returns (uint256, uint256) {\n oracle.updatePrice(vToken);\n oracle.updatePrice(vToken);\n return (oracle.getUnderlyingPrice(vToken), oracle.getUnderlyingPrice(vToken));\n }\n\n function getAssetPriceResilientOracle(\n ResilientOracleInterface oracle,\n address asset\n ) public returns (uint256, uint256) {\n oracle.updateAssetPrice(asset);\n oracle.updateAssetPrice(asset);\n return (oracle.getPrice(asset), oracle.getPrice(asset));\n }\n}\n" + }, + "contracts/test/MockSimpleOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"../interfaces/OracleInterface.sol\";\n\ncontract MockSimpleOracle is OracleInterface {\n mapping(address => uint256) public prices;\n\n constructor() {\n //\n }\n\n function getUnderlyingPrice(address vToken) external view returns (uint256) {\n return prices[vToken];\n }\n\n function getPrice(address asset) external view returns (uint256) {\n return prices[asset];\n }\n\n function setPrice(address vToken, uint256 price) public {\n prices[vToken] = price;\n }\n}\n\ncontract MockBoundValidator is BoundValidatorInterface {\n mapping(address => bool) public validateResults;\n bool public twapUpdated;\n\n constructor() {\n //\n }\n\n function validatePriceWithAnchorPrice(\n address vToken,\n uint256 reporterPrice,\n uint256 anchorPrice\n ) external view returns (bool) {\n return validateResults[vToken];\n }\n\n function validateAssetPriceWithAnchorPrice(\n address asset,\n uint256 reporterPrice,\n uint256 anchorPrice\n ) external view returns (bool) {\n return validateResults[asset];\n }\n\n function setValidateResult(address token, bool pass) public {\n validateResults[token] = pass;\n }\n}\n" + }, + "contracts/test/oracles/MockCorrelatedTokenOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { CorrelatedTokenOracle } from \"../../oracles/common/CorrelatedTokenOracle.sol\";\n\ncontract MockCorrelatedTokenOracle is CorrelatedTokenOracle {\n uint256 public mockUnderlyingAmount;\n\n constructor(\n address correlatedToken,\n address underlyingToken,\n address resilientOracle,\n uint256 annualGrowthRate,\n uint256 snapshotInterval,\n uint256 initialSnapshotMaxExchangeRate,\n uint256 initialSnapshotTimestamp,\n address accessControlManager,\n uint256 snapshotGap\n )\n CorrelatedTokenOracle(\n correlatedToken,\n underlyingToken,\n resilientOracle,\n annualGrowthRate,\n snapshotInterval,\n initialSnapshotMaxExchangeRate,\n initialSnapshotTimestamp,\n accessControlManager,\n snapshotGap\n )\n {}\n\n function setMockUnderlyingAmount(uint256 amount) external {\n mockUnderlyingAmount = amount;\n }\n\n function getUnderlyingAmount() public view override returns (uint256) {\n return mockUnderlyingAmount;\n }\n}\n" + }, + "contracts/test/oracles/MockERC20.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\ncontract MockERC20 is ERC20 {\n constructor(string memory name, string memory symbol, uint8 decimals) ERC20(name, symbol) {\n _mint(msg.sender, 100000 * 10 ** uint256(decimals));\n }\n}\n" + }, + "contracts/test/oracles/MockResilientOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"../../interfaces/OracleInterface.sol\";\n\ncontract MockOracle is OracleInterface {\n mapping(address => uint256) public prices;\n\n function getPrice(address asset) external view returns (uint256) {\n return prices[asset];\n }\n\n function setPrice(address vToken, uint256 price) public {\n prices[vToken] = price;\n }\n}\n" + } + }, + "settings": { + "optimizer": { + "enabled": true, + "runs": 200, + "details": { + "yul": true + } + }, + "evmVersion": "cancun", + "outputSelection": { + "*": { + "*": [ + "storageLayout", + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "evm.gasEstimates" + ], + "": ["ast"] + } + }, + "metadata": { + "useLiteralContent": true + } + } +} diff --git a/helpers/deploymentConfig.ts b/helpers/deploymentConfig.ts index ba5e682d..518eb8c8 100644 --- a/helpers/deploymentConfig.ts +++ b/helpers/deploymentConfig.ts @@ -99,6 +99,7 @@ export const ADDRESSES: PreconfiguredAddresses = { "PT-SolvBTC.BBN-27MAR2025": "0x964Ea3dC70Ee5b35Ea881cf8416B7a5F50E13f56", "PT-clisBNB-24APR2025": "0x14AECeEc177085fd09EA07348B4E1F7Fcc030fA1", "PT-sUSDE-26JUN2025": "0x95e58161BA2423c3034658d957F3f5b94DeAbf81", + "PT-USDe-30Oct2025": "0x3099fc25fCdE347D42a22329147d47aB0b0eb6Dd", sUSDe: "0xcFec590e417Abb378cfEfE6296829E35fa25cEbd", USDe: "0x986C30591f5aAb401ea3aa63aFA595608721B1B9", xSolvBTC: "0x3ea87323806586A0282b50377e0FEa76070F532B", From 9179568a8c423e4207e8531406a09fb42389baf8 Mon Sep 17 00:00:00 2001 From: GitGuru7 Date: Fri, 26 Sep 2025 13:48:20 +0530 Subject: [PATCH 15/24] fix: yarn-lock updates --- yarn.lock | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/yarn.lock b/yarn.lock index 414a7486..456ebabd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3974,7 +3974,29 @@ __metadata: languageName: node linkType: hard -"@venusprotocol/oracle@^2.7.0, @venusprotocol/oracle@workspace:.": +"@venusprotocol/oracle@npm:^2.7.0": + version: 2.13.0 + resolution: "@venusprotocol/oracle@npm:2.13.0" + dependencies: + "@chainlink/contracts": ^0.5.1 + "@defi-wonderland/smock": 2.4.0 + "@nomicfoundation/hardhat-network-helpers": ^1.0.8 + "@openzeppelin/contracts": ^4.6.0 + "@openzeppelin/contracts-upgradeable": ^4.7.3 + "@venusprotocol/governance-contracts": ^2.9.0 + "@venusprotocol/solidity-utilities": ^2.0.0 + "@venusprotocol/venus-protocol": ^9.7.0 + ethers: ^5.6.8 + hardhat: 2.22.18 + hardhat-deploy: ^0.12.4 + module-alias: ^2.2.2 + patch-package: ^8.0.0 + solidity-docgen: ^0.6.0-beta.29 + checksum: 55ac455e24b0ff32719c584683ed7066ec9fc1254036b86977cad4eb06cea9558ef109cedd9cdd48a793836ac3cc5852a7e137e5ce3e3fc8b9c3ea7b2783eb69 + languageName: node + linkType: hard + +"@venusprotocol/oracle@workspace:.": version: 0.0.0-use.local resolution: "@venusprotocol/oracle@workspace:." dependencies: From 946475775ff74d8d3fa502edb5759ad695c03f5d Mon Sep 17 00:00:00 2001 From: GitGuru7 <128375421+GitGuru7@users.noreply.github.com> Date: Fri, 26 Sep 2025 08:21:35 +0000 Subject: [PATCH 16/24] feat: updating deployment files --- deployments/bsctestnet.json | 504 ++++++++++++++++++++++++++ deployments/bsctestnet_addresses.json | 1 + 2 files changed, 505 insertions(+) diff --git a/deployments/bsctestnet.json b/deployments/bsctestnet.json index e8761608..04ed5704 100644 --- a/deployments/bsctestnet.json +++ b/deployments/bsctestnet.json @@ -6539,6 +6539,510 @@ } ] }, + "PendleOracle-PT-USDe-30Oct2025": { + "address": "0x6c41e88f4ac0BD30e57cE4094CFE7524661F5Ef3", + "abi": [ + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "market", + "type": "address" + }, + { + "internalType": "address", + "name": "ptOracle", + "type": "address" + }, + { + "internalType": "enum PendleOracle.RateKind", + "name": "rateKind", + "type": "uint8" + }, + { + "internalType": "address", + "name": "ptToken", + "type": "address" + }, + { + "internalType": "address", + "name": "underlyingToken", + "type": "address" + }, + { + "internalType": "address", + "name": "resilientOracle", + "type": "address" + }, + { + "internalType": "uint32", + "name": "twapDuration", + "type": "uint32" + }, + { + "internalType": "uint256", + "name": "annualGrowthRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "snapshotInterval", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "initialSnapshotMaxExchangeRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "initialSnapshotTimestamp", + "type": "uint256" + }, + { + "internalType": "address", + "name": "accessControlManager", + "type": "address" + }, + { + "internalType": "uint256", + "name": "snapshotGap", + "type": "uint256" + } + ], + "internalType": "struct PendleOracle.ConstructorParams", + "name": "params", + "type": "tuple" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "InvalidDuration", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidGrowthRate", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialSnapshot", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidSnapshotMaxExchangeRate", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidTokenAddress", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "calledContract", + "type": "address" + }, + { + "internalType": "string", + "name": "methodSignature", + "type": "string" + } + ], + "name": "Unauthorized", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroAddressNotAllowed", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroValueNotAllowed", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "oldGrowthRatePerSecond", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newGrowthRatePerSecond", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "oldSnapshotInterval", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newSnapshotInterval", + "type": "uint256" + } + ], + "name": "GrowthRateUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "oldSnapshotGap", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newSnapshotGap", + "type": "uint256" + } + ], + "name": "SnapshotGapUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "maxExchangeRate", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "name": "SnapshotUpdated", + "type": "event" + }, + { + "inputs": [], + "name": "ACCESS_CONTROL_MANAGER", + "outputs": [ + { + "internalType": "contract IAccessControlManagerV8", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "CORRELATED_TOKEN", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MARKET", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PT_ORACLE", + "outputs": [ + { + "internalType": "contract IPendlePtOracle", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "RATE_KIND", + "outputs": [ + { + "internalType": "enum PendleOracle.RateKind", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "RESILIENT_ORACLE", + "outputs": [ + { + "internalType": "contract ResilientOracleInterface", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "TWAP_DURATION", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UNDERLYING_DECIMALS", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UNDERLYING_TOKEN", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getMaxAllowedExchangeRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "getPrice", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getUnderlyingAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "growthRatePerSecond", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "isCapped", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_annualGrowthRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_snapshotInterval", + "type": "uint256" + } + ], + "name": "setGrowthRate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_snapshotMaxExchangeRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_snapshotTimestamp", + "type": "uint256" + } + ], + "name": "setSnapshot", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_snapshotGap", + "type": "uint256" + } + ], + "name": "setSnapshotGap", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "snapshotGap", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "snapshotInterval", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "snapshotMaxExchangeRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "snapshotTimestamp", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "updateSnapshot", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ] + }, "PendleOracle-PT-clisBNB-24APR2025": { "address": "0xeF663663e802Ff4510aDE14975820FFB5d2EE9E8", "abi": [ diff --git a/deployments/bsctestnet_addresses.json b/deployments/bsctestnet_addresses.json index d15f8f03..a893f8e5 100644 --- a/deployments/bsctestnet_addresses.json +++ b/deployments/bsctestnet_addresses.json @@ -23,6 +23,7 @@ "PendleOracle-PT-SolvBTC.BBN-27MAR2025": "0x31B78f0Ef6A87cF0E812197226306954a65907d5", "PendleOracle-PT-SolvBTC.BBN-27MAR2025_Implementation": "0x2EC23cBc3A111D4265d9fE7dcf319b2Ff4F23f2D", "PendleOracle-PT-SolvBTC.BBN-27MAR2025_Proxy": "0x31B78f0Ef6A87cF0E812197226306954a65907d5", + "PendleOracle-PT-USDe-30Oct2025": "0x6c41e88f4ac0BD30e57cE4094CFE7524661F5Ef3", "PendleOracle-PT-clisBNB-24APR2025": "0xeF663663e802Ff4510aDE14975820FFB5d2EE9E8", "PendleOracle-PT-clisBNB-24APR2025_Implementation": "0x6d8b4d49238ffc3Ad23239fbC3045307B98D6F76", "PendleOracle-PT-clisBNB-24APR2025_Proxy": "0xeF663663e802Ff4510aDE14975820FFB5d2EE9E8", From b443a930c4d50b80012689416c3db77ae5cd2231 Mon Sep 17 00:00:00 2001 From: GitGuru7 Date: Fri, 26 Sep 2025 15:37:22 +0530 Subject: [PATCH 17/24] fix: market naming case --- deploy/24-deploy-USDe-pendle-oracles.ts | 12 +- .../PendleOracle-PT-USDe-30Oct2025.json | 26 +- .../eb7ae6b5763315e358adb74172778b7c.json | 337 ++++++++++++++++++ helpers/deploymentConfig.ts | 2 +- 4 files changed, 357 insertions(+), 20 deletions(-) create mode 100644 deployments/bsctestnet/solcInputs/eb7ae6b5763315e358adb74172778b7c.json diff --git a/deploy/24-deploy-USDe-pendle-oracles.ts b/deploy/24-deploy-USDe-pendle-oracles.ts index 7d0a6795..72072ddf 100644 --- a/deploy/24-deploy-USDe-pendle-oracles.ts +++ b/deploy/24-deploy-USDe-pendle-oracles.ts @@ -26,14 +26,14 @@ const func: DeployFunction = async ({ getNamedAccounts, deployments, network }: waitConfirmations: 1, }; - await deploy("PendleOracle-PT-USDe-30Oct2025", { + await deploy("PendleOracle-PT-USDe-30OCT2025", { contract: "PendleOracle", args: [ { - market: addresses["PT-USDe-30Oct2025_Market"] || "0x0000000000000000000000000000000000000003", + market: addresses["PT-USDe-30OCT2025_Market"] || "0x0000000000000000000000000000000000000003", ptOracle: ptOracleAddress, rateKind: PendleRateKind.PT_TO_SY, - ptToken: addresses["PT-USDe-30Oct2025"], + ptToken: addresses["PT-USDe-30OCT2025"], underlyingToken: addresses.USDe, resilientOracle: resilientOracle.address, twapDuration: 1800, @@ -49,17 +49,17 @@ const func: DeployFunction = async ({ getNamedAccounts, deployments, network }: }); if (isMainnet(network)) { - await deploy("PendleOracle-PT-USDe-30Oct2025_Reference_PtToAsset", { + await deploy("PendleOracle-PT-USDe-30OCT2025_Reference_PtToAsset", { contract: "PendleOracle", from: deployer, log: true, deterministicDeployment: false, args: [ { - market: addresses["PT-USDe-30Oct2025_Market"] || "0x0000000000000000000000000000000000000003", + market: addresses["PT-USDe-30OCT2025_Market"] || "0x0000000000000000000000000000000000000003", ptOracle: ptOracleAddress, rateKind: PendleRateKind.PT_TO_ASSET, - ptToken: addresses["PT-USDe-30Oct2025"], + ptToken: addresses["PT-USDe-30OCT2025"], underlyingToken: addresses.USDe, resilientOracle: resilientOracle.address, twapDuration: 1800, diff --git a/deployments/bsctestnet/PendleOracle-PT-USDe-30Oct2025.json b/deployments/bsctestnet/PendleOracle-PT-USDe-30Oct2025.json index 1b5cebaf..593a5a6c 100644 --- a/deployments/bsctestnet/PendleOracle-PT-USDe-30Oct2025.json +++ b/deployments/bsctestnet/PendleOracle-PT-USDe-30Oct2025.json @@ -1,5 +1,5 @@ { - "address": "0x6c41e88f4ac0BD30e57cE4094CFE7524661F5Ef3", + "address": "0xc972BE46D847CB1D306d24f8814ABb02037d5689", "abi": [ { "inputs": [ @@ -501,18 +501,18 @@ "type": "function" } ], - "transactionHash": "0x91cfa74ca4e84aebeb2e4ebb925558a161aaa37cf17c8bcffe15f5188c1d268d", + "transactionHash": "0x5f2344ba77510fe931b597a6047bfa3177aa6dbd338401f65f71f897abf758c7", "receipt": { "to": null, "from": "0xe2a089cA69a90f1E27E723EFD339Cff4c4701AcC", - "contractAddress": "0x6c41e88f4ac0BD30e57cE4094CFE7524661F5Ef3", + "contractAddress": "0xc972BE46D847CB1D306d24f8814ABb02037d5689", "transactionIndex": 0, "gasUsed": "941190", "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0xaeb0da976e6cfb7b743c713a06ece0755925a3d2c057869d0a3e0fe8e643e2f3", - "transactionHash": "0x91cfa74ca4e84aebeb2e4ebb925558a161aaa37cf17c8bcffe15f5188c1d268d", + "blockHash": "0xc3744699ab989f2d706dd46c3deae644a4eb503e60c8e91a775fb356b8c5f16b", + "transactionHash": "0x5f2344ba77510fe931b597a6047bfa3177aa6dbd338401f65f71f897abf758c7", "logs": [], - "blockNumber": 66694300, + "blockNumber": 66715286, "cumulativeGasUsed": "941190", "status": 1, "byzantium": true @@ -522,7 +522,7 @@ "market": "0x0000000000000000000000000000000000000003", "ptOracle": "0xa37A9127C302fEc17d456a6E1a5643a18a1779aD", "rateKind": 1, - "ptToken": "0x3099fc25fCdE347D42a22329147d47aB0b0eb6Dd", + "ptToken": "0x0c98334aCF440b9936D9cc1d99dc1A77bf26a93B", "underlyingToken": "0x986C30591f5aAb401ea3aa63aFA595608721B1B9", "resilientOracle": "0x3cD69251D04A28d887Ac14cbe2E14c52F3D57823", "twapDuration": 1800, @@ -535,7 +535,7 @@ } ], "numDeployments": 1, - "solcInputHash": "26a7070d6dc65f243bcdfd66c9c6afcc", + "solcInputHash": "eb7ae6b5763315e358adb74172778b7c", "metadata": "{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"market\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"ptOracle\",\"type\":\"address\"},{\"internalType\":\"enum PendleOracle.RateKind\",\"name\":\"rateKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"ptToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"underlyingToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resilientOracle\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"twapDuration\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"annualGrowthRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"snapshotInterval\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSnapshotMaxExchangeRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSnapshotTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"accessControlManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"snapshotGap\",\"type\":\"uint256\"}],\"internalType\":\"struct PendleOracle.ConstructorParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidDuration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidGrowthRate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialSnapshot\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSnapshotMaxExchangeRate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"calledContract\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"methodSignature\",\"type\":\"string\"}],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroValueNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldGrowthRatePerSecond\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newGrowthRatePerSecond\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldSnapshotInterval\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSnapshotInterval\",\"type\":\"uint256\"}],\"name\":\"GrowthRateUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldSnapshotGap\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newSnapshotGap\",\"type\":\"uint256\"}],\"name\":\"SnapshotGapUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maxExchangeRate\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"SnapshotUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ACCESS_CONTROL_MANAGER\",\"outputs\":[{\"internalType\":\"contract IAccessControlManagerV8\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CORRELATED_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MARKET\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PT_ORACLE\",\"outputs\":[{\"internalType\":\"contract IPendlePtOracle\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RATE_KIND\",\"outputs\":[{\"internalType\":\"enum PendleOracle.RateKind\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RESILIENT_ORACLE\",\"outputs\":[{\"internalType\":\"contract ResilientOracleInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TWAP_DURATION\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UNDERLYING_DECIMALS\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UNDERLYING_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaxAllowedExchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUnderlyingAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"growthRatePerSecond\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isCapped\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_annualGrowthRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotInterval\",\"type\":\"uint256\"}],\"name\":\"setGrowthRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_snapshotMaxExchangeRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotTimestamp\",\"type\":\"uint256\"}],\"name\":\"setSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_snapshotGap\",\"type\":\"uint256\"}],\"name\":\"setSnapshotGap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotGap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotInterval\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotMaxExchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Venus\",\"details\":\"As a base price the oracle uses either the price of the Pendle market's asset (in this case PT_TO_ASSET rate should be used) or the price of the Pendle market's interest bearing token (e.g. wstETH for stETH; in this case PT_TO_SY rate should be used). Technically, interest bearing token is different from standardized yield (SY) token, but since SY is a wrapper around an interest bearing token, we can safely assume the prices of the two are equal. This is not always true for asset price though: using PT_TO_ASSET rate assumes that the yield token can be seamlessly redeemed for the underlying asset. In reality, this might not always be the case. For more details, see https://docs.pendle.finance/Developers/Contracts/StandardizedYield\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"custom:error\":\"InvalidDuration Thrown if the duration is invalid\"},\"getMaxAllowedExchangeRate()\":{\"returns\":{\"_0\":\"maxExchangeRate Maximum allowed exchange rate\"}},\"getPrice(address)\":{\"custom:error\":\"InvalidTokenAddress error is thrown if the token address is invalid\",\"params\":{\"asset\":\"Address of the token\"},\"returns\":{\"_0\":\"price The price of the token in scaled decimal places. It can be capped to a maximum value taking into account the growth rate\"}},\"getUnderlyingAmount()\":{\"returns\":{\"_0\":\"amount The amount of underlying token (either the market's asset or the yield token) for 1 PT, adjusted for decimals such that the result has the same precision as the underlying token\"}},\"isCapped()\":{\"returns\":{\"_0\":\"isCapped Boolean indicating if the price is capped\"}},\"setGrowthRate(uint256,uint256)\":{\"custom:error\":\"InvalidGrowthRate error is thrown if the growth rate is invalid\",\"custom:event\":\"Emits GrowthRateUpdated event on successful update of the growth rate\",\"params\":{\"_annualGrowthRate\":\"The annual growth rate to set\",\"_snapshotInterval\":\"The snapshot interval to set\"}},\"setSnapshot(uint256,uint256)\":{\"custom:event\":\"Emits SnapshotUpdated event on successful update of the snapshot\",\"params\":{\"_snapshotMaxExchangeRate\":\"The exchange rate to set\",\"_snapshotTimestamp\":\"The timestamp to set\"}},\"setSnapshotGap(uint256)\":{\"custom:event\":\"Emits SnapshotGapUpdated event on successful update of the snapshot gap\",\"params\":{\"_snapshotGap\":\"The snapshot gap to set\"}},\"updateSnapshot()\":{\"custom:error\":\"InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero\",\"custom:event\":\"Emits SnapshotUpdated event on successful update of the snapshot\"}},\"stateVariables\":{\"UNDERLYING_DECIMALS\":{\"details\":\"We make an assumption that the underlying decimals will not change throughout the lifetime of the Pendle market\"}},\"title\":\"PendleOracle\",\"version\":1},\"userdoc\":{\"errors\":{\"InvalidDuration()\":[{\"notice\":\"Thrown if the duration is invalid\"}],\"InvalidGrowthRate()\":[{\"notice\":\"Thrown if the growth rate is invalid\"}],\"InvalidInitialSnapshot()\":[{\"notice\":\"Thrown if the initial snapshot is invalid\"}],\"InvalidSnapshotMaxExchangeRate()\":[{\"notice\":\"Thrown if the max snapshot exchange rate is invalid\"}],\"InvalidTokenAddress()\":[{\"notice\":\"Thrown if the token address is invalid\"}],\"Unauthorized(address,address,string)\":[{\"notice\":\"@notice Thrown when the action is prohibited by AccessControlManager\"}],\"ZeroAddressNotAllowed()\":[{\"notice\":\"Thrown if the supplied address is a zero address where it is not allowed\"}],\"ZeroValueNotAllowed()\":[{\"notice\":\"Thrown if the supplied value is 0 where it is not allowed\"}]},\"events\":{\"GrowthRateUpdated(uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted when the growth rate is updated\"},\"SnapshotGapUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the snapshot gap is updated\"},\"SnapshotUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the snapshot is updated\"}},\"kind\":\"user\",\"methods\":{\"ACCESS_CONTROL_MANAGER()\":{\"notice\":\"Address of the AccessControlManager contract\"},\"CORRELATED_TOKEN()\":{\"notice\":\"Address of the correlated token\"},\"MARKET()\":{\"notice\":\"Address of the market\"},\"PT_ORACLE()\":{\"notice\":\"Address of the PT oracle\"},\"RATE_KIND()\":{\"notice\":\"Whether to use PT/SY (standardized yield token) rate or PT/market asset rate\"},\"RESILIENT_ORACLE()\":{\"notice\":\"Address of Resilient Oracle\"},\"TWAP_DURATION()\":{\"notice\":\"Twap duration for the oracle\"},\"UNDERLYING_DECIMALS()\":{\"notice\":\"Decimals of the underlying token\"},\"UNDERLYING_TOKEN()\":{\"notice\":\"Address of the underlying token\"},\"constructor\":{\"notice\":\"Constructor for the implementation contract.\"},\"getMaxAllowedExchangeRate()\":{\"notice\":\"Gets the maximum allowed exchange rate for token\"},\"getPrice(address)\":{\"notice\":\"Fetches the price of the token\"},\"getUnderlyingAmount()\":{\"notice\":\"Fetches the amount of underlying token for 1 PT\"},\"isCapped()\":{\"notice\":\"Returns if the price is capped\"},\"setGrowthRate(uint256,uint256)\":{\"notice\":\"Sets the growth rate and snapshot interval\"},\"setSnapshot(uint256,uint256)\":{\"notice\":\"Directly sets the snapshot exchange rate and timestamp\"},\"setSnapshotGap(uint256)\":{\"notice\":\"Sets the snapshot gap\"},\"snapshotGap()\":{\"notice\":\"Gap to add when updating the snapshot\"},\"snapshotInterval()\":{\"notice\":\"Snapshot update interval\"},\"snapshotMaxExchangeRate()\":{\"notice\":\"Last stored snapshot maximum exchange rate\"},\"snapshotTimestamp()\":{\"notice\":\"Last stored snapshot timestamp\"},\"updateSnapshot()\":{\"notice\":\"Updates the snapshot price and timestamp\"}},\"notice\":\"This oracle fetches the price of a pendle token\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracles/PendleOracle.sol\":\"PendleOracle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev External interface of AccessControl declared to support ERC165 detection.\\n */\\ninterface IAccessControl {\\n /**\\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\\n *\\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\\n * {RoleAdminChanged} not being emitted signaling this.\\n *\\n * _Available since v3.1._\\n */\\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\\n\\n /**\\n * @dev Emitted when `account` is granted `role`.\\n *\\n * `sender` is the account that originated the contract call, an admin role\\n * bearer except when using {AccessControl-_setupRole}.\\n */\\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Emitted when `account` is revoked `role`.\\n *\\n * `sender` is the account that originated the contract call:\\n * - if using `revokeRole`, it is the admin role bearer\\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\\n */\\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Returns `true` if `account` has been granted `role`.\\n */\\n function hasRole(bytes32 role, address account) external view returns (bool);\\n\\n /**\\n * @dev Returns the admin role that controls `role`. See {grantRole} and\\n * {revokeRole}.\\n *\\n * To change a role's admin, use {AccessControl-_setRoleAdmin}.\\n */\\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function grantRole(bytes32 role, address account) external;\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function revokeRole(bytes32 role, address account) external;\\n\\n /**\\n * @dev Revokes `role` from the calling account.\\n *\\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n * purpose is to provide a mechanism for accounts to lose their privileges\\n * if they are compromised (such as when a trusted device is misplaced).\\n *\\n * If the calling account had been granted `role`, emits a {RoleRevoked}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must be `account`.\\n */\\n function renounceRole(bytes32 role, address account) external;\\n}\\n\",\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n *\\n * _Available since v4.1._\\n */\\ninterface IERC20Metadata is IERC20 {\\n /**\\n * @dev Returns the name of the token.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the symbol of the token.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the decimals places of the token.\\n */\\n function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\"},\"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\nimport \\\"@openzeppelin/contracts/access/IAccessControl.sol\\\";\\n\\n/**\\n * @title IAccessControlManagerV8\\n * @author Venus\\n * @notice Interface implemented by the `AccessControlManagerV8` contract.\\n */\\ninterface IAccessControlManagerV8 is IAccessControl {\\n function giveCallPermission(address contractAddress, string calldata functionSig, address accountToPermit) external;\\n\\n function revokeCallPermission(\\n address contractAddress,\\n string calldata functionSig,\\n address accountToRevoke\\n ) external;\\n\\n function isAllowedToCall(address account, string calldata functionSig) external view returns (bool);\\n\\n function hasPermission(\\n address account,\\n address contractAddress,\\n string calldata functionSig\\n ) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xaa29b098440d0b3a131c5ecdf25ce548790c1b5ac7bf9b5c0264b6af6f7a1e0b\",\"license\":\"BSD-3-Clause\"},\"@venusprotocol/solidity-utilities/contracts/constants.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\n/// @dev Base unit for computations, usually used in scaling (multiplications, divisions)\\nuint256 constant EXP_SCALE = 1e18;\\n\\n/// @dev A unit (literal one) in EXP_SCALE, usually used in additions/subtractions\\nuint256 constant MANTISSA_ONE = EXP_SCALE;\\n\\n/// @dev The approximate number of seconds per year\\nuint256 constant SECONDS_PER_YEAR = 31_536_000;\\n\",\"keccak256\":\"0x14de93ead464da249af31bea0e3bcfb62ec693bea3475fb4d90f055ac81dc5eb\",\"license\":\"BSD-3-Clause\"},\"@venusprotocol/solidity-utilities/contracts/validators.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.25;\\n\\n/// @notice Thrown if the supplied address is a zero address where it is not allowed\\nerror ZeroAddressNotAllowed();\\n\\n/// @notice Thrown if the supplied value is 0 where it is not allowed\\nerror ZeroValueNotAllowed();\\n\\n/// @notice Checks if the provided address is nonzero, reverts otherwise\\n/// @param address_ Address to check\\n/// @custom:error ZeroAddressNotAllowed is thrown if the provided address is a zero address\\nfunction ensureNonzeroAddress(address address_) pure {\\n if (address_ == address(0)) {\\n revert ZeroAddressNotAllowed();\\n }\\n}\\n\\n/// @notice Checks if the provided value is nonzero, reverts otherwise\\n/// @param value_ Value to check\\n/// @custom:error ZeroValueNotAllowed is thrown if the provided value is 0\\nfunction ensureNonzeroValue(uint256 value_) pure {\\n if (value_ == 0) {\\n revert ZeroValueNotAllowed();\\n }\\n}\\n\",\"keccak256\":\"0xdb88e14d50dd21889ca3329d755673d022c47e8da005b6a545c7f69c2c4b7b86\",\"license\":\"BSD-3-Clause\"},\"contracts/interfaces/ICappedOracle.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.25;\\n\\ninterface ICappedOracle {\\n function updateSnapshot() external;\\n}\\n\",\"keccak256\":\"0xad239e65b5e92b3486418c5ccca120247702251f9724cd96657c3cfdc7fedc31\",\"license\":\"BSD-3-Clause\"},\"contracts/interfaces/IPendlePtOracle.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.25;\\n\\ninterface IPendlePtOracle {\\n function getPtToAssetRate(address market, uint32 duration) external view returns (uint256);\\n\\n function getPtToSyRate(address market, uint32 duration) external view returns (uint256);\\n\\n function getOracleState(\\n address market,\\n uint32 duration\\n )\\n external\\n view\\n returns (bool increaseCardinalityRequired, uint16 cardinalityRequired, bool oldestObservationSatisfied);\\n}\\n\",\"keccak256\":\"0x14d96d7f75397e4291288ef6367053bd970d95fc0c3e2a028b077f6342e0160a\",\"license\":\"BSD-3-Clause\"},\"contracts/interfaces/OracleInterface.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\ninterface OracleInterface {\\n function getPrice(address asset) external view returns (uint256);\\n}\\n\\ninterface ResilientOracleInterface is OracleInterface {\\n function updatePrice(address vToken) external;\\n\\n function updateAssetPrice(address asset) external;\\n\\n function getUnderlyingPrice(address vToken) external view returns (uint256);\\n}\\n\\ninterface BoundValidatorInterface {\\n function validatePriceWithAnchorPrice(\\n address asset,\\n uint256 reporterPrice,\\n uint256 anchorPrice\\n ) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\"},\"contracts/oracles/PendleOracle.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.25;\\n\\nimport { IPendlePtOracle } from \\\"../interfaces/IPendlePtOracle.sol\\\";\\nimport { CorrelatedTokenOracle } from \\\"./common/CorrelatedTokenOracle.sol\\\";\\nimport { ensureNonzeroAddress, ensureNonzeroValue } from \\\"@venusprotocol/solidity-utilities/contracts/validators.sol\\\";\\nimport { IERC20Metadata } from \\\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\\\";\\n\\n/**\\n * @title PendleOracle\\n * @author Venus\\n * @notice This oracle fetches the price of a pendle token\\n * @dev As a base price the oracle uses either the price of the Pendle\\n * market's asset (in this case PT_TO_ASSET rate should be used) or\\n * the price of the Pendle market's interest bearing token (e.g. wstETH\\n * for stETH; in this case PT_TO_SY rate should be used). Technically,\\n * interest bearing token is different from standardized yield (SY) token,\\n * but since SY is a wrapper around an interest bearing token, we can safely\\n * assume the prices of the two are equal. This is not always true for asset\\n * price though: using PT_TO_ASSET rate assumes that the yield token can\\n * be seamlessly redeemed for the underlying asset. In reality, this might\\n * not always be the case. For more details, see\\n * https://docs.pendle.finance/Developers/Contracts/StandardizedYield\\n */\\ncontract PendleOracle is CorrelatedTokenOracle {\\n struct ConstructorParams {\\n /// @notice Pendle market\\n address market;\\n /// @notice Pendle oracle\\n address ptOracle;\\n /// @notice Either PT_TO_ASSET or PT_TO_SY\\n RateKind rateKind;\\n /// @notice Pendle PT token\\n address ptToken;\\n /// @notice Underlying token, can be either the market's asset or the interest bearing token\\n address underlyingToken;\\n /// @notice Resilient oracle to get the underlying token price from\\n address resilientOracle;\\n /// @notice TWAP duration to call Pendle oracle with\\n uint32 twapDuration;\\n /// @notice Annual growth rate of the underlying token\\n uint256 annualGrowthRate;\\n /// @notice Snapshot interval for the oracle\\n uint256 snapshotInterval;\\n /// @notice Initial exchange rate of the underlying token\\n uint256 initialSnapshotMaxExchangeRate;\\n /// @notice Initial timestamp of the underlying token\\n uint256 initialSnapshotTimestamp;\\n /// @notice Access control manager\\n address accessControlManager;\\n /// @notice Gap to add when updating the snapshot\\n uint256 snapshotGap;\\n }\\n\\n /// @notice Which asset to use as a base for the returned PT\\n /// price. Can be either a standardized yield token (SY), in\\n /// this case PT/SY price is returned, or the Pendle\\n /// market's asset directly.\\n enum RateKind {\\n PT_TO_ASSET,\\n PT_TO_SY\\n }\\n\\n /// @notice Address of the PT oracle\\n IPendlePtOracle public immutable PT_ORACLE;\\n\\n /// @notice Whether to use PT/SY (standardized yield token) rate\\n /// or PT/market asset rate\\n RateKind public immutable RATE_KIND;\\n\\n /// @notice Address of the market\\n address public immutable MARKET;\\n\\n /// @notice Twap duration for the oracle\\n uint32 public immutable TWAP_DURATION;\\n\\n /// @notice Decimals of the underlying token\\n /// @dev We make an assumption that the underlying decimals will\\n /// not change throughout the lifetime of the Pendle market\\n uint8 public immutable UNDERLYING_DECIMALS;\\n\\n /// @notice Thrown if the duration is invalid\\n error InvalidDuration();\\n\\n /**\\n * @notice Constructor for the implementation contract.\\n * @custom:error InvalidDuration Thrown if the duration is invalid\\n */\\n constructor(\\n ConstructorParams memory params\\n )\\n CorrelatedTokenOracle(\\n params.ptToken,\\n params.underlyingToken,\\n params.resilientOracle,\\n params.annualGrowthRate,\\n params.snapshotInterval,\\n params.initialSnapshotMaxExchangeRate,\\n params.initialSnapshotTimestamp,\\n params.accessControlManager,\\n params.snapshotGap\\n )\\n {\\n ensureNonzeroAddress(params.market);\\n ensureNonzeroAddress(params.ptOracle);\\n ensureNonzeroValue(params.twapDuration);\\n\\n MARKET = params.market;\\n PT_ORACLE = IPendlePtOracle(params.ptOracle);\\n RATE_KIND = params.rateKind;\\n TWAP_DURATION = params.twapDuration;\\n UNDERLYING_DECIMALS = IERC20Metadata(UNDERLYING_TOKEN).decimals();\\n\\n (bool increaseCardinalityRequired, , bool oldestObservationSatisfied) = PT_ORACLE.getOracleState(\\n MARKET,\\n TWAP_DURATION\\n );\\n if (increaseCardinalityRequired || !oldestObservationSatisfied) {\\n revert InvalidDuration();\\n }\\n }\\n\\n /// @notice Fetches the amount of underlying token for 1 PT\\n /// @return amount The amount of underlying token (either the market's asset\\n /// or the yield token) for 1 PT, adjusted for decimals such that the result\\n /// has the same precision as the underlying token\\n function getUnderlyingAmount() public view override returns (uint256) {\\n uint256 rate;\\n if (RATE_KIND == RateKind.PT_TO_SY) {\\n rate = PT_ORACLE.getPtToSyRate(MARKET, TWAP_DURATION);\\n } else {\\n rate = PT_ORACLE.getPtToAssetRate(MARKET, TWAP_DURATION);\\n }\\n return ((10 ** UNDERLYING_DECIMALS) * rate) / 1e18;\\n }\\n}\\n\",\"keccak256\":\"0xaa7963ac7657ea62079c2162cb4fc45524f8ffbbc6e84f89a5d4e54b71dc6025\",\"license\":\"BSD-3-Clause\"},\"contracts/oracles/common/CorrelatedTokenOracle.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.25;\\n\\nimport { OracleInterface, ResilientOracleInterface } from \\\"../../interfaces/OracleInterface.sol\\\";\\nimport { ensureNonzeroAddress } from \\\"@venusprotocol/solidity-utilities/contracts/validators.sol\\\";\\nimport { SECONDS_PER_YEAR } from \\\"@venusprotocol/solidity-utilities/contracts/constants.sol\\\";\\nimport { IERC20Metadata } from \\\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\\\";\\nimport { ICappedOracle } from \\\"../../interfaces/ICappedOracle.sol\\\";\\nimport { IAccessControlManagerV8 } from \\\"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol\\\";\\n\\n/**\\n * @title CorrelatedTokenOracle\\n * @notice This oracle fetches the price of a token that is correlated to another token.\\n */\\nabstract contract CorrelatedTokenOracle is OracleInterface, ICappedOracle {\\n /// @notice Address of the correlated token\\n address public immutable CORRELATED_TOKEN;\\n\\n /// @notice Address of the underlying token\\n address public immutable UNDERLYING_TOKEN;\\n\\n /// @notice Address of Resilient Oracle\\n ResilientOracleInterface public immutable RESILIENT_ORACLE;\\n\\n /// @notice Address of the AccessControlManager contract\\n IAccessControlManagerV8 public immutable ACCESS_CONTROL_MANAGER;\\n\\n //// @notice Growth rate percentage in seconds. Ex: 1e18 is 100%\\n uint256 public growthRatePerSecond;\\n\\n /// @notice Snapshot update interval\\n uint256 public snapshotInterval;\\n\\n /// @notice Last stored snapshot maximum exchange rate\\n uint256 public snapshotMaxExchangeRate;\\n\\n /// @notice Last stored snapshot timestamp\\n uint256 public snapshotTimestamp;\\n\\n /// @notice Gap to add when updating the snapshot\\n uint256 public snapshotGap;\\n\\n /// @notice Emitted when the snapshot is updated\\n event SnapshotUpdated(uint256 indexed maxExchangeRate, uint256 indexed timestamp);\\n\\n /// @notice Emitted when the growth rate is updated\\n event GrowthRateUpdated(\\n uint256 indexed oldGrowthRatePerSecond,\\n uint256 indexed newGrowthRatePerSecond,\\n uint256 indexed oldSnapshotInterval,\\n uint256 newSnapshotInterval\\n );\\n\\n /// @notice Emitted when the snapshot gap is updated\\n event SnapshotGapUpdated(uint256 indexed oldSnapshotGap, uint256 indexed newSnapshotGap);\\n\\n /// @notice Thrown if the token address is invalid\\n error InvalidTokenAddress();\\n\\n /// @notice Thrown if the growth rate is invalid\\n error InvalidGrowthRate();\\n\\n /// @notice Thrown if the initial snapshot is invalid\\n error InvalidInitialSnapshot();\\n\\n /// @notice Thrown if the max snapshot exchange rate is invalid\\n error InvalidSnapshotMaxExchangeRate();\\n\\n /// @notice @notice Thrown when the action is prohibited by AccessControlManager\\n error Unauthorized(address sender, address calledContract, string methodSignature);\\n\\n /**\\n * @notice Constructor for the implementation contract.\\n * @custom:error InvalidGrowthRate error is thrown if the growth rate is invalid\\n * @custom:error InvalidInitialSnapshot error is thrown if the initial snapshot values are invalid\\n */\\n constructor(\\n address _correlatedToken,\\n address _underlyingToken,\\n address _resilientOracle,\\n uint256 _annualGrowthRate,\\n uint256 _snapshotInterval,\\n uint256 _initialSnapshotMaxExchangeRate,\\n uint256 _initialSnapshotTimestamp,\\n address _accessControlManager,\\n uint256 _snapshotGap\\n ) {\\n growthRatePerSecond = _annualGrowthRate / SECONDS_PER_YEAR;\\n\\n if ((growthRatePerSecond == 0 && _snapshotInterval > 0) || (growthRatePerSecond > 0 && _snapshotInterval == 0))\\n revert InvalidGrowthRate();\\n\\n if ((_initialSnapshotMaxExchangeRate == 0 || _initialSnapshotTimestamp == 0) && _snapshotInterval > 0) {\\n revert InvalidInitialSnapshot();\\n }\\n\\n ensureNonzeroAddress(_correlatedToken);\\n ensureNonzeroAddress(_underlyingToken);\\n ensureNonzeroAddress(_resilientOracle);\\n ensureNonzeroAddress(_accessControlManager);\\n\\n CORRELATED_TOKEN = _correlatedToken;\\n UNDERLYING_TOKEN = _underlyingToken;\\n RESILIENT_ORACLE = ResilientOracleInterface(_resilientOracle);\\n snapshotInterval = _snapshotInterval;\\n\\n snapshotMaxExchangeRate = _initialSnapshotMaxExchangeRate;\\n snapshotTimestamp = _initialSnapshotTimestamp;\\n snapshotGap = _snapshotGap;\\n\\n ACCESS_CONTROL_MANAGER = IAccessControlManagerV8(_accessControlManager);\\n }\\n\\n /**\\n * @notice Directly sets the snapshot exchange rate and timestamp\\n * @param _snapshotMaxExchangeRate The exchange rate to set\\n * @param _snapshotTimestamp The timestamp to set\\n * @custom:event Emits SnapshotUpdated event on successful update of the snapshot\\n */\\n function setSnapshot(uint256 _snapshotMaxExchangeRate, uint256 _snapshotTimestamp) external {\\n _checkAccessAllowed(\\\"setSnapshot(uint256,uint256)\\\");\\n\\n snapshotMaxExchangeRate = _snapshotMaxExchangeRate;\\n snapshotTimestamp = _snapshotTimestamp;\\n\\n emit SnapshotUpdated(snapshotMaxExchangeRate, snapshotTimestamp);\\n }\\n\\n /**\\n * @notice Sets the growth rate and snapshot interval\\n * @param _annualGrowthRate The annual growth rate to set\\n * @param _snapshotInterval The snapshot interval to set\\n * @custom:error InvalidGrowthRate error is thrown if the growth rate is invalid\\n * @custom:event Emits GrowthRateUpdated event on successful update of the growth rate\\n */\\n function setGrowthRate(uint256 _annualGrowthRate, uint256 _snapshotInterval) external {\\n _checkAccessAllowed(\\\"setGrowthRate(uint256,uint256)\\\");\\n uint256 oldGrowthRatePerSecond = growthRatePerSecond;\\n\\n growthRatePerSecond = _annualGrowthRate / SECONDS_PER_YEAR;\\n\\n if ((growthRatePerSecond == 0 && _snapshotInterval > 0) || (growthRatePerSecond > 0 && _snapshotInterval == 0))\\n revert InvalidGrowthRate();\\n\\n emit GrowthRateUpdated(oldGrowthRatePerSecond, growthRatePerSecond, snapshotInterval, _snapshotInterval);\\n\\n snapshotInterval = _snapshotInterval;\\n }\\n\\n /**\\n * @notice Sets the snapshot gap\\n * @param _snapshotGap The snapshot gap to set\\n * @custom:event Emits SnapshotGapUpdated event on successful update of the snapshot gap\\n */\\n function setSnapshotGap(uint256 _snapshotGap) external {\\n _checkAccessAllowed(\\\"setSnapshotGap(uint256)\\\");\\n\\n emit SnapshotGapUpdated(snapshotGap, _snapshotGap);\\n\\n snapshotGap = _snapshotGap;\\n }\\n\\n /**\\n * @notice Returns if the price is capped\\n * @return isCapped Boolean indicating if the price is capped\\n */\\n function isCapped() external view virtual returns (bool) {\\n if (snapshotInterval == 0) {\\n return false;\\n }\\n\\n uint256 maxAllowedExchangeRate = getMaxAllowedExchangeRate();\\n if (maxAllowedExchangeRate == 0) {\\n return false;\\n }\\n\\n uint256 exchangeRate = getUnderlyingAmount();\\n\\n return exchangeRate > maxAllowedExchangeRate;\\n }\\n\\n /**\\n * @notice Updates the snapshot price and timestamp\\n * @custom:event Emits SnapshotUpdated event on successful update of the snapshot\\n * @custom:error InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero\\n */\\n function updateSnapshot() public override {\\n if (block.timestamp - snapshotTimestamp < snapshotInterval || snapshotInterval == 0) return;\\n\\n uint256 exchangeRate = getUnderlyingAmount();\\n uint256 maxAllowedExchangeRate = getMaxAllowedExchangeRate();\\n\\n snapshotMaxExchangeRate =\\n (exchangeRate > maxAllowedExchangeRate ? maxAllowedExchangeRate : exchangeRate) +\\n snapshotGap;\\n snapshotTimestamp = block.timestamp;\\n\\n if (snapshotMaxExchangeRate == 0) revert InvalidSnapshotMaxExchangeRate();\\n\\n RESILIENT_ORACLE.updateAssetPrice(UNDERLYING_TOKEN);\\n emit SnapshotUpdated(snapshotMaxExchangeRate, snapshotTimestamp);\\n }\\n\\n /**\\n * @notice Fetches the price of the token\\n * @param asset Address of the token\\n * @return price The price of the token in scaled decimal places. It can be capped\\n * to a maximum value taking into account the growth rate\\n * @custom:error InvalidTokenAddress error is thrown if the token address is invalid\\n */\\n function getPrice(address asset) public view override returns (uint256) {\\n if (asset != CORRELATED_TOKEN) revert InvalidTokenAddress();\\n\\n uint256 exchangeRate = getUnderlyingAmount();\\n\\n if (snapshotInterval == 0) {\\n return _calculatePrice(exchangeRate);\\n }\\n\\n uint256 maxAllowedExchangeRate = getMaxAllowedExchangeRate();\\n\\n uint256 finalExchangeRate = (exchangeRate > maxAllowedExchangeRate && maxAllowedExchangeRate != 0)\\n ? maxAllowedExchangeRate\\n : exchangeRate;\\n\\n return _calculatePrice(finalExchangeRate);\\n }\\n\\n /**\\n * @notice Gets the maximum allowed exchange rate for token\\n * @return maxExchangeRate Maximum allowed exchange rate\\n */\\n function getMaxAllowedExchangeRate() public view returns (uint256) {\\n uint256 timeElapsed = block.timestamp - snapshotTimestamp;\\n uint256 maxExchangeRate = snapshotMaxExchangeRate +\\n (snapshotMaxExchangeRate * growthRatePerSecond * timeElapsed) /\\n 1e18;\\n return maxExchangeRate;\\n }\\n\\n /**\\n * @notice Gets the underlying amount for correlated token\\n * @return underlyingAmount Amount of underlying token\\n */\\n function getUnderlyingAmount() public view virtual returns (uint256);\\n\\n /**\\n * @notice Fetches price of the token based on an underlying exchange rate\\n * @param exchangeRate The underlying exchange rate to use\\n * @return price The price of the token in scaled decimal places\\n */\\n function _calculatePrice(uint256 exchangeRate) internal view returns (uint256) {\\n uint256 underlyingUSDPrice = RESILIENT_ORACLE.getPrice(UNDERLYING_TOKEN);\\n\\n IERC20Metadata token = IERC20Metadata(CORRELATED_TOKEN);\\n uint256 decimals = token.decimals();\\n\\n return (exchangeRate * underlyingUSDPrice) / (10 ** decimals);\\n }\\n\\n /**\\n * @notice Reverts if the call is not allowed by AccessControlManager\\n * @param signature Method signature\\n * @custom:error Unauthorized error is thrown if the call is not allowed\\n */\\n function _checkAccessAllowed(string memory signature) internal view {\\n bool isAllowedToCall = ACCESS_CONTROL_MANAGER.isAllowedToCall(msg.sender, signature);\\n\\n if (!isAllowedToCall) {\\n revert Unauthorized(msg.sender, address(this), signature);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x808b444fa4d1d440dc43de290f1eb59a64646ce9085028b286fa30346305872e\",\"license\":\"BSD-3-Clause\"}},\"version\":1}", "bytecode": "0x6101a0604052348015610010575f80fd5b5060405161155938038061155983398101604081905261002f916103a6565b6060810151608082015160a083015160e084015161010085015161012086015161014087015161016088015161018089015161006f6301e1338087610481565b5f81905515801561007f57505f85115b8061009357505f8054118015610093575084155b156100b1576040516353b7e64560e11b815260040160405180910390fd5b8315806100bc575082155b80156100c757505f85115b156100e55760405163b8a5589b60e01b815260040160405180910390fd5b6100ee896102eb565b6100f7886102eb565b610100876102eb565b610109826102eb565b6001600160a01b0398891660805296881660a05294871660c052600192909255600255600355506004919091551660e0528051610145906102eb565b6020810151610153906102eb565b60c08101516101679063ffffffff16610315565b80516001600160a01b03908116610140526020820151166101005260408101516001811115610198576101986104a0565b6101208160018111156101ad576101ad6104a0565b815250508060c0015163ffffffff166101608163ffffffff168152505060a0516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610208573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061022c91906104b4565b60ff166101805261010051610140516101605160405162439f4b60e91b81526001600160a01b03928316600482015263ffffffff90911660248201525f928392169063873e960090604401606060405180830381865afa158015610292573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102b691906104ea565b925050915081806102c5575080155b156102e357604051637616640160e01b815260040160405180910390fd5b505050610532565b6001600160a01b038116610312576040516342bcdf7f60e11b815260040160405180910390fd5b50565b805f036103125760405163273e150360e21b815260040160405180910390fd5b6040516101a081016001600160401b038111828210171561036457634e487b7160e01b5f52604160045260245ffd5b60405290565b80516001600160a01b0381168114610380575f80fd5b919050565b805160028110610380575f80fd5b805163ffffffff81168114610380575f80fd5b5f6101a082840312156103b7575f80fd5b6103bf610335565b6103c88361036a565b81526103d66020840161036a565b60208201526103e760408401610385565b60408201526103f86060840161036a565b60608201526104096080840161036a565b608082015261041a60a0840161036a565b60a082015261042b60c08401610393565b60c082015260e0838101519082015261010080840151908201526101208084015190820152610140808401519082015261016061046981850161036a565b90820152610180928301519281019290925250919050565b5f8261049b57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52602160045260245ffd5b5f602082840312156104c4575f80fd5b815160ff811681146104d4575f80fd5b9392505050565b80518015158114610380575f80fd5b5f805f606084860312156104fc575f80fd5b610505846104db565b9250602084015161ffff8116811461051b575f80fd5b9150610529604085016104db565b90509250925092565b60805160a05160c05160e0516101005161012051610140516101605161018051610f596106005f395f81816101d9015261099d01525f81816103070152818161081b01526108f601525f818161038b015281816107f301526108ce01525f818161014601526107a701525f81816102e001528181610847015261092201525f818161022e0152610b9a01525f818161034c0152818161069c0152610a6d01525f818161019a015281816106740152610a4101525f81816102a6015281816103b00152610adb0152610f595ff3fe608060405234801561000f575f80fd5b506004361061013d575f3560e01c806369240426116100b45780639c43eb54116100795780639c43eb541461033e578063a4edcd4c14610347578063abb856131461036e578063ac5a693e14610376578063bdf13af21461037e578063f46f16c214610386575f80fd5b8063692404261461029957806369818a35146102a15780637fc4e4a0146102c8578063809d7b31146102db578063879ac8f814610302575f80fd5b806341976e091161010557806341976e091461021657806345be2dc7146102295780635213f9c814610250578063596efe6f14610265578063643d813d1461026e578063671528d414610281575f80fd5b806302125d091461014157806307d0413c1461017e57806329db1be6146101955780633dae7c22146101d45780634169d2451461020d575b5f80fd5b6101687f000000000000000000000000000000000000000000000000000000000000000081565b6040516101759190610c57565b60405180910390f35b61018760015481565b604051908152602001610175565b6101bc7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610175565b6101fb7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610175565b61018760045481565b610187610224366004610c7d565b6103ad565b6101bc7f000000000000000000000000000000000000000000000000000000000000000081565b61026361025e366004610ca3565b61045e565b005b61018760025481565b61026361027c366004610cba565b6104cf565b6102896105a5565b6040519015158152602001610175565b6102636105e0565b6101bc7f000000000000000000000000000000000000000000000000000000000000000081565b6102636102d6366004610cba565b610729565b6101bc7f000000000000000000000000000000000000000000000000000000000000000081565b6103297f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610175565b61018760035481565b6101bc7f000000000000000000000000000000000000000000000000000000000000000081565b6101876107a1565b6101875f5481565b6101876109dd565b6101bc7f000000000000000000000000000000000000000000000000000000000000000081565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161461040057604051630f58058360e11b815260040160405180910390fd5b5f6104096107a1565b90506001545f036104245761041d81610a2a565b9392505050565b5f61042d6109dd565b90505f818311801561043e57508115155b610448578261044a565b815b905061045581610a2a565b95945050505050565b61049c6040518060400160405280601781526020017f736574536e617073686f744761702875696e7432353629000000000000000000815250610b81565b6004546040518291907feb3716d3f8388c182853c1dc98b18931f3a600bbab31f2ff48631f6412e4997f905f90a3600455565b61050d6040518060400160405280601e81526020017f73657447726f777468526174652875696e743235362c75696e74323536290000815250610b81565b5f5461051d6301e1338084610cee565b5f81905515801561052d57505f82115b8061054157505f8054118015610541575081155b1561055f576040516353b7e64560e11b815260040160405180910390fd5b6001545f54827fa65cbeb0e28a8803a912daac67c472c160aa01e2c988755fa424f290321de6088560405161059691815260200190565b60405180910390a45060015550565b5f6001545f036105b457505f90565b5f6105bd6109dd565b9050805f036105cd575f91505090565b5f6105d66107a1565b9190911192915050565b6001546003546105f09042610d0d565b10806105fc5750600154155b1561060357565b5f61060c6107a1565b90505f6106176109dd565b9050600454818311610629578261062b565b815b6106359190610d26565b6002819055426003555f0361065d57604051635f18388760e01b815260040160405180910390fd5b60405163b62cad6960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063b62cad69906024015f604051808303815f87803b1580156106dd575f80fd5b505af11580156106ef573d5f803e3d5ffd5b505050506003546002547f2c8c8fcb8c77a0ca21dcc3ab8fc0ade761557e76b1240cb40ebbef9fcee00f7d60405160405180910390a35050565b6107676040518060400160405280601c81526020017f736574536e617073686f742875696e743235362c75696e743235362900000000815250610b81565b60028290556003819055604051819083907f2c8c8fcb8c77a0ca21dcc3ab8fc0ade761557e76b1240cb40ebbef9fcee00f7d905f90a35050565b5f8060017f000000000000000000000000000000000000000000000000000000000000000060018111156107d7576107d7610c43565b036108b75760405163a31426d160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f000000000000000000000000000000000000000000000000000000000000000063ffffffff1660248301527f0000000000000000000000000000000000000000000000000000000000000000169063a31426d190604401602060405180830381865afa15801561088c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108b09190610d39565b905061098e565b60405163abca0eab60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f000000000000000000000000000000000000000000000000000000000000000063ffffffff1660248301527f0000000000000000000000000000000000000000000000000000000000000000169063abca0eab90604401602060405180830381865afa158015610967573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061098b9190610d39565b90505b670de0b6b3a7640000816109c37f0000000000000000000000000000000000000000000000000000000000000000600a610e30565b6109cd9190610e3e565b6109d79190610cee565b91505090565b5f80600354426109ed9190610d0d565b90505f670de0b6b3a7640000825f54600254610a099190610e3e565b610a139190610e3e565b610a1d9190610cee565b60025461041d9190610d26565b6040516341976e0960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f9182917f000000000000000000000000000000000000000000000000000000000000000016906341976e0990602401602060405180830381865afa158015610ab2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ad69190610d39565b90505f7f000000000000000000000000000000000000000000000000000000000000000090505f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b39573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b5d9190610e55565b60ff169050610b6d81600a610e75565b610b778487610e3e565b6104559190610cee565b6040516318c5e8ab60e01b81525f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906318c5e8ab90610bd19033908690600401610eae565b602060405180830381865afa158015610bec573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c109190610ed9565b905080610c3f57333083604051634a3fa29360e01b8152600401610c3693929190610ef8565b60405180910390fd5b5050565b634e487b7160e01b5f52602160045260245ffd5b6020810160028310610c7757634e487b7160e01b5f52602160045260245ffd5b91905290565b5f60208284031215610c8d575f80fd5b81356001600160a01b038116811461041d575f80fd5b5f60208284031215610cb3575f80fd5b5035919050565b5f8060408385031215610ccb575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b5f82610d0857634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115610d2057610d20610cda565b92915050565b80820180821115610d2057610d20610cda565b5f60208284031215610d49575f80fd5b5051919050565b600181815b80851115610d8a57815f1904821115610d7057610d70610cda565b80851615610d7d57918102915b93841c9390800290610d55565b509250929050565b5f82610da057506001610d20565b81610dac57505f610d20565b8160018114610dc25760028114610dcc57610de8565b6001915050610d20565b60ff841115610ddd57610ddd610cda565b50506001821b610d20565b5060208310610133831016604e8410600b8410161715610e0b575081810a610d20565b610e158383610d50565b805f1904821115610e2857610e28610cda565b029392505050565b5f61041d60ff841683610d92565b8082028115828204841417610d2057610d20610cda565b5f60208284031215610e65575f80fd5b815160ff8116811461041d575f80fd5b5f61041d8383610d92565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6001600160a01b03831681526040602082018190525f90610ed190830184610e80565b949350505050565b5f60208284031215610ee9575f80fd5b8151801515811461041d575f80fd5b6001600160a01b038481168252831660208201526060604082018190525f9061045590830184610e8056fea2646970667358221220dd4434cf5ec982b81a2a3a25f96ea3d5d76d95704500f208da19253bd6abc73b64736f6c63430008190033", "deployedBytecode": "0x608060405234801561000f575f80fd5b506004361061013d575f3560e01c806369240426116100b45780639c43eb54116100795780639c43eb541461033e578063a4edcd4c14610347578063abb856131461036e578063ac5a693e14610376578063bdf13af21461037e578063f46f16c214610386575f80fd5b8063692404261461029957806369818a35146102a15780637fc4e4a0146102c8578063809d7b31146102db578063879ac8f814610302575f80fd5b806341976e091161010557806341976e091461021657806345be2dc7146102295780635213f9c814610250578063596efe6f14610265578063643d813d1461026e578063671528d414610281575f80fd5b806302125d091461014157806307d0413c1461017e57806329db1be6146101955780633dae7c22146101d45780634169d2451461020d575b5f80fd5b6101687f000000000000000000000000000000000000000000000000000000000000000081565b6040516101759190610c57565b60405180910390f35b61018760015481565b604051908152602001610175565b6101bc7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610175565b6101fb7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610175565b61018760045481565b610187610224366004610c7d565b6103ad565b6101bc7f000000000000000000000000000000000000000000000000000000000000000081565b61026361025e366004610ca3565b61045e565b005b61018760025481565b61026361027c366004610cba565b6104cf565b6102896105a5565b6040519015158152602001610175565b6102636105e0565b6101bc7f000000000000000000000000000000000000000000000000000000000000000081565b6102636102d6366004610cba565b610729565b6101bc7f000000000000000000000000000000000000000000000000000000000000000081565b6103297f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610175565b61018760035481565b6101bc7f000000000000000000000000000000000000000000000000000000000000000081565b6101876107a1565b6101875f5481565b6101876109dd565b6101bc7f000000000000000000000000000000000000000000000000000000000000000081565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161461040057604051630f58058360e11b815260040160405180910390fd5b5f6104096107a1565b90506001545f036104245761041d81610a2a565b9392505050565b5f61042d6109dd565b90505f818311801561043e57508115155b610448578261044a565b815b905061045581610a2a565b95945050505050565b61049c6040518060400160405280601781526020017f736574536e617073686f744761702875696e7432353629000000000000000000815250610b81565b6004546040518291907feb3716d3f8388c182853c1dc98b18931f3a600bbab31f2ff48631f6412e4997f905f90a3600455565b61050d6040518060400160405280601e81526020017f73657447726f777468526174652875696e743235362c75696e74323536290000815250610b81565b5f5461051d6301e1338084610cee565b5f81905515801561052d57505f82115b8061054157505f8054118015610541575081155b1561055f576040516353b7e64560e11b815260040160405180910390fd5b6001545f54827fa65cbeb0e28a8803a912daac67c472c160aa01e2c988755fa424f290321de6088560405161059691815260200190565b60405180910390a45060015550565b5f6001545f036105b457505f90565b5f6105bd6109dd565b9050805f036105cd575f91505090565b5f6105d66107a1565b9190911192915050565b6001546003546105f09042610d0d565b10806105fc5750600154155b1561060357565b5f61060c6107a1565b90505f6106176109dd565b9050600454818311610629578261062b565b815b6106359190610d26565b6002819055426003555f0361065d57604051635f18388760e01b815260040160405180910390fd5b60405163b62cad6960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063b62cad69906024015f604051808303815f87803b1580156106dd575f80fd5b505af11580156106ef573d5f803e3d5ffd5b505050506003546002547f2c8c8fcb8c77a0ca21dcc3ab8fc0ade761557e76b1240cb40ebbef9fcee00f7d60405160405180910390a35050565b6107676040518060400160405280601c81526020017f736574536e617073686f742875696e743235362c75696e743235362900000000815250610b81565b60028290556003819055604051819083907f2c8c8fcb8c77a0ca21dcc3ab8fc0ade761557e76b1240cb40ebbef9fcee00f7d905f90a35050565b5f8060017f000000000000000000000000000000000000000000000000000000000000000060018111156107d7576107d7610c43565b036108b75760405163a31426d160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f000000000000000000000000000000000000000000000000000000000000000063ffffffff1660248301527f0000000000000000000000000000000000000000000000000000000000000000169063a31426d190604401602060405180830381865afa15801561088c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108b09190610d39565b905061098e565b60405163abca0eab60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f000000000000000000000000000000000000000000000000000000000000000063ffffffff1660248301527f0000000000000000000000000000000000000000000000000000000000000000169063abca0eab90604401602060405180830381865afa158015610967573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061098b9190610d39565b90505b670de0b6b3a7640000816109c37f0000000000000000000000000000000000000000000000000000000000000000600a610e30565b6109cd9190610e3e565b6109d79190610cee565b91505090565b5f80600354426109ed9190610d0d565b90505f670de0b6b3a7640000825f54600254610a099190610e3e565b610a139190610e3e565b610a1d9190610cee565b60025461041d9190610d26565b6040516341976e0960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f9182917f000000000000000000000000000000000000000000000000000000000000000016906341976e0990602401602060405180830381865afa158015610ab2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ad69190610d39565b90505f7f000000000000000000000000000000000000000000000000000000000000000090505f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b39573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b5d9190610e55565b60ff169050610b6d81600a610e75565b610b778487610e3e565b6104559190610cee565b6040516318c5e8ab60e01b81525f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906318c5e8ab90610bd19033908690600401610eae565b602060405180830381865afa158015610bec573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c109190610ed9565b905080610c3f57333083604051634a3fa29360e01b8152600401610c3693929190610ef8565b60405180910390fd5b5050565b634e487b7160e01b5f52602160045260245ffd5b6020810160028310610c7757634e487b7160e01b5f52602160045260245ffd5b91905290565b5f60208284031215610c8d575f80fd5b81356001600160a01b038116811461041d575f80fd5b5f60208284031215610cb3575f80fd5b5035919050565b5f8060408385031215610ccb575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b5f82610d0857634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115610d2057610d20610cda565b92915050565b80820180821115610d2057610d20610cda565b5f60208284031215610d49575f80fd5b5051919050565b600181815b80851115610d8a57815f1904821115610d7057610d70610cda565b80851615610d7d57918102915b93841c9390800290610d55565b509250929050565b5f82610da057506001610d20565b81610dac57505f610d20565b8160018114610dc25760028114610dcc57610de8565b6001915050610d20565b60ff841115610ddd57610ddd610cda565b50506001821b610d20565b5060208310610133831016604e8410600b8410161715610e0b575081810a610d20565b610e158383610d50565b805f1904821115610e2857610e28610cda565b029392505050565b5f61041d60ff841683610d92565b8082028115828204841417610d2057610d20610cda565b5f60208284031215610e65575f80fd5b815160ff8116811461041d575f80fd5b5f61041d8383610d92565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6001600160a01b03831681526040602082018190525f90610ed190830184610e80565b949350505050565b5f60208284031215610ee9575f80fd5b8151801515811461041d575f80fd5b6001600160a01b038481168252831660208201526060604082018190525f9061045590830184610e8056fea2646970667358221220dd4434cf5ec982b81a2a3a25f96ea3d5d76d95704500f208da19253bd6abc73b64736f6c63430008190033", @@ -734,7 +734,7 @@ "storageLayout": { "storage": [ { - "astId": 6423, + "astId": 6602, "contract": "contracts/oracles/PendleOracle.sol:PendleOracle", "label": "growthRatePerSecond", "offset": 0, @@ -742,7 +742,7 @@ "type": "t_uint256" }, { - "astId": 6426, + "astId": 6605, "contract": "contracts/oracles/PendleOracle.sol:PendleOracle", "label": "snapshotInterval", "offset": 0, @@ -750,7 +750,7 @@ "type": "t_uint256" }, { - "astId": 6429, + "astId": 6608, "contract": "contracts/oracles/PendleOracle.sol:PendleOracle", "label": "snapshotMaxExchangeRate", "offset": 0, @@ -758,7 +758,7 @@ "type": "t_uint256" }, { - "astId": 6432, + "astId": 6611, "contract": "contracts/oracles/PendleOracle.sol:PendleOracle", "label": "snapshotTimestamp", "offset": 0, @@ -766,7 +766,7 @@ "type": "t_uint256" }, { - "astId": 6435, + "astId": 6614, "contract": "contracts/oracles/PendleOracle.sol:PendleOracle", "label": "snapshotGap", "offset": 0, diff --git a/deployments/bsctestnet/solcInputs/eb7ae6b5763315e358adb74172778b7c.json b/deployments/bsctestnet/solcInputs/eb7ae6b5763315e358adb74172778b7c.json new file mode 100644 index 00000000..dbabbfef --- /dev/null +++ b/deployments/bsctestnet/solcInputs/eb7ae6b5763315e358adb74172778b7c.json @@ -0,0 +1,337 @@ +{ + "language": "Solidity", + "sources": { + "@chainlink/contracts/src/v0.8/interfaces/AggregatorInterface.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\ninterface AggregatorInterface {\n function latestAnswer() external view returns (int256);\n\n function latestTimestamp() external view returns (uint256);\n\n function latestRound() external view returns (uint256);\n\n function getAnswer(uint256 roundId) external view returns (int256);\n\n function getTimestamp(uint256 roundId) external view returns (uint256);\n\n event AnswerUpdated(int256 indexed current, uint256 indexed roundId, uint256 updatedAt);\n\n event NewRound(uint256 indexed roundId, address indexed startedBy, uint256 startedAt);\n}\n" + }, + "@chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport \"./AggregatorInterface.sol\";\nimport \"./AggregatorV3Interface.sol\";\n\ninterface AggregatorV2V3Interface is AggregatorInterface, AggregatorV3Interface {}\n" + }, + "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\ninterface AggregatorV3Interface {\n function decimals() external view returns (uint8);\n\n function description() external view returns (string memory);\n\n function version() external view returns (uint256);\n\n function getRoundData(uint80 _roundId)\n external\n view\n returns (\n uint80 roundId,\n int256 answer,\n uint256 startedAt,\n uint256 updatedAt,\n uint80 answeredInRound\n );\n\n function latestRoundData()\n external\n view\n returns (\n uint80 roundId,\n int256 answer,\n uint256 startedAt,\n uint256 updatedAt,\n uint80 answeredInRound\n );\n}\n" + }, + "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable2Step.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./OwnableUpgradeable.sol\";\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Contract module which provides access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership} and {acceptOwnership}.\n *\n * This module is used through inheritance. It will make available all functions\n * from parent (Ownable).\n */\nabstract contract Ownable2StepUpgradeable is Initializable, OwnableUpgradeable {\n address private _pendingOwner;\n\n event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner);\n\n function __Ownable2Step_init() internal onlyInitializing {\n __Ownable_init_unchained();\n }\n\n function __Ownable2Step_init_unchained() internal onlyInitializing {\n }\n /**\n * @dev Returns the address of the pending owner.\n */\n function pendingOwner() public view virtual returns (address) {\n return _pendingOwner;\n }\n\n /**\n * @dev Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one.\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public virtual override onlyOwner {\n _pendingOwner = newOwner;\n emit OwnershipTransferStarted(owner(), newOwner);\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`) and deletes any pending owner.\n * Internal function without access restriction.\n */\n function _transferOwnership(address newOwner) internal virtual override {\n delete _pendingOwner;\n super._transferOwnership(newOwner);\n }\n\n /**\n * @dev The new owner accepts the ownership transfer.\n */\n function acceptOwnership() public virtual {\n address sender = _msgSender();\n require(pendingOwner() == sender, \"Ownable2Step: caller is not the new owner\");\n _transferOwnership(sender);\n }\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[49] private __gap;\n}\n" + }, + "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../utils/ContextUpgradeable.sol\";\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\n address private _owner;\n\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n /**\n * @dev Initializes the contract setting the deployer as the initial owner.\n */\n function __Ownable_init() internal onlyInitializing {\n __Ownable_init_unchained();\n }\n\n function __Ownable_init_unchained() internal onlyInitializing {\n _transferOwnership(_msgSender());\n }\n\n /**\n * @dev Throws if called by any account other than the owner.\n */\n modifier onlyOwner() {\n _checkOwner();\n _;\n }\n\n /**\n * @dev Returns the address of the current owner.\n */\n function owner() public view virtual returns (address) {\n return _owner;\n }\n\n /**\n * @dev Throws if the sender is not the owner.\n */\n function _checkOwner() internal view virtual {\n require(owner() == _msgSender(), \"Ownable: caller is not the owner\");\n }\n\n /**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby disabling any functionality that is only available to the owner.\n */\n function renounceOwnership() public virtual onlyOwner {\n _transferOwnership(address(0));\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public virtual onlyOwner {\n require(newOwner != address(0), \"Ownable: new owner is the zero address\");\n _transferOwnership(newOwner);\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Internal function without access restriction.\n */\n function _transferOwnership(address newOwner) internal virtual {\n address oldOwner = _owner;\n _owner = newOwner;\n emit OwnershipTransferred(oldOwner, newOwner);\n }\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[49] private __gap;\n}\n" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\n\npragma solidity ^0.8.2;\n\nimport \"../../utils/AddressUpgradeable.sol\";\n\n/**\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n *\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n * reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n * case an upgrade adds a module that needs to be initialized.\n *\n * For example:\n *\n * [.hljs-theme-light.nopadding]\n * ```solidity\n * contract MyToken is ERC20Upgradeable {\n * function initialize() initializer public {\n * __ERC20_init(\"MyToken\", \"MTK\");\n * }\n * }\n *\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n * function initializeV2() reinitializer(2) public {\n * __ERC20Permit_init(\"MyToken\");\n * }\n * }\n * ```\n *\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n *\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n *\n * [CAUTION]\n * ====\n * Avoid leaving a contract uninitialized.\n *\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n *\n * [.hljs-theme-light.nopadding]\n * ```\n * /// @custom:oz-upgrades-unsafe-allow constructor\n * constructor() {\n * _disableInitializers();\n * }\n * ```\n * ====\n */\nabstract contract Initializable {\n /**\n * @dev Indicates that the contract has been initialized.\n * @custom:oz-retyped-from bool\n */\n uint8 private _initialized;\n\n /**\n * @dev Indicates that the contract is in the process of being initialized.\n */\n bool private _initializing;\n\n /**\n * @dev Triggered when the contract has been initialized or reinitialized.\n */\n event Initialized(uint8 version);\n\n /**\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n * `onlyInitializing` functions can be used to initialize parent contracts.\n *\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\n * constructor.\n *\n * Emits an {Initialized} event.\n */\n modifier initializer() {\n bool isTopLevelCall = !_initializing;\n require(\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\n \"Initializable: contract is already initialized\"\n );\n _initialized = 1;\n if (isTopLevelCall) {\n _initializing = true;\n }\n _;\n if (isTopLevelCall) {\n _initializing = false;\n emit Initialized(1);\n }\n }\n\n /**\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n * used to initialize parent contracts.\n *\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\n * are added through upgrades and that require initialization.\n *\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n * cannot be nested. If one is invoked in the context of another, execution will revert.\n *\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n * a contract, executing them in the right order is up to the developer or operator.\n *\n * WARNING: setting the version to 255 will prevent any future reinitialization.\n *\n * Emits an {Initialized} event.\n */\n modifier reinitializer(uint8 version) {\n require(!_initializing && _initialized < version, \"Initializable: contract is already initialized\");\n _initialized = version;\n _initializing = true;\n _;\n _initializing = false;\n emit Initialized(version);\n }\n\n /**\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\n */\n modifier onlyInitializing() {\n require(_initializing, \"Initializable: contract is not initializing\");\n _;\n }\n\n /**\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n * through proxies.\n *\n * Emits an {Initialized} event the first time it is successfully executed.\n */\n function _disableInitializers() internal virtual {\n require(!_initializing, \"Initializable: contract is initializing\");\n if (_initialized != type(uint8).max) {\n _initialized = type(uint8).max;\n emit Initialized(type(uint8).max);\n }\n }\n\n /**\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\n */\n function _getInitializedVersion() internal view returns (uint8) {\n return _initialized;\n }\n\n /**\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\n */\n function _isInitializing() internal view returns (bool) {\n return _initializing;\n }\n}\n" + }, + "@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../utils/ContextUpgradeable.sol\";\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Contract module which allows children to implement an emergency stop\n * mechanism that can be triggered by an authorized account.\n *\n * This module is used through inheritance. It will make available the\n * modifiers `whenNotPaused` and `whenPaused`, which can be applied to\n * the functions of your contract. Note that they will not be pausable by\n * simply including this module, only once the modifiers are put in place.\n */\nabstract contract PausableUpgradeable is Initializable, ContextUpgradeable {\n /**\n * @dev Emitted when the pause is triggered by `account`.\n */\n event Paused(address account);\n\n /**\n * @dev Emitted when the pause is lifted by `account`.\n */\n event Unpaused(address account);\n\n bool private _paused;\n\n /**\n * @dev Initializes the contract in unpaused state.\n */\n function __Pausable_init() internal onlyInitializing {\n __Pausable_init_unchained();\n }\n\n function __Pausable_init_unchained() internal onlyInitializing {\n _paused = false;\n }\n\n /**\n * @dev Modifier to make a function callable only when the contract is not paused.\n *\n * Requirements:\n *\n * - The contract must not be paused.\n */\n modifier whenNotPaused() {\n _requireNotPaused();\n _;\n }\n\n /**\n * @dev Modifier to make a function callable only when the contract is paused.\n *\n * Requirements:\n *\n * - The contract must be paused.\n */\n modifier whenPaused() {\n _requirePaused();\n _;\n }\n\n /**\n * @dev Returns true if the contract is paused, and false otherwise.\n */\n function paused() public view virtual returns (bool) {\n return _paused;\n }\n\n /**\n * @dev Throws if the contract is paused.\n */\n function _requireNotPaused() internal view virtual {\n require(!paused(), \"Pausable: paused\");\n }\n\n /**\n * @dev Throws if the contract is not paused.\n */\n function _requirePaused() internal view virtual {\n require(paused(), \"Pausable: not paused\");\n }\n\n /**\n * @dev Triggers stopped state.\n *\n * Requirements:\n *\n * - The contract must not be paused.\n */\n function _pause() internal virtual whenNotPaused {\n _paused = true;\n emit Paused(_msgSender());\n }\n\n /**\n * @dev Returns to normal state.\n *\n * Requirements:\n *\n * - The contract must be paused.\n */\n function _unpause() internal virtual whenPaused {\n _paused = false;\n emit Unpaused(_msgSender());\n }\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[49] private __gap;\n}\n" + }, + "@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\n\npragma solidity ^0.8.1;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary AddressUpgradeable {\n /**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n * ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a contract.\n *\n * Among others, `isContract` will return false for the following\n * types of addresses:\n *\n * - an externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a contract lived, but was destroyed\n *\n * Furthermore, `isContract` will also return true if the target contract within\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n * which only has an effect at the end of a transaction.\n * ====\n *\n * [IMPORTANT]\n * ====\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\n *\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n * constructor.\n * ====\n */\n function isContract(address account) internal view returns (bool) {\n // This method relies on extcodesize/address.code.length, which returns 0\n // for contracts in construction, since the code is only stored at the end\n // of the constructor execution.\n\n return account.code.length > 0;\n }\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n (bool success, ) = recipient.call{value: amount}(\"\");\n require(success, \"Address: unable to send value, recipient may have reverted\");\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason, it is bubbled up by this\n * function (like regular Solidity function calls).\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n *\n * _Available since v3.1._\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, \"Address: low-level call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n * `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n * with `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value,\n string memory errorMessage\n ) internal returns (bytes memory) {\n require(address(this).balance >= value, \"Address: insufficient balance for call\");\n (bool success, bytes memory returndata) = target.call{value: value}(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n return functionStaticCall(target, data, \"Address: low-level static call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n (bool success, bytes memory returndata) = target.staticcall(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n *\n * _Available since v4.8._\n */\n function verifyCallResultFromTarget(\n address target,\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n if (success) {\n if (returndata.length == 0) {\n // only check isContract if the call was successful and the return data is empty\n // otherwise we already know that it was a contract\n require(isContract(target), \"Address: call to non-contract\");\n }\n return returndata;\n } else {\n _revert(returndata, errorMessage);\n }\n }\n\n /**\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n * revert reason or using the provided one.\n *\n * _Available since v4.3._\n */\n function verifyCallResult(\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal pure returns (bytes memory) {\n if (success) {\n return returndata;\n } else {\n _revert(returndata, errorMessage);\n }\n }\n\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n /// @solidity memory-safe-assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(errorMessage);\n }\n }\n}\n" + }, + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\n\npragma solidity ^0.8.0;\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract ContextUpgradeable is Initializable {\n function __Context_init() internal onlyInitializing {\n }\n\n function __Context_init_unchained() internal onlyInitializing {\n }\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n\n function _contextSuffixLength() internal view virtual returns (uint256) {\n return 0;\n }\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[50] private __gap;\n}\n" + }, + "@openzeppelin/contracts/access/IAccessControl.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev External interface of AccessControl declared to support ERC165 detection.\n */\ninterface IAccessControl {\n /**\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n *\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n * {RoleAdminChanged} not being emitted signaling this.\n *\n * _Available since v3.1._\n */\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\n\n /**\n * @dev Emitted when `account` is granted `role`.\n *\n * `sender` is the account that originated the contract call, an admin role\n * bearer except when using {AccessControl-_setupRole}.\n */\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\n\n /**\n * @dev Emitted when `account` is revoked `role`.\n *\n * `sender` is the account that originated the contract call:\n * - if using `revokeRole`, it is the admin role bearer\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\n */\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\n\n /**\n * @dev Returns `true` if `account` has been granted `role`.\n */\n function hasRole(bytes32 role, address account) external view returns (bool);\n\n /**\n * @dev Returns the admin role that controls `role`. See {grantRole} and\n * {revokeRole}.\n *\n * To change a role's admin, use {AccessControl-_setRoleAdmin}.\n */\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\n\n /**\n * @dev Grants `role` to `account`.\n *\n * If `account` had not been already granted `role`, emits a {RoleGranted}\n * event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function grantRole(bytes32 role, address account) external;\n\n /**\n * @dev Revokes `role` from `account`.\n *\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function revokeRole(bytes32 role, address account) external;\n\n /**\n * @dev Revokes `role` from the calling account.\n *\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\n * purpose is to provide a mechanism for accounts to lose their privileges\n * if they are compromised (such as when a trusted device is misplaced).\n *\n * If the calling account had been granted `role`, emits a {RoleRevoked}\n * event.\n *\n * Requirements:\n *\n * - the caller must be `account`.\n */\n function renounceRole(bytes32 role, address account) external;\n}\n" + }, + "@openzeppelin/contracts/access/Ownable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable is Context {\n address private _owner;\n\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n /**\n * @dev Initializes the contract setting the deployer as the initial owner.\n */\n constructor() {\n _transferOwnership(_msgSender());\n }\n\n /**\n * @dev Throws if called by any account other than the owner.\n */\n modifier onlyOwner() {\n _checkOwner();\n _;\n }\n\n /**\n * @dev Returns the address of the current owner.\n */\n function owner() public view virtual returns (address) {\n return _owner;\n }\n\n /**\n * @dev Throws if the sender is not the owner.\n */\n function _checkOwner() internal view virtual {\n require(owner() == _msgSender(), \"Ownable: caller is not the owner\");\n }\n\n /**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby disabling any functionality that is only available to the owner.\n */\n function renounceOwnership() public virtual onlyOwner {\n _transferOwnership(address(0));\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public virtual onlyOwner {\n require(newOwner != address(0), \"Ownable: new owner is the zero address\");\n _transferOwnership(newOwner);\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Internal function without access restriction.\n */\n function _transferOwnership(address newOwner) internal virtual {\n address oldOwner = _owner;\n _owner = newOwner;\n emit OwnershipTransferred(oldOwner, newOwner);\n }\n}\n" + }, + "@openzeppelin/contracts/token/ERC20/ERC20.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC20.sol\";\nimport \"./extensions/IERC20Metadata.sol\";\nimport \"../../utils/Context.sol\";\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n * For a generic mechanism see {ERC20PresetMinterPauser}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * The default value of {decimals} is 18. To change this, you should override\n * this function so it returns a different value.\n *\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\n * instead returning `false` on failure. This behavior is nonetheless\n * conventional and does not conflict with the expectations of ERC20\n * applications.\n *\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n * This allows applications to reconstruct the allowance for all accounts just\n * by listening to said events. Other implementations of the EIP may not emit\n * these events, as it isn't required by the specification.\n *\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n * functions have been added to mitigate the well-known issues around setting\n * allowances. See {IERC20-approve}.\n */\ncontract ERC20 is Context, IERC20, IERC20Metadata {\n mapping(address => uint256) private _balances;\n\n mapping(address => mapping(address => uint256)) private _allowances;\n\n uint256 private _totalSupply;\n\n string private _name;\n string private _symbol;\n\n /**\n * @dev Sets the values for {name} and {symbol}.\n *\n * All two of these values are immutable: they can only be set once during\n * construction.\n */\n constructor(string memory name_, string memory symbol_) {\n _name = name_;\n _symbol = symbol_;\n }\n\n /**\n * @dev Returns the name of the token.\n */\n function name() public view virtual override returns (string memory) {\n return _name;\n }\n\n /**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */\n function symbol() public view virtual override returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev Returns the number of decimals used to get its user representation.\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\n * be displayed to a user as `5.05` (`505 / 10 ** 2`).\n *\n * Tokens usually opt for a value of 18, imitating the relationship between\n * Ether and Wei. This is the default value returned by this function, unless\n * it's overridden.\n *\n * NOTE: This information is only used for _display_ purposes: it in\n * no way affects any of the arithmetic of the contract, including\n * {IERC20-balanceOf} and {IERC20-transfer}.\n */\n function decimals() public view virtual override returns (uint8) {\n return 18;\n }\n\n /**\n * @dev See {IERC20-totalSupply}.\n */\n function totalSupply() public view virtual override returns (uint256) {\n return _totalSupply;\n }\n\n /**\n * @dev See {IERC20-balanceOf}.\n */\n function balanceOf(address account) public view virtual override returns (uint256) {\n return _balances[account];\n }\n\n /**\n * @dev See {IERC20-transfer}.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - the caller must have a balance of at least `amount`.\n */\n function transfer(address to, uint256 amount) public virtual override returns (bool) {\n address owner = _msgSender();\n _transfer(owner, to, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-allowance}.\n */\n function allowance(address owner, address spender) public view virtual override returns (uint256) {\n return _allowances[owner][spender];\n }\n\n /**\n * @dev See {IERC20-approve}.\n *\n * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on\n * `transferFrom`. This is semantically equivalent to an infinite approval.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function approve(address spender, uint256 amount) public virtual override returns (bool) {\n address owner = _msgSender();\n _approve(owner, spender, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-transferFrom}.\n *\n * Emits an {Approval} event indicating the updated allowance. This is not\n * required by the EIP. See the note at the beginning of {ERC20}.\n *\n * NOTE: Does not update the allowance if the current allowance\n * is the maximum `uint256`.\n *\n * Requirements:\n *\n * - `from` and `to` cannot be the zero address.\n * - `from` must have a balance of at least `amount`.\n * - the caller must have allowance for ``from``'s tokens of at least\n * `amount`.\n */\n function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {\n address spender = _msgSender();\n _spendAllowance(from, spender, amount);\n _transfer(from, to, amount);\n return true;\n }\n\n /**\n * @dev Atomically increases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\n address owner = _msgSender();\n _approve(owner, spender, allowance(owner, spender) + addedValue);\n return true;\n }\n\n /**\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `spender` must have allowance for the caller of at least\n * `subtractedValue`.\n */\n function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\n address owner = _msgSender();\n uint256 currentAllowance = allowance(owner, spender);\n require(currentAllowance >= subtractedValue, \"ERC20: decreased allowance below zero\");\n unchecked {\n _approve(owner, spender, currentAllowance - subtractedValue);\n }\n\n return true;\n }\n\n /**\n * @dev Moves `amount` of tokens from `from` to `to`.\n *\n * This internal function is equivalent to {transfer}, and can be used to\n * e.g. implement automatic token fees, slashing mechanisms, etc.\n *\n * Emits a {Transfer} event.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `from` must have a balance of at least `amount`.\n */\n function _transfer(address from, address to, uint256 amount) internal virtual {\n require(from != address(0), \"ERC20: transfer from the zero address\");\n require(to != address(0), \"ERC20: transfer to the zero address\");\n\n _beforeTokenTransfer(from, to, amount);\n\n uint256 fromBalance = _balances[from];\n require(fromBalance >= amount, \"ERC20: transfer amount exceeds balance\");\n unchecked {\n _balances[from] = fromBalance - amount;\n // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by\n // decrementing then incrementing.\n _balances[to] += amount;\n }\n\n emit Transfer(from, to, amount);\n\n _afterTokenTransfer(from, to, amount);\n }\n\n /** @dev Creates `amount` tokens and assigns them to `account`, increasing\n * the total supply.\n *\n * Emits a {Transfer} event with `from` set to the zero address.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n */\n function _mint(address account, uint256 amount) internal virtual {\n require(account != address(0), \"ERC20: mint to the zero address\");\n\n _beforeTokenTransfer(address(0), account, amount);\n\n _totalSupply += amount;\n unchecked {\n // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.\n _balances[account] += amount;\n }\n emit Transfer(address(0), account, amount);\n\n _afterTokenTransfer(address(0), account, amount);\n }\n\n /**\n * @dev Destroys `amount` tokens from `account`, reducing the\n * total supply.\n *\n * Emits a {Transfer} event with `to` set to the zero address.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n * - `account` must have at least `amount` tokens.\n */\n function _burn(address account, uint256 amount) internal virtual {\n require(account != address(0), \"ERC20: burn from the zero address\");\n\n _beforeTokenTransfer(account, address(0), amount);\n\n uint256 accountBalance = _balances[account];\n require(accountBalance >= amount, \"ERC20: burn amount exceeds balance\");\n unchecked {\n _balances[account] = accountBalance - amount;\n // Overflow not possible: amount <= accountBalance <= totalSupply.\n _totalSupply -= amount;\n }\n\n emit Transfer(account, address(0), amount);\n\n _afterTokenTransfer(account, address(0), amount);\n }\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n *\n * This internal function is equivalent to `approve`, and can be used to\n * e.g. set automatic allowances for certain subsystems, etc.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `owner` cannot be the zero address.\n * - `spender` cannot be the zero address.\n */\n function _approve(address owner, address spender, uint256 amount) internal virtual {\n require(owner != address(0), \"ERC20: approve from the zero address\");\n require(spender != address(0), \"ERC20: approve to the zero address\");\n\n _allowances[owner][spender] = amount;\n emit Approval(owner, spender, amount);\n }\n\n /**\n * @dev Updates `owner` s allowance for `spender` based on spent `amount`.\n *\n * Does not update the allowance amount in case of infinite allowance.\n * Revert if not enough allowance is available.\n *\n * Might emit an {Approval} event.\n */\n function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {\n uint256 currentAllowance = allowance(owner, spender);\n if (currentAllowance != type(uint256).max) {\n require(currentAllowance >= amount, \"ERC20: insufficient allowance\");\n unchecked {\n _approve(owner, spender, currentAllowance - amount);\n }\n }\n }\n\n /**\n * @dev Hook that is called before any transfer of tokens. This includes\n * minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * will be transferred to `to`.\n * - when `from` is zero, `amount` tokens will be minted for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}\n\n /**\n * @dev Hook that is called after any transfer of tokens. This includes\n * minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * has been transferred to `to`.\n * - when `from` is zero, `amount` tokens have been minted for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens have been burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}\n}\n" + }, + "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC20.sol\";\n\n/**\n * @dev Interface for the optional metadata functions from the ERC20 standard.\n *\n * _Available since v4.1._\n */\ninterface IERC20Metadata is IERC20 {\n /**\n * @dev Returns the name of the token.\n */\n function name() external view returns (string memory);\n\n /**\n * @dev Returns the symbol of the token.\n */\n function symbol() external view returns (string memory);\n\n /**\n * @dev Returns the decimals places of the token.\n */\n function decimals() external view returns (uint8);\n}\n" + }, + "@openzeppelin/contracts/token/ERC20/IERC20.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n /**\n * @dev Returns the amount of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address to, uint256 amount) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 amount) external returns (bool);\n\n /**\n * @dev Moves `amount` tokens from `from` to `to` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\n}\n" + }, + "@openzeppelin/contracts/utils/Context.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n\n function _contextSuffixLength() internal view virtual returns (uint256) {\n return 0;\n }\n}\n" + }, + "@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol\";\n\nimport \"./IAccessControlManagerV8.sol\";\n\n/**\n * @title AccessControlledV8\n * @author Venus\n * @notice This contract is helper between access control manager and actual contract. This contract further inherited by other contract (using solidity 0.8.13)\n * to integrate access controlled mechanism. It provides initialise methods and verifying access methods.\n */\nabstract contract AccessControlledV8 is Initializable, Ownable2StepUpgradeable {\n /// @notice Access control manager contract\n IAccessControlManagerV8 private _accessControlManager;\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[49] private __gap;\n\n /// @notice Emitted when access control manager contract address is changed\n event NewAccessControlManager(address oldAccessControlManager, address newAccessControlManager);\n\n /// @notice Thrown when the action is prohibited by AccessControlManager\n error Unauthorized(address sender, address calledContract, string methodSignature);\n\n function __AccessControlled_init(address accessControlManager_) internal onlyInitializing {\n __Ownable2Step_init();\n __AccessControlled_init_unchained(accessControlManager_);\n }\n\n function __AccessControlled_init_unchained(address accessControlManager_) internal onlyInitializing {\n _setAccessControlManager(accessControlManager_);\n }\n\n /**\n * @notice Sets the address of AccessControlManager\n * @dev Admin function to set address of AccessControlManager\n * @param accessControlManager_ The new address of the AccessControlManager\n * @custom:event Emits NewAccessControlManager event\n * @custom:access Only Governance\n */\n function setAccessControlManager(address accessControlManager_) external onlyOwner {\n _setAccessControlManager(accessControlManager_);\n }\n\n /**\n * @notice Returns the address of the access control manager contract\n */\n function accessControlManager() external view returns (IAccessControlManagerV8) {\n return _accessControlManager;\n }\n\n /**\n * @dev Internal function to set address of AccessControlManager\n * @param accessControlManager_ The new address of the AccessControlManager\n */\n function _setAccessControlManager(address accessControlManager_) internal {\n require(address(accessControlManager_) != address(0), \"invalid acess control manager address\");\n address oldAccessControlManager = address(_accessControlManager);\n _accessControlManager = IAccessControlManagerV8(accessControlManager_);\n emit NewAccessControlManager(oldAccessControlManager, accessControlManager_);\n }\n\n /**\n * @notice Reverts if the call is not allowed by AccessControlManager\n * @param signature Method signature\n */\n function _checkAccessAllowed(string memory signature) internal view {\n bool isAllowedToCall = _accessControlManager.isAllowedToCall(msg.sender, signature);\n\n if (!isAllowedToCall) {\n revert Unauthorized(msg.sender, address(this), signature);\n }\n }\n}\n" + }, + "@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\nimport \"@openzeppelin/contracts/access/IAccessControl.sol\";\n\n/**\n * @title IAccessControlManagerV8\n * @author Venus\n * @notice Interface implemented by the `AccessControlManagerV8` contract.\n */\ninterface IAccessControlManagerV8 is IAccessControl {\n function giveCallPermission(address contractAddress, string calldata functionSig, address accountToPermit) external;\n\n function revokeCallPermission(\n address contractAddress,\n string calldata functionSig,\n address accountToRevoke\n ) external;\n\n function isAllowedToCall(address account, string calldata functionSig) external view returns (bool);\n\n function hasPermission(\n address account,\n address contractAddress,\n string calldata functionSig\n ) external view returns (bool);\n}\n" + }, + "@venusprotocol/solidity-utilities/contracts/constants.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\n/// @dev Base unit for computations, usually used in scaling (multiplications, divisions)\nuint256 constant EXP_SCALE = 1e18;\n\n/// @dev A unit (literal one) in EXP_SCALE, usually used in additions/subtractions\nuint256 constant MANTISSA_ONE = EXP_SCALE;\n\n/// @dev The approximate number of seconds per year\nuint256 constant SECONDS_PER_YEAR = 31_536_000;\n" + }, + "@venusprotocol/solidity-utilities/contracts/validators.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\n/// @notice Thrown if the supplied address is a zero address where it is not allowed\nerror ZeroAddressNotAllowed();\n\n/// @notice Thrown if the supplied value is 0 where it is not allowed\nerror ZeroValueNotAllowed();\n\n/// @notice Checks if the provided address is nonzero, reverts otherwise\n/// @param address_ Address to check\n/// @custom:error ZeroAddressNotAllowed is thrown if the provided address is a zero address\nfunction ensureNonzeroAddress(address address_) pure {\n if (address_ == address(0)) {\n revert ZeroAddressNotAllowed();\n }\n}\n\n/// @notice Checks if the provided value is nonzero, reverts otherwise\n/// @param value_ Value to check\n/// @custom:error ZeroValueNotAllowed is thrown if the provided value is 0\nfunction ensureNonzeroValue(uint256 value_) pure {\n if (value_ == 0) {\n revert ZeroValueNotAllowed();\n }\n}\n" + }, + "contracts/hardhat-dependency-compiler/@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol": { + "content": "// SPDX-License-Identifier: UNLICENSED\npragma solidity >0.0.0;\nimport '@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol';\n" + }, + "contracts/hardhat-dependency-compiler/hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/ProxyAdmin.sol": { + "content": "// SPDX-License-Identifier: UNLICENSED\npragma solidity >0.0.0;\nimport 'hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/ProxyAdmin.sol';\n" + }, + "contracts/hardhat-dependency-compiler/hardhat-deploy/solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol": { + "content": "// SPDX-License-Identifier: UNLICENSED\npragma solidity >0.0.0;\nimport 'hardhat-deploy/solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol';\n" + }, + "contracts/interfaces/FeedRegistryInterface.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\ninterface FeedRegistryInterface {\n function latestRoundDataByName(\n string memory base,\n string memory quote\n )\n external\n view\n returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound);\n\n function decimalsByName(string memory base, string memory quote) external view returns (uint8);\n}\n" + }, + "contracts/interfaces/IAccountant.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface IAccountant {\n function getRateSafe() external view returns (uint256);\n}\n" + }, + "contracts/interfaces/IAnkrBNB.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface IAnkrBNB {\n function sharesToBonds(uint256 amount) external view returns (uint256);\n function decimals() external view returns (uint8);\n}\n" + }, + "contracts/interfaces/IAsBNB.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface IAsBNB {\n function minter() external view returns (address);\n function decimals() external view returns (uint8);\n}\n" + }, + "contracts/interfaces/IAsBNBMinter.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface IAsBNBMinter {\n function convertToTokens(uint256 amount) external view returns (uint256);\n}\n" + }, + "contracts/interfaces/ICappedOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface ICappedOracle {\n function updateSnapshot() external;\n}\n" + }, + "contracts/interfaces/IERC4626.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface IERC4626 {\n function convertToAssets(uint256 shares) external view returns (uint256);\n function decimals() external view returns (uint8);\n}\n" + }, + "contracts/interfaces/IEtherFiLiquidityPool.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface IEtherFiLiquidityPool {\n function amountForShare(uint256 _share) external view returns (uint256);\n}\n" + }, + "contracts/interfaces/IPendlePtOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface IPendlePtOracle {\n function getPtToAssetRate(address market, uint32 duration) external view returns (uint256);\n\n function getPtToSyRate(address market, uint32 duration) external view returns (uint256);\n\n function getOracleState(\n address market,\n uint32 duration\n )\n external\n view\n returns (bool increaseCardinalityRequired, uint16 cardinalityRequired, bool oldestObservationSatisfied);\n}\n" + }, + "contracts/interfaces/IPStakePool.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface IPStakePool {\n struct Data {\n uint256 totalWei;\n uint256 poolTokenSupply;\n }\n\n /**\n * @dev The current exchange rate for converting stkBNB to BNB.\n */\n function exchangeRate() external view returns (Data memory);\n}\n" + }, + "contracts/interfaces/ISFrax.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface ISFrax {\n function convertToAssets(uint256 shares) external view returns (uint256);\n function decimals() external view returns (uint8);\n}\n" + }, + "contracts/interfaces/ISfrxEthFraxOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface ISfrxEthFraxOracle {\n function getPrices() external view returns (bool _isbadData, uint256 _priceLow, uint256 _priceHigh);\n}\n" + }, + "contracts/interfaces/IStaderStakeManager.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface IStaderStakeManager {\n function convertBnbXToBnb(uint256 _amount) external view returns (uint256);\n}\n" + }, + "contracts/interfaces/IStETH.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\ninterface IStETH {\n function getPooledEthByShares(uint256 _sharesAmount) external view returns (uint256);\n function decimals() external view returns (uint8);\n}\n" + }, + "contracts/interfaces/ISynclubStakeManager.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface ISynclubStakeManager {\n function convertSnBnbToBnb(uint256 _amount) external view returns (uint256);\n}\n" + }, + "contracts/interfaces/IWBETH.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface IWBETH {\n function exchangeRate() external view returns (uint256);\n function decimals() external view returns (uint8);\n}\n" + }, + "contracts/interfaces/IZkETH.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\ninterface IZkETH {\n function LSTPerToken() external view returns (uint256);\n function decimals() external view returns (uint8);\n}\n" + }, + "contracts/interfaces/OracleInterface.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\ninterface OracleInterface {\n function getPrice(address asset) external view returns (uint256);\n}\n\ninterface ResilientOracleInterface is OracleInterface {\n function updatePrice(address vToken) external;\n\n function updateAssetPrice(address asset) external;\n\n function getUnderlyingPrice(address vToken) external view returns (uint256);\n}\n\ninterface BoundValidatorInterface {\n function validatePriceWithAnchorPrice(\n address asset,\n uint256 reporterPrice,\n uint256 anchorPrice\n ) external view returns (bool);\n}\n" + }, + "contracts/interfaces/PublicResolverInterface.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\n// SPDX-FileCopyrightText: 2022 Venus\npragma solidity ^0.8.25;\n\ninterface PublicResolverInterface {\n function addr(bytes32 node) external view returns (address payable);\n}\n" + }, + "contracts/interfaces/SIDRegistryInterface.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\n// SPDX-FileCopyrightText: 2022 Venus\npragma solidity ^0.8.25;\n\ninterface SIDRegistryInterface {\n function resolver(bytes32 node) external view returns (address);\n}\n" + }, + "contracts/interfaces/VBep20Interface.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\nimport \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\";\n\ninterface VBep20Interface is IERC20Metadata {\n /**\n * @notice Underlying asset for this VToken\n */\n function underlying() external view returns (address);\n}\n" + }, + "contracts/lib/Transient.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\nlibrary Transient {\n /**\n * @notice Cache the asset price into transient storage\n * @param key address of the asset\n * @param value asset price\n */\n function cachePrice(bytes32 cacheSlot, address key, uint256 value) internal {\n bytes32 slot = keccak256(abi.encode(cacheSlot, key));\n assembly (\"memory-safe\") {\n tstore(slot, value)\n }\n }\n\n /**\n * @notice Read cached price from transient storage\n * @param key address of the asset\n * @return value cached asset price\n */\n function readCachedPrice(bytes32 cacheSlot, address key) internal view returns (uint256 value) {\n bytes32 slot = keccak256(abi.encode(cacheSlot, key));\n assembly (\"memory-safe\") {\n value := tload(slot)\n }\n }\n}\n" + }, + "contracts/oracles/AnkrBNBOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { IAnkrBNB } from \"../interfaces/IAnkrBNB.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\nimport { EXP_SCALE } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\n\n/**\n * @title AnkrBNBOracle\n * @author Venus\n * @notice This oracle fetches the price of ankrBNB asset\n */\ncontract AnkrBNBOracle is CorrelatedTokenOracle {\n /// @notice This is used as token address of BNB on BSC\n address public constant NATIVE_TOKEN_ADDR = 0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB;\n\n /// @notice Constructor for the implementation contract.\n constructor(\n address ankrBNB,\n address resilientOracle,\n uint256 annualGrowthRate,\n uint256 _snapshotInterval,\n uint256 initialSnapshotMaxExchangeRate,\n uint256 initialSnapshotTimestamp,\n address accessControlManager,\n uint256 _snapshotGap\n )\n CorrelatedTokenOracle(\n ankrBNB,\n NATIVE_TOKEN_ADDR,\n resilientOracle,\n annualGrowthRate,\n _snapshotInterval,\n initialSnapshotMaxExchangeRate,\n initialSnapshotTimestamp,\n accessControlManager,\n _snapshotGap\n )\n {}\n\n /**\n * @notice Fetches the amount of BNB for 1 ankrBNB\n * @return amount The amount of BNB for ankrBNB\n */\n function getUnderlyingAmount() public view override returns (uint256) {\n return IAnkrBNB(CORRELATED_TOKEN).sharesToBonds(EXP_SCALE);\n }\n}\n" + }, + "contracts/oracles/AsBNBOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { IAsBNB } from \"../interfaces/IAsBNB.sol\";\nimport { IAsBNBMinter } from \"../interfaces/IAsBNBMinter.sol\";\nimport { EXP_SCALE } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\n\n/**\n * @title asBNBOracle\n * @author Venus\n * @notice This oracle fetches the price of asBNB asset\n */\ncontract AsBNBOracle is CorrelatedTokenOracle {\n /// @notice Constructor for the implementation contract.\n constructor(\n address asBNB,\n address slisBNB,\n address resilientOracle,\n uint256 annualGrowthRate,\n uint256 _snapshotInterval,\n uint256 initialSnapshotMaxExchangeRate,\n uint256 initialSnapshotTimestamp,\n address accessControlManager,\n uint256 _snapshotGap\n )\n CorrelatedTokenOracle(\n asBNB,\n slisBNB,\n resilientOracle,\n annualGrowthRate,\n _snapshotInterval,\n initialSnapshotMaxExchangeRate,\n initialSnapshotTimestamp,\n accessControlManager,\n _snapshotGap\n )\n {}\n\n /**\n * @notice Fetches the amount of slisBNB for 1 asBNB\n * @return price The amount of slisBNB for asBNB\n */\n function getUnderlyingAmount() public view override returns (uint256) {\n IAsBNBMinter minter = IAsBNBMinter(IAsBNB(CORRELATED_TOKEN).minter());\n return minter.convertToTokens(EXP_SCALE);\n }\n}\n" + }, + "contracts/oracles/BinanceOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\";\nimport \"../interfaces/VBep20Interface.sol\";\nimport \"../interfaces/SIDRegistryInterface.sol\";\nimport \"../interfaces/FeedRegistryInterface.sol\";\nimport \"../interfaces/PublicResolverInterface.sol\";\nimport \"../interfaces/OracleInterface.sol\";\nimport \"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol\";\nimport \"../interfaces/OracleInterface.sol\";\n\n/**\n * @title BinanceOracle\n * @author Venus\n * @notice This oracle fetches price of assets from Binance.\n */\ncontract BinanceOracle is AccessControlledV8, OracleInterface {\n /// @notice Used to fetch feed registry address.\n address public sidRegistryAddress;\n\n /// @notice Set this as asset address for BNB. This is the underlying address for vBNB\n address public constant BNB_ADDR = 0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB;\n\n /// @notice Max stale period configuration for assets\n mapping(string => uint256) public maxStalePeriod;\n\n /// @notice Override symbols to be compatible with Binance feed registry\n mapping(string => string) public symbols;\n\n /// @notice Used to fetch price of assets used directly when space ID is not supported by current chain.\n address public feedRegistryAddress;\n\n /// @notice Emits when asset stale period is updated.\n event MaxStalePeriodAdded(string indexed asset, uint256 maxStalePeriod);\n\n /// @notice Emits when symbol of the asset is updated.\n event SymbolOverridden(string indexed symbol, string overriddenSymbol);\n\n /// @notice Emits when address of feed registry is updated.\n event FeedRegistryUpdated(address indexed oldFeedRegistry, address indexed newFeedRegistry);\n\n /**\n * @notice Checks whether an address is null or not\n */\n modifier notNullAddress(address someone) {\n if (someone == address(0)) revert(\"can't be zero address\");\n _;\n }\n\n /// @notice Constructor for the implementation contract.\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n\n /**\n * @notice Sets the contracts required to fetch prices\n * @param _sidRegistryAddress Address of SID registry\n * @param _acm Address of the access control manager contract\n */\n function initialize(address _sidRegistryAddress, address _acm) external initializer {\n sidRegistryAddress = _sidRegistryAddress;\n __AccessControlled_init(_acm);\n }\n\n /**\n * @notice Used to set the max stale period of an asset\n * @param symbol The symbol of the asset\n * @param _maxStalePeriod The max stake period\n */\n function setMaxStalePeriod(string memory symbol, uint256 _maxStalePeriod) external {\n _checkAccessAllowed(\"setMaxStalePeriod(string,uint256)\");\n if (_maxStalePeriod == 0) revert(\"stale period can't be zero\");\n if (bytes(symbol).length == 0) revert(\"symbol cannot be empty\");\n\n maxStalePeriod[symbol] = _maxStalePeriod;\n emit MaxStalePeriodAdded(symbol, _maxStalePeriod);\n }\n\n /**\n * @notice Used to override a symbol when fetching price\n * @param symbol The symbol to override\n * @param overrideSymbol The symbol after override\n */\n function setSymbolOverride(string calldata symbol, string calldata overrideSymbol) external {\n _checkAccessAllowed(\"setSymbolOverride(string,string)\");\n if (bytes(symbol).length == 0) revert(\"symbol cannot be empty\");\n\n symbols[symbol] = overrideSymbol;\n emit SymbolOverridden(symbol, overrideSymbol);\n }\n\n /**\n * @notice Used to set feed registry address when current chain does not support space ID.\n * @param newfeedRegistryAddress Address of new feed registry.\n */\n function setFeedRegistryAddress(\n address newfeedRegistryAddress\n ) external notNullAddress(newfeedRegistryAddress) onlyOwner {\n if (sidRegistryAddress != address(0)) revert(\"sidRegistryAddress must be zero\");\n emit FeedRegistryUpdated(feedRegistryAddress, newfeedRegistryAddress);\n feedRegistryAddress = newfeedRegistryAddress;\n }\n\n /**\n * @notice Uses Space ID to fetch the feed registry address\n * @return feedRegistryAddress Address of binance oracle feed registry.\n */\n function getFeedRegistryAddress() public view returns (address) {\n bytes32 nodeHash = 0x94fe3821e0768eb35012484db4df61890f9a6ca5bfa984ef8ff717e73139faff;\n\n SIDRegistryInterface sidRegistry = SIDRegistryInterface(sidRegistryAddress);\n address publicResolverAddress = sidRegistry.resolver(nodeHash);\n PublicResolverInterface publicResolver = PublicResolverInterface(publicResolverAddress);\n\n return publicResolver.addr(nodeHash);\n }\n\n /**\n * @notice Gets the price of a asset from the binance oracle\n * @param asset Address of the asset\n * @return Price in USD\n */\n function getPrice(address asset) public view returns (uint256) {\n string memory symbol;\n uint256 decimals;\n\n if (asset == BNB_ADDR) {\n symbol = \"BNB\";\n decimals = 18;\n } else {\n IERC20Metadata token = IERC20Metadata(asset);\n symbol = token.symbol();\n decimals = token.decimals();\n }\n\n string memory overrideSymbol = symbols[symbol];\n\n if (bytes(overrideSymbol).length != 0) {\n symbol = overrideSymbol;\n }\n\n return _getPrice(symbol, decimals);\n }\n\n function _getPrice(string memory symbol, uint256 decimals) internal view returns (uint256) {\n FeedRegistryInterface feedRegistry;\n\n if (sidRegistryAddress != address(0)) {\n // If sidRegistryAddress is available, fetch feedRegistryAddress from sidRegistry\n feedRegistry = FeedRegistryInterface(getFeedRegistryAddress());\n } else {\n // Use feedRegistry directly if sidRegistryAddress is not available\n feedRegistry = FeedRegistryInterface(feedRegistryAddress);\n }\n\n (, int256 answer, , uint256 updatedAt, ) = feedRegistry.latestRoundDataByName(symbol, \"USD\");\n if (answer <= 0) revert(\"invalid binance oracle price\");\n if (block.timestamp < updatedAt) revert(\"updatedAt exceeds block time\");\n\n uint256 deltaTime;\n unchecked {\n deltaTime = block.timestamp - updatedAt;\n }\n if (deltaTime > maxStalePeriod[symbol]) revert(\"binance oracle price expired\");\n\n uint256 decimalDelta = feedRegistry.decimalsByName(symbol, \"USD\");\n return (uint256(answer) * (10 ** (18 - decimalDelta))) * (10 ** (18 - decimals));\n }\n}\n" + }, + "contracts/oracles/BNBxOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { IStaderStakeManager } from \"../interfaces/IStaderStakeManager.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\nimport { EXP_SCALE } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\n\n/**\n * @title BNBxOracle\n * @author Venus\n * @notice This oracle fetches the price of BNBx asset\n */\ncontract BNBxOracle is CorrelatedTokenOracle {\n /// @notice This is used as token address of BNB on BSC\n address public constant NATIVE_TOKEN_ADDR = 0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB;\n\n /// @notice Address of StakeManager\n IStaderStakeManager public immutable STAKE_MANAGER;\n\n /// @notice Constructor for the implementation contract.\n constructor(\n address stakeManager,\n address bnbx,\n address resilientOracle,\n uint256 annualGrowthRate,\n uint256 _snapshotInterval,\n uint256 initialSnapshotMaxExchangeRate,\n uint256 initialSnapshotTimestamp,\n address accessControlManager,\n uint256 _snapshotGap\n )\n CorrelatedTokenOracle(\n bnbx,\n NATIVE_TOKEN_ADDR,\n resilientOracle,\n annualGrowthRate,\n _snapshotInterval,\n initialSnapshotMaxExchangeRate,\n initialSnapshotTimestamp,\n accessControlManager,\n _snapshotGap\n )\n {\n ensureNonzeroAddress(stakeManager);\n STAKE_MANAGER = IStaderStakeManager(stakeManager);\n }\n\n /**\n * @notice Fetches the amount of BNB for 1 BNBx\n * @return price The amount of BNB for BNBx\n */\n function getUnderlyingAmount() public view override returns (uint256) {\n return STAKE_MANAGER.convertBnbXToBnb(EXP_SCALE);\n }\n}\n" + }, + "contracts/oracles/BoundValidator.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"../interfaces/VBep20Interface.sol\";\nimport \"../interfaces/OracleInterface.sol\";\nimport \"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol\";\n\n/**\n * @title BoundValidator\n * @author Venus\n * @notice The BoundValidator contract is used to validate prices fetched from two different sources.\n * Each asset has an upper and lower bound ratio set in the config. In order for a price to be valid\n * it must fall within this range of the validator price.\n */\ncontract BoundValidator is AccessControlledV8, BoundValidatorInterface {\n struct ValidateConfig {\n /// @notice asset address\n address asset;\n /// @notice Upper bound of deviation between reported price and anchor price,\n /// beyond which the reported price will be invalidated\n uint256 upperBoundRatio;\n /// @notice Lower bound of deviation between reported price and anchor price,\n /// below which the reported price will be invalidated\n uint256 lowerBoundRatio;\n }\n\n /// @notice validation configs by asset\n mapping(address => ValidateConfig) public validateConfigs;\n\n /// @notice Emit this event when new validation configs are added\n event ValidateConfigAdded(address indexed asset, uint256 indexed upperBound, uint256 indexed lowerBound);\n\n /// @notice Constructor for the implementation contract. Sets immutable variables.\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n\n /**\n * @notice Initializes the owner of the contract\n * @param accessControlManager_ Address of the access control manager contract\n */\n function initialize(address accessControlManager_) external initializer {\n __AccessControlled_init(accessControlManager_);\n }\n\n /**\n * @notice Add multiple validation configs at the same time\n * @param configs Array of validation configs\n * @custom:access Only Governance\n * @custom:error Zero length error is thrown if length of the config array is 0\n * @custom:event Emits ValidateConfigAdded for each validation config that is successfully set\n */\n function setValidateConfigs(ValidateConfig[] memory configs) external {\n uint256 length = configs.length;\n if (length == 0) revert(\"invalid validate config length\");\n for (uint256 i; i < length; ++i) {\n setValidateConfig(configs[i]);\n }\n }\n\n /**\n * @notice Add a single validation config\n * @param config Validation config struct\n * @custom:access Only Governance\n * @custom:error Null address error is thrown if asset address is null\n * @custom:error Range error thrown if bound ratio is not positive\n * @custom:error Range error thrown if lower bound is greater than or equal to upper bound\n * @custom:event Emits ValidateConfigAdded when a validation config is successfully set\n */\n function setValidateConfig(ValidateConfig memory config) public {\n _checkAccessAllowed(\"setValidateConfig(ValidateConfig)\");\n\n if (config.asset == address(0)) revert(\"asset can't be zero address\");\n if (config.upperBoundRatio == 0 || config.lowerBoundRatio == 0) revert(\"bound must be positive\");\n if (config.upperBoundRatio <= config.lowerBoundRatio) revert(\"upper bound must be higher than lowner bound\");\n validateConfigs[config.asset] = config;\n emit ValidateConfigAdded(config.asset, config.upperBoundRatio, config.lowerBoundRatio);\n }\n\n /**\n * @notice Test reported asset price against anchor price\n * @param asset asset address\n * @param reportedPrice The price to be tested\n * @custom:error Missing error thrown if asset config is not set\n * @custom:error Price error thrown if anchor price is not valid\n */\n function validatePriceWithAnchorPrice(\n address asset,\n uint256 reportedPrice,\n uint256 anchorPrice\n ) public view virtual override returns (bool) {\n if (validateConfigs[asset].upperBoundRatio == 0) revert(\"validation config not exist\");\n if (anchorPrice == 0) revert(\"anchor price is not valid\");\n return _isWithinAnchor(asset, reportedPrice, anchorPrice);\n }\n\n /**\n * @notice Test whether the reported price is within the valid bounds\n * @param asset Asset address\n * @param reportedPrice The price to be tested\n * @param anchorPrice The reported price must be within the the valid bounds of this price\n */\n function _isWithinAnchor(address asset, uint256 reportedPrice, uint256 anchorPrice) private view returns (bool) {\n if (reportedPrice != 0) {\n // we need to multiply anchorPrice by 1e18 to make the ratio 18 decimals\n uint256 anchorRatio = (anchorPrice * 1e18) / reportedPrice;\n uint256 upperBoundAnchorRatio = validateConfigs[asset].upperBoundRatio;\n uint256 lowerBoundAnchorRatio = validateConfigs[asset].lowerBoundRatio;\n return anchorRatio <= upperBoundAnchorRatio && anchorRatio >= lowerBoundAnchorRatio;\n }\n return false;\n }\n\n // BoundValidator is to get inherited, so it's a good practice to add some storage gaps like\n // OpenZepplin proposed in their contracts: https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n // solhint-disable-next-line\n uint256[49] private __gap;\n}\n" + }, + "contracts/oracles/ChainlinkOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"../interfaces/VBep20Interface.sol\";\nimport \"../interfaces/OracleInterface.sol\";\nimport \"@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol\";\nimport \"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol\";\n\n/**\n * @title ChainlinkOracle\n * @author Venus\n * @notice This oracle fetches prices of assets from the Chainlink oracle.\n */\ncontract ChainlinkOracle is AccessControlledV8, OracleInterface {\n struct TokenConfig {\n /// @notice Underlying token address, which can't be a null address\n /// @notice Used to check if a token is supported\n /// @notice 0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB address for native tokens\n /// (e.g BNB for BNB chain, ETH for Ethereum network)\n address asset;\n /// @notice Chainlink feed address\n address feed;\n /// @notice Price expiration period of this asset\n uint256 maxStalePeriod;\n }\n\n /// @notice Set this as asset address for native token on each chain.\n /// This is the underlying address for vBNB on BNB chain or an underlying asset for a native market on any chain.\n address public constant NATIVE_TOKEN_ADDR = 0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB;\n\n /// @notice Manually set an override price, useful under extenuating conditions such as price feed failure\n mapping(address => uint256) public prices;\n\n /// @notice Token config by assets\n mapping(address => TokenConfig) public tokenConfigs;\n\n /// @notice Emit when a price is manually set\n event PricePosted(address indexed asset, uint256 previousPriceMantissa, uint256 newPriceMantissa);\n\n /// @notice Emit when a token config is added\n event TokenConfigAdded(address indexed asset, address feed, uint256 maxStalePeriod);\n\n modifier notNullAddress(address someone) {\n if (someone == address(0)) revert(\"can't be zero address\");\n _;\n }\n\n /// @notice Constructor for the implementation contract.\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n\n /**\n * @notice Initializes the owner of the contract\n * @param accessControlManager_ Address of the access control manager contract\n */\n function initialize(address accessControlManager_) external initializer {\n __AccessControlled_init(accessControlManager_);\n }\n\n /**\n * @notice Manually set the price of a given asset\n * @param asset Asset address\n * @param price Asset price in 18 decimals\n * @custom:access Only Governance\n * @custom:event Emits PricePosted event on successfully setup of asset price\n */\n function setDirectPrice(address asset, uint256 price) external notNullAddress(asset) {\n _checkAccessAllowed(\"setDirectPrice(address,uint256)\");\n\n uint256 previousPriceMantissa = prices[asset];\n prices[asset] = price;\n emit PricePosted(asset, previousPriceMantissa, price);\n }\n\n /**\n * @notice Add multiple token configs at the same time\n * @param tokenConfigs_ config array\n * @custom:access Only Governance\n * @custom:error Zero length error thrown, if length of the array in parameter is 0\n */\n function setTokenConfigs(TokenConfig[] memory tokenConfigs_) external {\n if (tokenConfigs_.length == 0) revert(\"length can't be 0\");\n uint256 numTokenConfigs = tokenConfigs_.length;\n for (uint256 i; i < numTokenConfigs; ++i) {\n setTokenConfig(tokenConfigs_[i]);\n }\n }\n\n /**\n * @notice Add single token config. asset & feed cannot be null addresses and maxStalePeriod must be positive\n * @param tokenConfig Token config struct\n * @custom:access Only Governance\n * @custom:error NotNullAddress error is thrown if asset address is null\n * @custom:error NotNullAddress error is thrown if token feed address is null\n * @custom:error Range error is thrown if maxStale period of token is not greater than zero\n * @custom:event Emits TokenConfigAdded event on successfully setting of the token config\n */\n function setTokenConfig(\n TokenConfig memory tokenConfig\n ) public notNullAddress(tokenConfig.asset) notNullAddress(tokenConfig.feed) {\n _checkAccessAllowed(\"setTokenConfig(TokenConfig)\");\n\n if (tokenConfig.maxStalePeriod == 0) revert(\"stale period can't be zero\");\n tokenConfigs[tokenConfig.asset] = tokenConfig;\n emit TokenConfigAdded(tokenConfig.asset, tokenConfig.feed, tokenConfig.maxStalePeriod);\n }\n\n /**\n * @notice Gets the price of a asset from the chainlink oracle\n * @param asset Address of the asset\n * @return Price in USD from Chainlink or a manually set price for the asset\n */\n function getPrice(address asset) public view virtual returns (uint256) {\n uint256 decimals;\n\n if (asset == NATIVE_TOKEN_ADDR) {\n decimals = 18;\n } else {\n IERC20Metadata token = IERC20Metadata(asset);\n decimals = token.decimals();\n }\n\n return _getPriceInternal(asset, decimals);\n }\n\n /**\n * @notice Gets the Chainlink price for a given asset\n * @param asset address of the asset\n * @param decimals decimals of the asset\n * @return price Asset price in USD or a manually set price of the asset\n */\n function _getPriceInternal(address asset, uint256 decimals) internal view returns (uint256 price) {\n uint256 tokenPrice = prices[asset];\n if (tokenPrice != 0) {\n price = tokenPrice;\n } else {\n price = _getChainlinkPrice(asset);\n }\n\n uint256 decimalDelta = 18 - decimals;\n return price * (10 ** decimalDelta);\n }\n\n /**\n * @notice Get the Chainlink price for an asset, revert if token config doesn't exist\n * @dev The precision of the price feed is used to ensure the returned price has 18 decimals of precision\n * @param asset Address of the asset\n * @return price Price in USD, with 18 decimals of precision\n * @custom:error NotNullAddress error is thrown if the asset address is null\n * @custom:error Price error is thrown if the Chainlink price of asset is not greater than zero\n * @custom:error Timing error is thrown if current timestamp is less than the last updatedAt timestamp\n * @custom:error Timing error is thrown if time difference between current time and last updated time\n * is greater than maxStalePeriod\n */\n function _getChainlinkPrice(\n address asset\n ) private view notNullAddress(tokenConfigs[asset].asset) returns (uint256) {\n TokenConfig memory tokenConfig = tokenConfigs[asset];\n AggregatorV3Interface feed = AggregatorV3Interface(tokenConfig.feed);\n\n // note: maxStalePeriod cannot be 0\n uint256 maxStalePeriod = tokenConfig.maxStalePeriod;\n\n // Chainlink USD-denominated feeds store answers at 8 decimals, mostly\n uint256 decimalDelta = 18 - feed.decimals();\n\n (, int256 answer, , uint256 updatedAt, ) = feed.latestRoundData();\n if (answer <= 0) revert(\"chainlink price must be positive\");\n if (block.timestamp < updatedAt) revert(\"updatedAt exceeds block time\");\n\n uint256 deltaTime;\n unchecked {\n deltaTime = block.timestamp - updatedAt;\n }\n\n if (deltaTime > maxStalePeriod) revert(\"chainlink price expired\");\n\n return uint256(answer) * (10 ** decimalDelta);\n }\n}\n" + }, + "contracts/oracles/common/CorrelatedTokenOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { OracleInterface, ResilientOracleInterface } from \"../../interfaces/OracleInterface.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\nimport { SECONDS_PER_YEAR } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\nimport { IERC20Metadata } from \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\";\nimport { ICappedOracle } from \"../../interfaces/ICappedOracle.sol\";\nimport { IAccessControlManagerV8 } from \"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol\";\n\n/**\n * @title CorrelatedTokenOracle\n * @notice This oracle fetches the price of a token that is correlated to another token.\n */\nabstract contract CorrelatedTokenOracle is OracleInterface, ICappedOracle {\n /// @notice Address of the correlated token\n address public immutable CORRELATED_TOKEN;\n\n /// @notice Address of the underlying token\n address public immutable UNDERLYING_TOKEN;\n\n /// @notice Address of Resilient Oracle\n ResilientOracleInterface public immutable RESILIENT_ORACLE;\n\n /// @notice Address of the AccessControlManager contract\n IAccessControlManagerV8 public immutable ACCESS_CONTROL_MANAGER;\n\n //// @notice Growth rate percentage in seconds. Ex: 1e18 is 100%\n uint256 public growthRatePerSecond;\n\n /// @notice Snapshot update interval\n uint256 public snapshotInterval;\n\n /// @notice Last stored snapshot maximum exchange rate\n uint256 public snapshotMaxExchangeRate;\n\n /// @notice Last stored snapshot timestamp\n uint256 public snapshotTimestamp;\n\n /// @notice Gap to add when updating the snapshot\n uint256 public snapshotGap;\n\n /// @notice Emitted when the snapshot is updated\n event SnapshotUpdated(uint256 indexed maxExchangeRate, uint256 indexed timestamp);\n\n /// @notice Emitted when the growth rate is updated\n event GrowthRateUpdated(\n uint256 indexed oldGrowthRatePerSecond,\n uint256 indexed newGrowthRatePerSecond,\n uint256 indexed oldSnapshotInterval,\n uint256 newSnapshotInterval\n );\n\n /// @notice Emitted when the snapshot gap is updated\n event SnapshotGapUpdated(uint256 indexed oldSnapshotGap, uint256 indexed newSnapshotGap);\n\n /// @notice Thrown if the token address is invalid\n error InvalidTokenAddress();\n\n /// @notice Thrown if the growth rate is invalid\n error InvalidGrowthRate();\n\n /// @notice Thrown if the initial snapshot is invalid\n error InvalidInitialSnapshot();\n\n /// @notice Thrown if the max snapshot exchange rate is invalid\n error InvalidSnapshotMaxExchangeRate();\n\n /// @notice @notice Thrown when the action is prohibited by AccessControlManager\n error Unauthorized(address sender, address calledContract, string methodSignature);\n\n /**\n * @notice Constructor for the implementation contract.\n * @custom:error InvalidGrowthRate error is thrown if the growth rate is invalid\n * @custom:error InvalidInitialSnapshot error is thrown if the initial snapshot values are invalid\n */\n constructor(\n address _correlatedToken,\n address _underlyingToken,\n address _resilientOracle,\n uint256 _annualGrowthRate,\n uint256 _snapshotInterval,\n uint256 _initialSnapshotMaxExchangeRate,\n uint256 _initialSnapshotTimestamp,\n address _accessControlManager,\n uint256 _snapshotGap\n ) {\n growthRatePerSecond = _annualGrowthRate / SECONDS_PER_YEAR;\n\n if ((growthRatePerSecond == 0 && _snapshotInterval > 0) || (growthRatePerSecond > 0 && _snapshotInterval == 0))\n revert InvalidGrowthRate();\n\n if ((_initialSnapshotMaxExchangeRate == 0 || _initialSnapshotTimestamp == 0) && _snapshotInterval > 0) {\n revert InvalidInitialSnapshot();\n }\n\n ensureNonzeroAddress(_correlatedToken);\n ensureNonzeroAddress(_underlyingToken);\n ensureNonzeroAddress(_resilientOracle);\n ensureNonzeroAddress(_accessControlManager);\n\n CORRELATED_TOKEN = _correlatedToken;\n UNDERLYING_TOKEN = _underlyingToken;\n RESILIENT_ORACLE = ResilientOracleInterface(_resilientOracle);\n snapshotInterval = _snapshotInterval;\n\n snapshotMaxExchangeRate = _initialSnapshotMaxExchangeRate;\n snapshotTimestamp = _initialSnapshotTimestamp;\n snapshotGap = _snapshotGap;\n\n ACCESS_CONTROL_MANAGER = IAccessControlManagerV8(_accessControlManager);\n }\n\n /**\n * @notice Directly sets the snapshot exchange rate and timestamp\n * @param _snapshotMaxExchangeRate The exchange rate to set\n * @param _snapshotTimestamp The timestamp to set\n * @custom:event Emits SnapshotUpdated event on successful update of the snapshot\n */\n function setSnapshot(uint256 _snapshotMaxExchangeRate, uint256 _snapshotTimestamp) external {\n _checkAccessAllowed(\"setSnapshot(uint256,uint256)\");\n\n snapshotMaxExchangeRate = _snapshotMaxExchangeRate;\n snapshotTimestamp = _snapshotTimestamp;\n\n emit SnapshotUpdated(snapshotMaxExchangeRate, snapshotTimestamp);\n }\n\n /**\n * @notice Sets the growth rate and snapshot interval\n * @param _annualGrowthRate The annual growth rate to set\n * @param _snapshotInterval The snapshot interval to set\n * @custom:error InvalidGrowthRate error is thrown if the growth rate is invalid\n * @custom:event Emits GrowthRateUpdated event on successful update of the growth rate\n */\n function setGrowthRate(uint256 _annualGrowthRate, uint256 _snapshotInterval) external {\n _checkAccessAllowed(\"setGrowthRate(uint256,uint256)\");\n uint256 oldGrowthRatePerSecond = growthRatePerSecond;\n\n growthRatePerSecond = _annualGrowthRate / SECONDS_PER_YEAR;\n\n if ((growthRatePerSecond == 0 && _snapshotInterval > 0) || (growthRatePerSecond > 0 && _snapshotInterval == 0))\n revert InvalidGrowthRate();\n\n emit GrowthRateUpdated(oldGrowthRatePerSecond, growthRatePerSecond, snapshotInterval, _snapshotInterval);\n\n snapshotInterval = _snapshotInterval;\n }\n\n /**\n * @notice Sets the snapshot gap\n * @param _snapshotGap The snapshot gap to set\n * @custom:event Emits SnapshotGapUpdated event on successful update of the snapshot gap\n */\n function setSnapshotGap(uint256 _snapshotGap) external {\n _checkAccessAllowed(\"setSnapshotGap(uint256)\");\n\n emit SnapshotGapUpdated(snapshotGap, _snapshotGap);\n\n snapshotGap = _snapshotGap;\n }\n\n /**\n * @notice Returns if the price is capped\n * @return isCapped Boolean indicating if the price is capped\n */\n function isCapped() external view virtual returns (bool) {\n if (snapshotInterval == 0) {\n return false;\n }\n\n uint256 maxAllowedExchangeRate = getMaxAllowedExchangeRate();\n if (maxAllowedExchangeRate == 0) {\n return false;\n }\n\n uint256 exchangeRate = getUnderlyingAmount();\n\n return exchangeRate > maxAllowedExchangeRate;\n }\n\n /**\n * @notice Updates the snapshot price and timestamp\n * @custom:event Emits SnapshotUpdated event on successful update of the snapshot\n * @custom:error InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero\n */\n function updateSnapshot() public override {\n if (block.timestamp - snapshotTimestamp < snapshotInterval || snapshotInterval == 0) return;\n\n uint256 exchangeRate = getUnderlyingAmount();\n uint256 maxAllowedExchangeRate = getMaxAllowedExchangeRate();\n\n snapshotMaxExchangeRate =\n (exchangeRate > maxAllowedExchangeRate ? maxAllowedExchangeRate : exchangeRate) +\n snapshotGap;\n snapshotTimestamp = block.timestamp;\n\n if (snapshotMaxExchangeRate == 0) revert InvalidSnapshotMaxExchangeRate();\n\n RESILIENT_ORACLE.updateAssetPrice(UNDERLYING_TOKEN);\n emit SnapshotUpdated(snapshotMaxExchangeRate, snapshotTimestamp);\n }\n\n /**\n * @notice Fetches the price of the token\n * @param asset Address of the token\n * @return price The price of the token in scaled decimal places. It can be capped\n * to a maximum value taking into account the growth rate\n * @custom:error InvalidTokenAddress error is thrown if the token address is invalid\n */\n function getPrice(address asset) public view override returns (uint256) {\n if (asset != CORRELATED_TOKEN) revert InvalidTokenAddress();\n\n uint256 exchangeRate = getUnderlyingAmount();\n\n if (snapshotInterval == 0) {\n return _calculatePrice(exchangeRate);\n }\n\n uint256 maxAllowedExchangeRate = getMaxAllowedExchangeRate();\n\n uint256 finalExchangeRate = (exchangeRate > maxAllowedExchangeRate && maxAllowedExchangeRate != 0)\n ? maxAllowedExchangeRate\n : exchangeRate;\n\n return _calculatePrice(finalExchangeRate);\n }\n\n /**\n * @notice Gets the maximum allowed exchange rate for token\n * @return maxExchangeRate Maximum allowed exchange rate\n */\n function getMaxAllowedExchangeRate() public view returns (uint256) {\n uint256 timeElapsed = block.timestamp - snapshotTimestamp;\n uint256 maxExchangeRate = snapshotMaxExchangeRate +\n (snapshotMaxExchangeRate * growthRatePerSecond * timeElapsed) /\n 1e18;\n return maxExchangeRate;\n }\n\n /**\n * @notice Gets the underlying amount for correlated token\n * @return underlyingAmount Amount of underlying token\n */\n function getUnderlyingAmount() public view virtual returns (uint256);\n\n /**\n * @notice Fetches price of the token based on an underlying exchange rate\n * @param exchangeRate The underlying exchange rate to use\n * @return price The price of the token in scaled decimal places\n */\n function _calculatePrice(uint256 exchangeRate) internal view returns (uint256) {\n uint256 underlyingUSDPrice = RESILIENT_ORACLE.getPrice(UNDERLYING_TOKEN);\n\n IERC20Metadata token = IERC20Metadata(CORRELATED_TOKEN);\n uint256 decimals = token.decimals();\n\n return (exchangeRate * underlyingUSDPrice) / (10 ** decimals);\n }\n\n /**\n * @notice Reverts if the call is not allowed by AccessControlManager\n * @param signature Method signature\n * @custom:error Unauthorized error is thrown if the call is not allowed\n */\n function _checkAccessAllowed(string memory signature) internal view {\n bool isAllowedToCall = ACCESS_CONTROL_MANAGER.isAllowedToCall(msg.sender, signature);\n\n if (!isAllowedToCall) {\n revert Unauthorized(msg.sender, address(this), signature);\n }\n }\n}\n" + }, + "contracts/oracles/ERC4626Oracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { IERC4626 } from \"../interfaces/IERC4626.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\n\n/**\n * @title ERC4626Oracle\n * @author Venus\n * @notice This oracle fetches the price of ERC4626 tokens\n */\ncontract ERC4626Oracle is CorrelatedTokenOracle {\n uint256 public immutable ONE_CORRELATED_TOKEN;\n\n /// @notice Constructor for the implementation contract.\n constructor(\n address correlatedToken,\n address underlyingToken,\n address resilientOracle,\n uint256 annualGrowthRate,\n uint256 _snapshotInterval,\n uint256 initialSnapshotMaxExchangeRate,\n uint256 initialSnapshotTimestamp,\n address accessControlManager,\n uint256 _snapshotGap\n )\n CorrelatedTokenOracle(\n correlatedToken,\n underlyingToken,\n resilientOracle,\n annualGrowthRate,\n _snapshotInterval,\n initialSnapshotMaxExchangeRate,\n initialSnapshotTimestamp,\n accessControlManager,\n _snapshotGap\n )\n {\n ONE_CORRELATED_TOKEN = 10 ** IERC4626(correlatedToken).decimals();\n }\n\n /**\n * @notice Fetches the amount of underlying token for 1 correlated token\n * @return amount The amount of underlying token for correlated token\n */\n function getUnderlyingAmount() public view override returns (uint256) {\n return IERC4626(CORRELATED_TOKEN).convertToAssets(ONE_CORRELATED_TOKEN);\n }\n}\n" + }, + "contracts/oracles/EtherfiAccountantOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\nimport { IAccountant } from \"../interfaces/IAccountant.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\n\n/**\n * @title EtherfiAccountantOracle\n * @author Venus\n * @notice This oracle fetches the price of any Ether.fi asset that uses\n * Accountant contracts to derive the underlying price\n */\ncontract EtherfiAccountantOracle is CorrelatedTokenOracle {\n /// @notice Address of Accountant\n IAccountant public immutable ACCOUNTANT;\n\n /// @notice Constructor for the implementation contract.\n constructor(\n address accountant,\n address correlatedToken,\n address underlyingToken,\n address resilientOracle,\n uint256 annualGrowthRate,\n uint256 _snapshotInterval,\n uint256 initialSnapshotMaxExchangeRate,\n uint256 initialSnapshotTimestamp,\n address accessControlManager,\n uint256 _snapshotGap\n )\n CorrelatedTokenOracle(\n correlatedToken,\n underlyingToken,\n resilientOracle,\n annualGrowthRate,\n _snapshotInterval,\n initialSnapshotMaxExchangeRate,\n initialSnapshotTimestamp,\n accessControlManager,\n _snapshotGap\n )\n {\n ensureNonzeroAddress(accountant);\n ACCOUNTANT = IAccountant(accountant);\n }\n\n /**\n * @notice Fetches the conversion rate from the ACCOUNTANT contract\n * @return amount Amount of WBTC\n */\n function getUnderlyingAmount() public view override returns (uint256) {\n return ACCOUNTANT.getRateSafe();\n }\n}\n" + }, + "contracts/oracles/mocks/MockAccountant.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"../../interfaces/IAccountant.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\ncontract MockAccountant is IAccountant, Ownable {\n uint256 public rate;\n\n constructor() Ownable() {}\n\n function setRate(uint256 _rate) external onlyOwner {\n rate = _rate;\n }\n\n function getRateSafe() external view override returns (uint256) {\n return rate;\n }\n}\n" + }, + "contracts/oracles/mocks/MockBinanceFeedRegistry.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"../../interfaces/FeedRegistryInterface.sol\";\n\ncontract MockBinanceFeedRegistry is FeedRegistryInterface {\n mapping(string => uint256) public assetPrices;\n\n function setAssetPrice(string memory base, uint256 price) external {\n assetPrices[base] = price;\n }\n\n function latestRoundDataByName(\n string memory base,\n string memory quote\n )\n external\n view\n override\n returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound)\n {\n quote;\n return (0, int256(assetPrices[base]), 0, block.timestamp - 10, 0);\n }\n\n function decimalsByName(string memory base, string memory quote) external view override returns (uint8) {\n return 8;\n }\n}\n" + }, + "contracts/oracles/mocks/MockBinanceOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { OwnableUpgradeable } from \"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\";\nimport { OracleInterface } from \"../../interfaces/OracleInterface.sol\";\n\ncontract MockBinanceOracle is OwnableUpgradeable, OracleInterface {\n mapping(address => uint256) public assetPrices;\n\n constructor() {}\n\n function initialize() public initializer {}\n\n function setPrice(address asset, uint256 price) external {\n assetPrices[asset] = price;\n }\n\n function getPrice(address token) public view returns (uint256) {\n return assetPrices[token];\n }\n}\n" + }, + "contracts/oracles/mocks/MockChainlinkOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { OwnableUpgradeable } from \"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\";\nimport { OracleInterface } from \"../../interfaces/OracleInterface.sol\";\n\ncontract MockChainlinkOracle is OwnableUpgradeable, OracleInterface {\n mapping(address => uint256) public assetPrices;\n\n //set price in 6 decimal precision\n constructor() {}\n\n function initialize() public initializer {\n __Ownable_init();\n }\n\n function setPrice(address asset, uint256 price) external {\n assetPrices[asset] = price;\n }\n\n //https://compound.finance/docs/prices\n function getPrice(address token) public view returns (uint256) {\n return assetPrices[token];\n }\n}\n" + }, + "contracts/oracles/mocks/MockPendlePtOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"../../interfaces/IPendlePtOracle.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\ncontract MockPendlePtOracle is IPendlePtOracle, Ownable {\n mapping(address => mapping(uint32 => uint256)) public ptToAssetRate;\n mapping(address => mapping(uint32 => uint256)) public ptToSyRate;\n\n constructor() Ownable() {}\n\n function setPtToAssetRate(address market, uint32 duration, uint256 rate) external onlyOwner {\n ptToAssetRate[market][duration] = rate;\n }\n\n function setPtToSyRate(address market, uint32 duration, uint256 rate) external onlyOwner {\n ptToSyRate[market][duration] = rate;\n }\n\n function getPtToAssetRate(address market, uint32 duration) external view returns (uint256) {\n return ptToAssetRate[market][duration];\n }\n\n function getPtToSyRate(address market, uint32 duration) external view returns (uint256) {\n return ptToSyRate[market][duration];\n }\n\n function getOracleState(\n address /* market */,\n uint32 /* duration */\n )\n external\n pure\n returns (bool increaseCardinalityRequired, uint16 cardinalityRequired, bool oldestObservationSatisfied)\n {\n return (false, 0, true);\n }\n}\n" + }, + "contracts/oracles/mocks/MockSFrxEthFraxOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"../../interfaces/ISfrxEthFraxOracle.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\ncontract MockSfrxEthFraxOracle is ISfrxEthFraxOracle, Ownable {\n bool public isBadData;\n uint256 public priceLow;\n uint256 public priceHigh;\n\n constructor() Ownable() {}\n\n function setPrices(bool _isBadData, uint256 _priceLow, uint256 _priceHigh) external onlyOwner {\n isBadData = _isBadData;\n priceLow = _priceLow;\n priceHigh = _priceHigh;\n }\n\n function getPrices() external view override returns (bool, uint256, uint256) {\n return (isBadData, priceLow, priceHigh);\n }\n}\n" + }, + "contracts/oracles/OneJumpOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\nimport { OracleInterface } from \"../interfaces/OracleInterface.sol\";\nimport { IERC20Metadata } from \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\";\n\n/**\n * @title OneJumpOracle\n * @author Venus\n * @notice This oracle fetches the price of an asset in through an intermediate asset\n */\ncontract OneJumpOracle is CorrelatedTokenOracle {\n /// @notice Address of the intermediate oracle\n OracleInterface public immutable INTERMEDIATE_ORACLE;\n\n /// @notice Constructor for the implementation contract.\n constructor(\n address correlatedToken,\n address underlyingToken,\n address resilientOracle,\n address intermediateOracle,\n uint256 annualGrowthRate,\n uint256 _snapshotInterval,\n uint256 initialSnapshotMaxExchangeRate,\n uint256 initialSnapshotTimestamp,\n address accessControlManager,\n uint256 _snapshotGap\n )\n CorrelatedTokenOracle(\n correlatedToken,\n underlyingToken,\n resilientOracle,\n annualGrowthRate,\n _snapshotInterval,\n initialSnapshotMaxExchangeRate,\n initialSnapshotTimestamp,\n accessControlManager,\n _snapshotGap\n )\n {\n ensureNonzeroAddress(intermediateOracle);\n INTERMEDIATE_ORACLE = OracleInterface(intermediateOracle);\n }\n\n /**\n * @notice Fetches the amount of the underlying token for 1 correlated token, using the intermediate oracle\n * @return amount The amount of the underlying token for 1 correlated token scaled by the underlying token decimals\n */\n function getUnderlyingAmount() public view override returns (uint256) {\n uint256 underlyingDecimals = IERC20Metadata(UNDERLYING_TOKEN).decimals();\n uint256 correlatedDecimals = IERC20Metadata(CORRELATED_TOKEN).decimals();\n\n uint256 underlyingAmount = INTERMEDIATE_ORACLE.getPrice(CORRELATED_TOKEN);\n\n return (underlyingAmount * (10 ** correlatedDecimals)) / (10 ** (36 - underlyingDecimals));\n }\n}\n" + }, + "contracts/oracles/PendleOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { IPendlePtOracle } from \"../interfaces/IPendlePtOracle.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\nimport { ensureNonzeroAddress, ensureNonzeroValue } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\nimport { IERC20Metadata } from \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\";\n\n/**\n * @title PendleOracle\n * @author Venus\n * @notice This oracle fetches the price of a pendle token\n * @dev As a base price the oracle uses either the price of the Pendle\n * market's asset (in this case PT_TO_ASSET rate should be used) or\n * the price of the Pendle market's interest bearing token (e.g. wstETH\n * for stETH; in this case PT_TO_SY rate should be used). Technically,\n * interest bearing token is different from standardized yield (SY) token,\n * but since SY is a wrapper around an interest bearing token, we can safely\n * assume the prices of the two are equal. This is not always true for asset\n * price though: using PT_TO_ASSET rate assumes that the yield token can\n * be seamlessly redeemed for the underlying asset. In reality, this might\n * not always be the case. For more details, see\n * https://docs.pendle.finance/Developers/Contracts/StandardizedYield\n */\ncontract PendleOracle is CorrelatedTokenOracle {\n struct ConstructorParams {\n /// @notice Pendle market\n address market;\n /// @notice Pendle oracle\n address ptOracle;\n /// @notice Either PT_TO_ASSET or PT_TO_SY\n RateKind rateKind;\n /// @notice Pendle PT token\n address ptToken;\n /// @notice Underlying token, can be either the market's asset or the interest bearing token\n address underlyingToken;\n /// @notice Resilient oracle to get the underlying token price from\n address resilientOracle;\n /// @notice TWAP duration to call Pendle oracle with\n uint32 twapDuration;\n /// @notice Annual growth rate of the underlying token\n uint256 annualGrowthRate;\n /// @notice Snapshot interval for the oracle\n uint256 snapshotInterval;\n /// @notice Initial exchange rate of the underlying token\n uint256 initialSnapshotMaxExchangeRate;\n /// @notice Initial timestamp of the underlying token\n uint256 initialSnapshotTimestamp;\n /// @notice Access control manager\n address accessControlManager;\n /// @notice Gap to add when updating the snapshot\n uint256 snapshotGap;\n }\n\n /// @notice Which asset to use as a base for the returned PT\n /// price. Can be either a standardized yield token (SY), in\n /// this case PT/SY price is returned, or the Pendle\n /// market's asset directly.\n enum RateKind {\n PT_TO_ASSET,\n PT_TO_SY\n }\n\n /// @notice Address of the PT oracle\n IPendlePtOracle public immutable PT_ORACLE;\n\n /// @notice Whether to use PT/SY (standardized yield token) rate\n /// or PT/market asset rate\n RateKind public immutable RATE_KIND;\n\n /// @notice Address of the market\n address public immutable MARKET;\n\n /// @notice Twap duration for the oracle\n uint32 public immutable TWAP_DURATION;\n\n /// @notice Decimals of the underlying token\n /// @dev We make an assumption that the underlying decimals will\n /// not change throughout the lifetime of the Pendle market\n uint8 public immutable UNDERLYING_DECIMALS;\n\n /// @notice Thrown if the duration is invalid\n error InvalidDuration();\n\n /**\n * @notice Constructor for the implementation contract.\n * @custom:error InvalidDuration Thrown if the duration is invalid\n */\n constructor(\n ConstructorParams memory params\n )\n CorrelatedTokenOracle(\n params.ptToken,\n params.underlyingToken,\n params.resilientOracle,\n params.annualGrowthRate,\n params.snapshotInterval,\n params.initialSnapshotMaxExchangeRate,\n params.initialSnapshotTimestamp,\n params.accessControlManager,\n params.snapshotGap\n )\n {\n ensureNonzeroAddress(params.market);\n ensureNonzeroAddress(params.ptOracle);\n ensureNonzeroValue(params.twapDuration);\n\n MARKET = params.market;\n PT_ORACLE = IPendlePtOracle(params.ptOracle);\n RATE_KIND = params.rateKind;\n TWAP_DURATION = params.twapDuration;\n UNDERLYING_DECIMALS = IERC20Metadata(UNDERLYING_TOKEN).decimals();\n\n (bool increaseCardinalityRequired, , bool oldestObservationSatisfied) = PT_ORACLE.getOracleState(\n MARKET,\n TWAP_DURATION\n );\n if (increaseCardinalityRequired || !oldestObservationSatisfied) {\n revert InvalidDuration();\n }\n }\n\n /// @notice Fetches the amount of underlying token for 1 PT\n /// @return amount The amount of underlying token (either the market's asset\n /// or the yield token) for 1 PT, adjusted for decimals such that the result\n /// has the same precision as the underlying token\n function getUnderlyingAmount() public view override returns (uint256) {\n uint256 rate;\n if (RATE_KIND == RateKind.PT_TO_SY) {\n rate = PT_ORACLE.getPtToSyRate(MARKET, TWAP_DURATION);\n } else {\n rate = PT_ORACLE.getPtToAssetRate(MARKET, TWAP_DURATION);\n }\n return ((10 ** UNDERLYING_DECIMALS) * rate) / 1e18;\n }\n}\n" + }, + "contracts/oracles/SequencerChainlinkOracle.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.25;\n\nimport { ChainlinkOracle } from \"./ChainlinkOracle.sol\";\nimport { AggregatorV3Interface } from \"@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol\";\n\n/**\n @title Sequencer Chain Link Oracle\n @notice Oracle to fetch price using chainlink oracles on L2s with sequencer\n*/\ncontract SequencerChainlinkOracle is ChainlinkOracle {\n /// @notice L2 Sequencer feed\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n AggregatorV3Interface public immutable sequencer;\n\n /// @notice L2 Sequencer grace period\n uint256 public constant GRACE_PERIOD_TIME = 3600;\n\n /**\n @notice Contract constructor\n @param _sequencer L2 sequencer\n @custom:oz-upgrades-unsafe-allow constructor\n */\n constructor(AggregatorV3Interface _sequencer) ChainlinkOracle() {\n require(address(_sequencer) != address(0), \"zero address\");\n\n sequencer = _sequencer;\n }\n\n /// @inheritdoc ChainlinkOracle\n function getPrice(address asset) public view override returns (uint) {\n if (!isSequencerActive()) revert(\"L2 sequencer unavailable\");\n return super.getPrice(asset);\n }\n\n function isSequencerActive() internal view returns (bool) {\n // answer from oracle is a variable with a value of either 1 or 0\n // 0: The sequencer is up\n // 1: The sequencer is down\n // startedAt: This timestamp indicates when the sequencer changed status\n (, int256 answer, uint256 startedAt, , ) = sequencer.latestRoundData();\n if (block.timestamp - startedAt <= GRACE_PERIOD_TIME || answer == 1) return false;\n return true;\n }\n}\n" + }, + "contracts/oracles/SFraxOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { ISFrax } from \"../interfaces/ISFrax.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\nimport { EXP_SCALE } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\n\n/**\n * @title SFraxOracle\n * @author Venus\n * @notice This oracle fetches the price of sFrax\n */\ncontract SFraxOracle is CorrelatedTokenOracle {\n /// @notice Constructor for the implementation contract.\n constructor(\n address sFrax,\n address frax,\n address resilientOracle,\n uint256 annualGrowthRate,\n uint256 _snapshotInterval,\n uint256 initialSnapshotMaxExchangeRate,\n uint256 initialSnapshotTimestamp,\n address accessControlManager,\n uint256 _snapshotGap\n )\n CorrelatedTokenOracle(\n sFrax,\n frax,\n resilientOracle,\n annualGrowthRate,\n _snapshotInterval,\n initialSnapshotMaxExchangeRate,\n initialSnapshotTimestamp,\n accessControlManager,\n _snapshotGap\n )\n {}\n\n /**\n * @notice Fetches the amount of FRAX for 1 sFrax\n * @return amount The amount of FRAX for sFrax\n */\n function getUnderlyingAmount() public view override returns (uint256) {\n return ISFrax(CORRELATED_TOKEN).convertToAssets(EXP_SCALE);\n }\n}\n" + }, + "contracts/oracles/SFrxETHOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { ISfrxEthFraxOracle } from \"../interfaces/ISfrxEthFraxOracle.sol\";\nimport { ensureNonzeroAddress, ensureNonzeroValue } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\nimport { EXP_SCALE } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\nimport { AccessControlledV8 } from \"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol\";\nimport { OracleInterface } from \"../interfaces/OracleInterface.sol\";\n\n/**\n * @title SFrxETHOracle\n * @author Venus\n * @notice This oracle fetches the price of sfrxETH\n */\ncontract SFrxETHOracle is AccessControlledV8, OracleInterface {\n /// @notice Address of SfrxEthFraxOracle\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n ISfrxEthFraxOracle public immutable SFRXETH_FRAX_ORACLE;\n\n /// @notice Address of sfrxETH\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n address public immutable SFRXETH;\n\n /// @notice Maximum allowed price difference\n uint256 public maxAllowedPriceDifference;\n\n /// @notice Emits when the maximum allowed price difference is updated\n event MaxAllowedPriceDifferenceUpdated(uint256 oldMaxAllowedPriceDifference, uint256 newMaxAllowedPriceDifference);\n\n /// @notice Thrown if the price data is invalid\n error BadPriceData();\n\n /// @notice Thrown if the price difference exceeds the allowed limit\n error PriceDifferenceExceeded();\n\n /// @notice Thrown if the token address is invalid\n error InvalidTokenAddress();\n\n /// @notice Constructor for the implementation contract.\n /// @custom:oz-upgrades-unsafe-allow constructor\n /// @custom:error ZeroAddressNotAllowed is thrown when `_sfrxEthFraxOracle` or `_sfrxETH` are the zero address\n constructor(address _sfrxEthFraxOracle, address _sfrxETH) {\n ensureNonzeroAddress(_sfrxEthFraxOracle);\n ensureNonzeroAddress(_sfrxETH);\n\n SFRXETH_FRAX_ORACLE = ISfrxEthFraxOracle(_sfrxEthFraxOracle);\n SFRXETH = _sfrxETH;\n\n _disableInitializers();\n }\n\n /**\n * @notice Sets the contracts required to fetch prices\n * @param _acm Address of the access control manager contract\n * @param _maxAllowedPriceDifference Maximum allowed price difference\n * @custom:error ZeroValueNotAllowed is thrown if `_maxAllowedPriceDifference` is zero\n */\n function initialize(address _acm, uint256 _maxAllowedPriceDifference) external initializer {\n ensureNonzeroValue(_maxAllowedPriceDifference);\n\n __AccessControlled_init(_acm);\n maxAllowedPriceDifference = _maxAllowedPriceDifference;\n }\n\n /**\n * @notice Sets the maximum allowed price difference\n * @param _maxAllowedPriceDifference Maximum allowed price difference\n * @custom:error ZeroValueNotAllowed is thrown if `_maxAllowedPriceDifference` is zero\n */\n function setMaxAllowedPriceDifference(uint256 _maxAllowedPriceDifference) external {\n _checkAccessAllowed(\"setMaxAllowedPriceDifference(uint256)\");\n ensureNonzeroValue(_maxAllowedPriceDifference);\n\n emit MaxAllowedPriceDifferenceUpdated(maxAllowedPriceDifference, _maxAllowedPriceDifference);\n maxAllowedPriceDifference = _maxAllowedPriceDifference;\n }\n\n /**\n * @notice Fetches the USD price of sfrxETH\n * @param asset Address of the sfrxETH token\n * @return price The price scaled by 1e18\n * @custom:error InvalidTokenAddress is thrown when the `asset` is not the sfrxETH token (`SFRXETH`)\n * @custom:error BadPriceData is thrown if the `SFRXETH_FRAX_ORACLE` oracle informs it has bad data\n * @custom:error ZeroValueNotAllowed is thrown if the prices (low or high, in USD) are zero\n * @custom:error PriceDifferenceExceeded is thrown if priceHigh/priceLow is greater than `maxAllowedPriceDifference`\n */\n function getPrice(address asset) external view returns (uint256) {\n if (asset != SFRXETH) revert InvalidTokenAddress();\n\n (bool isBadData, uint256 priceLow, uint256 priceHigh) = SFRXETH_FRAX_ORACLE.getPrices();\n\n if (isBadData) revert BadPriceData();\n\n // calculate price in USD\n uint256 priceHighInUSD = (EXP_SCALE ** 2) / priceLow;\n uint256 priceLowInUSD = (EXP_SCALE ** 2) / priceHigh;\n\n ensureNonzeroValue(priceHighInUSD);\n ensureNonzeroValue(priceLowInUSD);\n\n // validate price difference\n uint256 difference = (priceHighInUSD * EXP_SCALE) / priceLowInUSD;\n if (difference > maxAllowedPriceDifference) revert PriceDifferenceExceeded();\n\n // calculate and return average price\n return (priceHighInUSD + priceLowInUSD) / 2;\n }\n}\n" + }, + "contracts/oracles/SlisBNBOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { ISynclubStakeManager } from \"../interfaces/ISynclubStakeManager.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\nimport { EXP_SCALE } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\n\n/**\n * @title SlisBNBOracle\n * @author Venus\n * @notice This oracle fetches the price of slisBNB asset\n */\ncontract SlisBNBOracle is CorrelatedTokenOracle {\n /// @notice This is used as token address of BNB on BSC\n address public constant NATIVE_TOKEN_ADDR = 0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB;\n\n /// @notice Address of StakeManager\n ISynclubStakeManager public immutable STAKE_MANAGER;\n\n /// @notice Constructor for the implementation contract.\n constructor(\n address stakeManager,\n address slisBNB,\n address resilientOracle,\n uint256 annualGrowthRate,\n uint256 _snapshotInterval,\n uint256 initialSnapshotMaxExchangeRate,\n uint256 initialSnapshotTimestamp,\n address accessControlManager,\n uint256 _snapshotGap\n )\n CorrelatedTokenOracle(\n slisBNB,\n NATIVE_TOKEN_ADDR,\n resilientOracle,\n annualGrowthRate,\n _snapshotInterval,\n initialSnapshotMaxExchangeRate,\n initialSnapshotTimestamp,\n accessControlManager,\n _snapshotGap\n )\n {\n ensureNonzeroAddress(stakeManager);\n STAKE_MANAGER = ISynclubStakeManager(stakeManager);\n }\n\n /**\n * @notice Fetches the amount of BNB for 1 slisBNB\n * @return amount The amount of BNB for slisBNB\n */\n function getUnderlyingAmount() public view override returns (uint256) {\n return STAKE_MANAGER.convertSnBnbToBnb(EXP_SCALE);\n }\n}\n" + }, + "contracts/oracles/StkBNBOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { IPStakePool } from \"../interfaces/IPStakePool.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\nimport { EXP_SCALE } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\n\n/**\n * @title StkBNBOracle\n * @author Venus\n * @notice This oracle fetches the price of stkBNB asset\n */\ncontract StkBNBOracle is CorrelatedTokenOracle {\n /// @notice This is used as token address of BNB on BSC\n address public constant NATIVE_TOKEN_ADDR = 0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB;\n\n /// @notice Address of StakePool\n IPStakePool public immutable STAKE_POOL;\n\n /// @notice Thrown if the pool token supply is zero\n error PoolTokenSupplyIsZero();\n\n /// @notice Constructor for the implementation contract.\n constructor(\n address stakePool,\n address stkBNB,\n address resilientOracle,\n uint256 annualGrowthRate,\n uint256 _snapshotInterval,\n uint256 initialSnapshotMaxExchangeRate,\n uint256 initialSnapshotTimestamp,\n address accessControlManager,\n uint256 _snapshotGap\n )\n CorrelatedTokenOracle(\n stkBNB,\n NATIVE_TOKEN_ADDR,\n resilientOracle,\n annualGrowthRate,\n _snapshotInterval,\n initialSnapshotMaxExchangeRate,\n initialSnapshotTimestamp,\n accessControlManager,\n _snapshotGap\n )\n {\n ensureNonzeroAddress(stakePool);\n STAKE_POOL = IPStakePool(stakePool);\n }\n\n /**\n * @notice Fetches the amount of BNB for 1 stkBNB\n * @return price The amount of BNB for stkBNB\n * @custom:error PoolTokenSupplyIsZero error is thrown if the pool token supply is zero\n */\n function getUnderlyingAmount() public view override returns (uint256) {\n IPStakePool.Data memory exchangeRateData = STAKE_POOL.exchangeRate();\n\n if (exchangeRateData.poolTokenSupply == 0) {\n revert PoolTokenSupplyIsZero();\n }\n\n return (exchangeRateData.totalWei * EXP_SCALE) / exchangeRateData.poolTokenSupply;\n }\n}\n" + }, + "contracts/oracles/WBETHOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { IWBETH } from \"../interfaces/IWBETH.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\n\n/**\n * @title WBETHOracle\n * @author Venus\n * @notice This oracle fetches the price of wBETH asset\n */\ncontract WBETHOracle is CorrelatedTokenOracle {\n /// @notice Constructor for the implementation contract.\n constructor(\n address wbeth,\n address eth,\n address resilientOracle,\n uint256 annualGrowthRate,\n uint256 _snapshotInterval,\n uint256 initialSnapshotMaxExchangeRate,\n uint256 initialSnapshotTimestamp,\n address accessControlManager,\n uint256 _snapshotGap\n )\n CorrelatedTokenOracle(\n wbeth,\n eth,\n resilientOracle,\n annualGrowthRate,\n _snapshotInterval,\n initialSnapshotMaxExchangeRate,\n initialSnapshotTimestamp,\n accessControlManager,\n _snapshotGap\n )\n {}\n\n /**\n * @notice Fetches the amount of ETH for 1 wBETH\n * @return amount The amount of ETH for wBETH\n */\n function getUnderlyingAmount() public view override returns (uint256) {\n return IWBETH(CORRELATED_TOKEN).exchangeRate();\n }\n}\n" + }, + "contracts/oracles/WeETHAccountantOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\nimport { IAccountant } from \"../interfaces/IAccountant.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\n\n/**\n * @title WeETHAccountantOracle\n * @author Venus\n * @notice This oracle fetches the price of Ether.fi tokens based on an `Accountant` contract (i.e. weETHs and weETHk)\n */\ncontract WeETHAccountantOracle is CorrelatedTokenOracle {\n /// @notice Address of Accountant\n IAccountant public immutable ACCOUNTANT;\n\n /// @notice Constructor for the implementation contract.\n constructor(\n address accountant,\n address weethLRT,\n address weth,\n address resilientOracle,\n uint256 annualGrowthRate,\n uint256 _snapshotInterval,\n uint256 initialSnapshotMaxExchangeRate,\n uint256 initialSnapshotTimestamp,\n address accessControlManager,\n uint256 _snapshotGap\n )\n CorrelatedTokenOracle(\n weethLRT,\n weth,\n resilientOracle,\n annualGrowthRate,\n _snapshotInterval,\n initialSnapshotMaxExchangeRate,\n initialSnapshotTimestamp,\n accessControlManager,\n _snapshotGap\n )\n {\n ensureNonzeroAddress(accountant);\n ACCOUNTANT = IAccountant(accountant);\n }\n\n /**\n * @notice Gets the WETH for 1 weETH LRT\n * @return amount Amount of WETH\n */\n function getUnderlyingAmount() public view override returns (uint256) {\n return ACCOUNTANT.getRateSafe();\n }\n}\n" + }, + "contracts/oracles/WeETHOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\nimport { IEtherFiLiquidityPool } from \"../interfaces/IEtherFiLiquidityPool.sol\";\nimport { EXP_SCALE } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\n\n/**\n * @title WeETHOracle\n * @author Venus\n * @notice This oracle fetches the price of weETH\n */\ncontract WeETHOracle is CorrelatedTokenOracle {\n /// @notice Address of Liqiudity pool\n IEtherFiLiquidityPool public immutable LIQUIDITY_POOL;\n\n /// @notice Constructor for the implementation contract.\n constructor(\n address liquidityPool,\n address weETH,\n address eETH,\n address resilientOracle,\n uint256 annualGrowthRate,\n uint256 _snapshotInterval,\n uint256 initialSnapshotMaxExchangeRate,\n uint256 initialSnapshotTimestamp,\n address accessControlManager,\n uint256 _snapshotGap\n )\n CorrelatedTokenOracle(\n weETH,\n eETH,\n resilientOracle,\n annualGrowthRate,\n _snapshotInterval,\n initialSnapshotMaxExchangeRate,\n initialSnapshotTimestamp,\n accessControlManager,\n _snapshotGap\n )\n {\n ensureNonzeroAddress(liquidityPool);\n LIQUIDITY_POOL = IEtherFiLiquidityPool(liquidityPool);\n }\n\n /**\n * @notice Gets the eETH for 1 weETH\n * @return amount Amount of eETH\n */\n function getUnderlyingAmount() public view override returns (uint256) {\n return LIQUIDITY_POOL.amountForShare(EXP_SCALE);\n }\n}\n" + }, + "contracts/oracles/WstETHOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { OracleInterface } from \"../interfaces/OracleInterface.sol\";\nimport { IStETH } from \"../interfaces/IStETH.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\nimport { EXP_SCALE } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\n\n/**\n * @title WstETHOracle\n * @author Venus\n * @notice Depending on the equivalence flag price is either based on assumption that 1 stETH = 1 ETH\n * or the price of stETH/USD (secondary market price) is obtained from the oracle.\n */\ncontract WstETHOracle is OracleInterface {\n /// @notice A flag assuming 1:1 price equivalence between stETH/ETH\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n bool public immutable ASSUME_STETH_ETH_EQUIVALENCE;\n\n /// @notice Address of stETH\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n IStETH public immutable STETH;\n\n /// @notice Address of wstETH\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n address public immutable WSTETH_ADDRESS;\n\n /// @notice Address of WETH\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n address public immutable WETH_ADDRESS;\n\n /// @notice Address of Resilient Oracle\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n OracleInterface public immutable RESILIENT_ORACLE;\n\n /// @notice Constructor for the implementation contract.\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor(\n address wstETHAddress,\n address wETHAddress,\n address stETHAddress,\n address resilientOracleAddress,\n bool assumeEquivalence\n ) {\n ensureNonzeroAddress(wstETHAddress);\n ensureNonzeroAddress(wETHAddress);\n ensureNonzeroAddress(stETHAddress);\n ensureNonzeroAddress(resilientOracleAddress);\n WSTETH_ADDRESS = wstETHAddress;\n WETH_ADDRESS = wETHAddress;\n STETH = IStETH(stETHAddress);\n RESILIENT_ORACLE = OracleInterface(resilientOracleAddress);\n ASSUME_STETH_ETH_EQUIVALENCE = assumeEquivalence;\n }\n\n /**\n * @notice Gets the USD price of wstETH asset\n * @dev Depending on the equivalence flag price is either based on assumption that 1 stETH = 1 ETH\n * or the price of stETH/USD (secondary market price) is obtained from the oracle\n * @param asset Address of wstETH\n * @return wstETH Price in USD scaled by 1e18\n */\n function getPrice(address asset) public view returns (uint256) {\n if (asset != WSTETH_ADDRESS) revert(\"wrong wstETH address\");\n\n // get stETH amount for 1 wstETH scaled by 1e18\n uint256 stETHAmount = STETH.getPooledEthByShares(1 ether);\n\n // price is scaled 1e18 (oracle returns 36 - asset decimal scale)\n uint256 stETHUSDPrice = RESILIENT_ORACLE.getPrice(ASSUME_STETH_ETH_EQUIVALENCE ? WETH_ADDRESS : address(STETH));\n\n // stETHAmount (for 1 wstETH) * stETHUSDPrice / 1e18\n return (stETHAmount * stETHUSDPrice) / EXP_SCALE;\n }\n}\n" + }, + "contracts/oracles/WstETHOracleV2.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { IStETH } from \"../interfaces/IStETH.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\nimport { EXP_SCALE } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\n\n/**\n * @title WstETHOracleV2\n * @author Venus\n * @notice This oracle fetches the price of wstETH\n */\ncontract WstETHOracleV2 is CorrelatedTokenOracle {\n /// @notice Address of stETH\n IStETH public immutable STETH;\n\n /// @notice Constructor for the implementation contract.\n /// @dev The underlyingToken must be correlated so that 1 underlyingToken is equal to 1 stETH, because\n /// getUnderlyingAmount() implicitly assumes that\n constructor(\n address stETH,\n address wstETH,\n address underlyingToken,\n address resilientOracle,\n uint256 annualGrowthRate,\n uint256 _snapshotInterval,\n uint256 initialSnapshotMaxExchangeRate,\n uint256 initialSnapshotTimestamp,\n address accessControlManager,\n uint256 _snapshotGap\n )\n CorrelatedTokenOracle(\n wstETH,\n underlyingToken,\n resilientOracle,\n annualGrowthRate,\n _snapshotInterval,\n initialSnapshotMaxExchangeRate,\n initialSnapshotTimestamp,\n accessControlManager,\n _snapshotGap\n )\n {\n ensureNonzeroAddress(stETH);\n STETH = IStETH(stETH);\n }\n\n /**\n * @notice Gets the amount of underlyingToken for 1 wstETH, assuming that 1 underlyingToken is equivalent to 1 stETH\n * @return amount Amount of underlyingToken\n */\n function getUnderlyingAmount() public view override returns (uint256) {\n return STETH.getPooledEthByShares(EXP_SCALE);\n }\n}\n" + }, + "contracts/oracles/ZkETHOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { IZkETH } from \"../interfaces/IZkETH.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\n\n/**\n * @title ZkETHOracle\n * @author Venus\n * @notice This oracle fetches the price of zkETH\n */\ncontract ZkETHOracle is CorrelatedTokenOracle {\n /// @notice Constructor for the implementation contract.\n constructor(\n address zkETH,\n address rzkETH,\n address resilientOracle,\n uint256 annualGrowthRate,\n uint256 _snapshotInterval,\n uint256 initialSnapshotMaxExchangeRate,\n uint256 initialSnapshotTimestamp,\n address accessControlManager,\n uint256 _snapshotGap\n )\n CorrelatedTokenOracle(\n zkETH,\n rzkETH,\n resilientOracle,\n annualGrowthRate,\n _snapshotInterval,\n initialSnapshotMaxExchangeRate,\n initialSnapshotTimestamp,\n accessControlManager,\n _snapshotGap\n )\n {}\n\n /**\n * @notice Gets the amount of rzkETH for 1 zkETH\n * @return amount Amount of rzkETH\n */\n function getUnderlyingAmount() public view override returns (uint256) {\n return IZkETH(CORRELATED_TOKEN).LSTPerToken();\n }\n}\n" + }, + "contracts/ReferenceOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\n// SPDX-FileCopyrightText: 2025 Venus\npragma solidity 0.8.25;\n\nimport { Ownable2StepUpgradeable } from \"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\nimport { ResilientOracleInterface, OracleInterface } from \"./interfaces/OracleInterface.sol\";\n\n/**\n * @title ReferenceOracle\n * @author Venus\n * @notice Reference oracle is the oracle that is not used for production but required for\n * price monitoring. This oracle contains some extra configurations for assets required to\n * compute reference prices of their derivative assets (OneJump, ERC4626, Pendle, etc.)\n */\ncontract ReferenceOracle is Ownable2StepUpgradeable, OracleInterface {\n struct ExternalPrice {\n /// @notice asset address\n address asset;\n /// @notice price of the asset from an external source\n uint256 price;\n }\n\n /// @notice Slot to temporarily store price information from external sources\n /// like CMC/Coingecko, useful to compute prices of derivative assets based on\n /// prices of the base assets with no on chain price information\n bytes32 public constant PRICES_SLOT = keccak256(abi.encode(\"venus-protocol/oracle/ReferenceOracle/prices\"));\n\n /// @notice Resilient oracle address\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n ResilientOracleInterface public immutable RESILIENT_ORACLE;\n\n /// @notice Oracle configuration for assets\n mapping(address => OracleInterface) public oracles;\n\n /// @notice Event emitted when an oracle is set\n event OracleConfigured(address indexed asset, address indexed oracle);\n\n /**\n * @notice Constructor for the implementation contract. Sets immutable variables.\n * @param resilientOracle Resilient oracle address\n * @custom:error ZeroAddressNotAllowed is thrown if resilient oracle address is null\n * @custom:oz-upgrades-unsafe-allow constructor\n */\n constructor(ResilientOracleInterface resilientOracle) {\n ensureNonzeroAddress(address(resilientOracle));\n RESILIENT_ORACLE = resilientOracle;\n _disableInitializers();\n }\n\n /**\n * @notice Initializes the contract admin\n */\n function initialize() external initializer {\n __Ownable2Step_init();\n }\n\n /**\n * @notice Sets an oracle to use for a specific asset\n * @dev The production resilientOracle will be used if zero address is passed\n * @param asset Asset address\n * @param oracle Oracle address\n * @custom:access Only owner\n * @custom:error ZeroAddressNotAllowed is thrown if asset address is null\n * @custom:event Emits OracleConfigured event\n */\n function setOracle(address asset, OracleInterface oracle) external onlyOwner {\n ensureNonzeroAddress(asset);\n oracles[asset] = OracleInterface(oracle);\n emit OracleConfigured(asset, address(oracle));\n }\n\n /**\n * @notice Gets price of the asset assuming other assets have the defined price\n * @param asset asset address\n * @param externalPrices an array of prices for other assets\n * @return USD price in scaled decimal places\n */\n function getPriceAssuming(address asset, ExternalPrice[] memory externalPrices) external returns (uint256) {\n uint256 externalPricesCount = externalPrices.length;\n for (uint256 i = 0; i < externalPricesCount; ++i) {\n _storeExternalPrice(externalPrices[i].asset, externalPrices[i].price);\n }\n return _getPrice(asset);\n }\n\n /**\n * @notice Gets price of the asset\n * @param asset asset address\n * @return USD price in scaled decimal places\n */\n function getPrice(address asset) external view override returns (uint256) {\n return _getPrice(asset);\n }\n\n function _storeExternalPrice(address asset, uint256 price) internal {\n bytes32 slot = keccak256(abi.encode(PRICES_SLOT, asset));\n // solhint-disable-next-line no-inline-assembly\n assembly (\"memory-safe\") {\n tstore(slot, price)\n }\n }\n\n function _getPrice(address asset) internal view returns (uint256) {\n uint256 externalPrice = _loadExternalPrice(asset);\n if (externalPrice != 0) {\n return externalPrice;\n }\n OracleInterface oracle = oracles[asset];\n if (oracle != OracleInterface(address(0))) {\n return oracle.getPrice(asset);\n }\n return RESILIENT_ORACLE.getPrice(asset);\n }\n\n function _loadExternalPrice(address asset) internal view returns (uint256 value) {\n bytes32 slot = keccak256(abi.encode(PRICES_SLOT, asset));\n // solhint-disable-next-line no-inline-assembly\n assembly (\"memory-safe\") {\n value := tload(slot)\n }\n }\n}\n" + }, + "contracts/ResilientOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\n// SPDX-FileCopyrightText: 2022 Venus\npragma solidity 0.8.25;\n\nimport { PausableUpgradeable } from \"@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol\";\nimport { VBep20Interface } from \"./interfaces/VBep20Interface.sol\";\nimport { OracleInterface, ResilientOracleInterface, BoundValidatorInterface } from \"./interfaces/OracleInterface.sol\";\nimport { AccessControlledV8 } from \"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol\";\nimport { ICappedOracle } from \"./interfaces/ICappedOracle.sol\";\nimport { Transient } from \"./lib/Transient.sol\";\n\n/**\n * @title ResilientOracle\n * @author Venus\n * @notice The Resilient Oracle is the main contract that the protocol uses to fetch prices of assets.\n *\n * DeFi protocols are vulnerable to price oracle failures including oracle manipulation and incorrectly\n * reported prices. If only one oracle is used, this creates a single point of failure and opens a vector\n * for attacking the protocol.\n *\n * The Resilient Oracle uses multiple sources and fallback mechanisms to provide accurate prices and protect\n * the protocol from oracle attacks.\n *\n * For every market (vToken) we configure the main, pivot and fallback oracles. The oracles are configured per\n * vToken's underlying asset address. The main oracle oracle is the most trustworthy price source, the pivot\n * oracle is used as a loose sanity checker and the fallback oracle is used as a backup price source.\n *\n * To validate prices returned from two oracles, we use an upper and lower bound ratio that is set for every\n * market. The upper bound ratio represents the deviation between reported price (the price that’s being\n * validated) and the anchor price (the price we are validating against) above which the reported price will\n * be invalidated. The lower bound ratio presents the deviation between reported price and anchor price below\n * which the reported price will be invalidated. So for oracle price to be considered valid the below statement\n * should be true:\n\n```\nanchorRatio = anchorPrice/reporterPrice\nisValid = anchorRatio <= upperBoundAnchorRatio && anchorRatio >= lowerBoundAnchorRatio\n```\n\n * In most cases, Chainlink is used as the main oracle, other oracles are used as the pivot oracle depending\n * on which supports the given market and Binance oracle is used as the fallback oracle.\n *\n * For a fetched price to be valid it must be positive and not stagnant. If the price is invalid then we consider the\n * oracle to be stagnant and treat it like it's disabled.\n */\ncontract ResilientOracle is PausableUpgradeable, AccessControlledV8, ResilientOracleInterface {\n /**\n * @dev Oracle roles:\n * **main**: The most trustworthy price source\n * **pivot**: Price oracle used as a loose sanity checker\n * **fallback**: The backup source when main oracle price is invalidated\n */\n enum OracleRole {\n MAIN,\n PIVOT,\n FALLBACK\n }\n\n struct TokenConfig {\n /// @notice asset address\n address asset;\n /// @notice `oracles` stores the oracles based on their role in the following order:\n /// [main, pivot, fallback],\n /// It can be indexed with the corresponding enum OracleRole value\n address[3] oracles;\n /// @notice `enableFlagsForOracles` stores the enabled state\n /// for each oracle in the same order as `oracles`\n bool[3] enableFlagsForOracles;\n /// @notice `cachingEnabled` is a flag that indicates whether the asset price should be cached\n bool cachingEnabled;\n }\n\n uint256 public constant INVALID_PRICE = 0;\n\n /// @notice Native market address\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n address public immutable nativeMarket;\n\n /// @notice VAI address\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n address public immutable vai;\n\n /// @notice Set this as asset address for Native token on each chain.This is the underlying for vBNB (on bsc)\n /// and can serve as any underlying asset of a market that supports native tokens\n address public constant NATIVE_TOKEN_ADDR = 0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB;\n\n /// @notice Slot to cache the asset's price, used for transient storage\n /// custom:storage-location erc7201:venus-protocol/oracle/ResilientOracle/cache\n /// keccak256(abi.encode(uint256(keccak256(\"venus-protocol/oracle/ResilientOracle/cache\")) - 1))\n /// & ~bytes32(uint256(0xff))\n bytes32 public constant CACHE_SLOT = 0x4e99ec55972332f5e0ef9c6623192c0401b609161bffae64d9ccdd7ad6cc7800;\n\n /// @notice Bound validator contract address\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n BoundValidatorInterface public immutable boundValidator;\n\n mapping(address => TokenConfig) private tokenConfigs;\n\n event TokenConfigAdded(\n address indexed asset,\n address indexed mainOracle,\n address indexed pivotOracle,\n address fallbackOracle\n );\n\n /// Event emitted when an oracle is set\n event OracleSet(address indexed asset, address indexed oracle, uint256 indexed role);\n\n /// Event emitted when an oracle is enabled or disabled\n event OracleEnabled(address indexed asset, uint256 indexed role, bool indexed enable);\n\n /// Event emitted when an asset cachingEnabled flag is set\n event CachedEnabled(address indexed asset, bool indexed enabled);\n\n /**\n * @notice Checks whether an address is null or not\n */\n modifier notNullAddress(address someone) {\n if (someone == address(0)) revert(\"can't be zero address\");\n _;\n }\n\n /**\n * @notice Checks whether token config exists by checking whether asset is null address\n * @dev address can't be null, so it's suitable to be used to check the validity of the config\n * @param asset asset address\n */\n modifier checkTokenConfigExistence(address asset) {\n if (tokenConfigs[asset].asset == address(0)) revert(\"token config must exist\");\n _;\n }\n\n /// @notice Constructor for the implementation contract. Sets immutable variables.\n /// @dev nativeMarketAddress can be address(0) if on the chain we do not support native market\n /// (e.g vETH on ethereum would not be supported, only vWETH)\n /// @param nativeMarketAddress The address of a native market (for bsc it would be vBNB address)\n /// @param vaiAddress The address of the VAI token (if there is VAI on the deployed chain).\n /// Set to address(0) of VAI is not existent.\n /// @param _boundValidator Address of the bound validator contract\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor(\n address nativeMarketAddress,\n address vaiAddress,\n BoundValidatorInterface _boundValidator\n ) notNullAddress(address(_boundValidator)) {\n nativeMarket = nativeMarketAddress;\n vai = vaiAddress;\n boundValidator = _boundValidator;\n\n _disableInitializers();\n }\n\n /**\n * @notice Initializes the contract admin and sets the BoundValidator contract address\n * @param accessControlManager_ Address of the access control manager contract\n */\n function initialize(address accessControlManager_) external initializer {\n __AccessControlled_init(accessControlManager_);\n __Pausable_init();\n }\n\n /**\n * @notice Pauses oracle\n * @custom:access Only Governance\n */\n function pause() external {\n _checkAccessAllowed(\"pause()\");\n _pause();\n }\n\n /**\n * @notice Unpauses oracle\n * @custom:access Only Governance\n */\n function unpause() external {\n _checkAccessAllowed(\"unpause()\");\n _unpause();\n }\n\n /**\n * @notice Batch sets token configs\n * @param tokenConfigs_ Token config array\n * @custom:access Only Governance\n * @custom:error Throws a length error if the length of the token configs array is 0\n */\n function setTokenConfigs(TokenConfig[] memory tokenConfigs_) external {\n if (tokenConfigs_.length == 0) revert(\"length can't be 0\");\n uint256 numTokenConfigs = tokenConfigs_.length;\n for (uint256 i; i < numTokenConfigs; ++i) {\n setTokenConfig(tokenConfigs_[i]);\n }\n }\n\n /**\n * @notice Sets oracle for a given asset and role.\n * @dev Supplied asset **must** exist and main oracle may not be null\n * @param asset Asset address\n * @param oracle Oracle address\n * @param role Oracle role\n * @custom:access Only Governance\n * @custom:error Null address error if main-role oracle address is null\n * @custom:error NotNullAddress error is thrown if asset address is null\n * @custom:error TokenConfigExistance error is thrown if token config is not set\n * @custom:event Emits OracleSet event with asset address, oracle address and role of the oracle for the asset\n */\n function setOracle(\n address asset,\n address oracle,\n OracleRole role\n ) external notNullAddress(asset) checkTokenConfigExistence(asset) {\n _checkAccessAllowed(\"setOracle(address,address,uint8)\");\n if (oracle == address(0) && role == OracleRole.MAIN) revert(\"can't set zero address to main oracle\");\n tokenConfigs[asset].oracles[uint256(role)] = oracle;\n emit OracleSet(asset, oracle, uint256(role));\n }\n\n /**\n * @notice Enables/ disables oracle for the input asset. Token config for the input asset **must** exist\n * @dev Configuration for the asset **must** already exist and the asset cannot be 0 address\n * @param asset Asset address\n * @param role Oracle role\n * @param enable Enabled boolean of the oracle\n * @custom:access Only Governance\n * @custom:error NotNullAddress error is thrown if asset address is null\n * @custom:error TokenConfigExistance error is thrown if token config is not set\n * @custom:event Emits OracleEnabled event with asset address, role of the oracle and enabled flag\n */\n function enableOracle(\n address asset,\n OracleRole role,\n bool enable\n ) external notNullAddress(asset) checkTokenConfigExistence(asset) {\n _checkAccessAllowed(\"enableOracle(address,uint8,bool)\");\n tokenConfigs[asset].enableFlagsForOracles[uint256(role)] = enable;\n emit OracleEnabled(asset, uint256(role), enable);\n }\n\n /**\n * @notice Updates the capped main oracle snapshot.\n * @dev This function should always be called before calling getUnderlyingPrice\n * @param vToken vToken address\n */\n function updatePrice(address vToken) external override {\n address asset = _getUnderlyingAsset(vToken);\n _updateAssetPrice(asset);\n }\n\n /**\n * @notice Updates the capped main oracle snapshot.\n * @dev This function should always be called before calling getPrice\n * @param asset asset address\n */\n function updateAssetPrice(address asset) external {\n _updateAssetPrice(asset);\n }\n\n /**\n * @dev Gets token config by asset address\n * @param asset asset address\n * @return tokenConfig Config for the asset\n */\n function getTokenConfig(address asset) external view returns (TokenConfig memory) {\n return tokenConfigs[asset];\n }\n\n /**\n * @notice Gets price of the underlying asset for a given vToken. Validation flow:\n * - Check if the oracle is paused globally\n * - Validate price from main oracle against pivot oracle\n * - Validate price from fallback oracle against pivot oracle if the first validation failed\n * - Validate price from main oracle against fallback oracle if the second validation failed\n * In the case that the pivot oracle is not available but main price is available and validation is successful,\n * main oracle price is returned.\n * @param vToken vToken address\n * @return price USD price in scaled decimal places.\n * @custom:error Paused error is thrown when resilent oracle is paused\n * @custom:error Invalid resilient oracle price error is thrown if fetched prices from oracle is invalid\n */\n function getUnderlyingPrice(address vToken) external view override returns (uint256) {\n if (paused()) revert(\"resilient oracle is paused\");\n\n address asset = _getUnderlyingAsset(vToken);\n return _getPrice(asset);\n }\n\n /**\n * @notice Gets price of the asset\n * @param asset asset address\n * @return price USD price in scaled decimal places.\n * @custom:error Paused error is thrown when resilent oracle is paused\n * @custom:error Invalid resilient oracle price error is thrown if fetched prices from oracle is invalid\n */\n function getPrice(address asset) external view override returns (uint256) {\n if (paused()) revert(\"resilient oracle is paused\");\n return _getPrice(asset);\n }\n\n /**\n * @notice Sets/resets single token configs.\n * @dev main oracle **must not** be a null address\n * @param tokenConfig Token config struct\n * @custom:access Only Governance\n * @custom:error NotNullAddress is thrown if asset address is null\n * @custom:error NotNullAddress is thrown if main-role oracle address for asset is null\n * @custom:event Emits TokenConfigAdded event when the asset config is set successfully by the authorized account\n * @custom:event Emits CachedEnabled event when the asset cachingEnabled flag is set successfully\n */\n function setTokenConfig(\n TokenConfig memory tokenConfig\n ) public notNullAddress(tokenConfig.asset) notNullAddress(tokenConfig.oracles[uint256(OracleRole.MAIN)]) {\n _checkAccessAllowed(\"setTokenConfig(TokenConfig)\");\n\n tokenConfigs[tokenConfig.asset] = tokenConfig;\n emit TokenConfigAdded(\n tokenConfig.asset,\n tokenConfig.oracles[uint256(OracleRole.MAIN)],\n tokenConfig.oracles[uint256(OracleRole.PIVOT)],\n tokenConfig.oracles[uint256(OracleRole.FALLBACK)]\n );\n emit CachedEnabled(tokenConfig.asset, tokenConfig.cachingEnabled);\n }\n\n /**\n * @notice Gets oracle and enabled status by asset address\n * @param asset asset address\n * @param role Oracle role\n * @return oracle Oracle address based on role\n * @return enabled Enabled flag of the oracle based on token config\n */\n function getOracle(address asset, OracleRole role) public view returns (address oracle, bool enabled) {\n oracle = tokenConfigs[asset].oracles[uint256(role)];\n enabled = tokenConfigs[asset].enableFlagsForOracles[uint256(role)];\n }\n\n /**\n * @notice Updates the capped oracle snapshot.\n * @dev Cache the asset price and return if already cached\n * @param asset asset address\n */\n function _updateAssetPrice(address asset) internal {\n if (Transient.readCachedPrice(CACHE_SLOT, asset) != 0) {\n return;\n }\n\n (address mainOracle, bool mainOracleEnabled) = getOracle(asset, OracleRole.MAIN);\n if (mainOracle != address(0) && mainOracleEnabled) {\n // if main oracle is not CorrelatedTokenOracle it will revert so we need to catch the revert\n try ICappedOracle(mainOracle).updateSnapshot() {} catch {}\n }\n\n if (_isCacheEnabled(asset)) {\n uint256 price = _getPrice(asset);\n Transient.cachePrice(CACHE_SLOT, asset, price);\n }\n }\n\n /**\n * @notice Gets price for the provided asset\n * @param asset asset address\n * @return price USD price in scaled decimal places.\n * @custom:error Invalid resilient oracle price error is thrown if fetched prices from oracle is invalid\n */\n function _getPrice(address asset) internal view returns (uint256) {\n uint256 pivotPrice = INVALID_PRICE;\n uint256 price;\n\n price = Transient.readCachedPrice(CACHE_SLOT, asset);\n if (price != 0) {\n return price;\n }\n\n // Get pivot oracle price, Invalid price if not available or error\n (address pivotOracle, bool pivotOracleEnabled) = getOracle(asset, OracleRole.PIVOT);\n if (pivotOracleEnabled && pivotOracle != address(0)) {\n try OracleInterface(pivotOracle).getPrice(asset) returns (uint256 pricePivot) {\n pivotPrice = pricePivot;\n } catch {}\n }\n\n // Compare main price and pivot price, return main price and if validation was successful\n // note: In case pivot oracle is not available but main price is available and\n // validation is successful, the main oracle price is returned.\n (uint256 mainPrice, bool validatedPivotMain) = _getMainOraclePrice(\n asset,\n pivotPrice,\n pivotOracleEnabled && pivotOracle != address(0)\n );\n if (mainPrice != INVALID_PRICE && validatedPivotMain) return mainPrice;\n\n // Compare fallback and pivot if main oracle comparision fails with pivot\n // Return fallback price when fallback price is validated successfully with pivot oracle\n (uint256 fallbackPrice, bool validatedPivotFallback) = _getFallbackOraclePrice(asset, pivotPrice);\n if (fallbackPrice != INVALID_PRICE && validatedPivotFallback) return fallbackPrice;\n\n // Lastly compare main price and fallback price\n if (\n mainPrice != INVALID_PRICE &&\n fallbackPrice != INVALID_PRICE &&\n boundValidator.validatePriceWithAnchorPrice(asset, mainPrice, fallbackPrice)\n ) {\n return mainPrice;\n }\n\n revert(\"invalid resilient oracle price\");\n }\n\n /**\n * @notice Gets a price for the provided asset\n * @dev This function won't revert when price is 0, because the fallback oracle may still be\n * able to fetch a correct price\n * @param asset asset address\n * @param pivotPrice Pivot oracle price\n * @param pivotEnabled If pivot oracle is not empty and enabled\n * @return price USD price in scaled decimals\n * e.g. asset decimals is 8 then price is returned as 10**18 * 10**(18-8) = 10**28 decimals\n * @return pivotValidated Boolean representing if the validation of main oracle price\n * and pivot oracle price were successful\n * @custom:error Invalid price error is thrown if main oracle fails to fetch price of the asset\n * @custom:error Invalid price error is thrown if main oracle is not enabled or main oracle\n * address is null\n */\n function _getMainOraclePrice(\n address asset,\n uint256 pivotPrice,\n bool pivotEnabled\n ) internal view returns (uint256, bool) {\n (address mainOracle, bool mainOracleEnabled) = getOracle(asset, OracleRole.MAIN);\n if (mainOracleEnabled && mainOracle != address(0)) {\n try OracleInterface(mainOracle).getPrice(asset) returns (uint256 mainOraclePrice) {\n if (!pivotEnabled) {\n return (mainOraclePrice, true);\n }\n if (pivotPrice == INVALID_PRICE) {\n return (mainOraclePrice, false);\n }\n return (\n mainOraclePrice,\n boundValidator.validatePriceWithAnchorPrice(asset, mainOraclePrice, pivotPrice)\n );\n } catch {\n return (INVALID_PRICE, false);\n }\n }\n\n return (INVALID_PRICE, false);\n }\n\n /**\n * @dev This function won't revert when the price is 0 because getPrice checks if price is > 0\n * @param asset asset address\n * @return price USD price in 18 decimals\n * @return pivotValidated Boolean representing if the validation of fallback oracle price\n * and pivot oracle price were successfully\n * @custom:error Invalid price error is thrown if fallback oracle fails to fetch price of the asset\n * @custom:error Invalid price error is thrown if fallback oracle is not enabled or fallback oracle\n * address is null\n */\n function _getFallbackOraclePrice(address asset, uint256 pivotPrice) private view returns (uint256, bool) {\n (address fallbackOracle, bool fallbackEnabled) = getOracle(asset, OracleRole.FALLBACK);\n if (fallbackEnabled && fallbackOracle != address(0)) {\n try OracleInterface(fallbackOracle).getPrice(asset) returns (uint256 fallbackOraclePrice) {\n if (pivotPrice == INVALID_PRICE) {\n return (fallbackOraclePrice, false);\n }\n return (\n fallbackOraclePrice,\n boundValidator.validatePriceWithAnchorPrice(asset, fallbackOraclePrice, pivotPrice)\n );\n } catch {\n return (INVALID_PRICE, false);\n }\n }\n\n return (INVALID_PRICE, false);\n }\n\n /**\n * @dev This function returns the underlying asset of a vToken\n * @param vToken vToken address\n * @return asset underlying asset address\n */\n function _getUnderlyingAsset(address vToken) private view notNullAddress(vToken) returns (address asset) {\n if (vToken == nativeMarket) {\n asset = NATIVE_TOKEN_ADDR;\n } else if (vToken == vai) {\n asset = vai;\n } else {\n asset = VBep20Interface(vToken).underlying();\n }\n }\n\n /**\n * @dev This function checks if the asset price should be cached\n * @param asset asset address\n * @return bool true if caching is enabled, false otherwise\n */\n function _isCacheEnabled(address asset) private view returns (bool) {\n return tokenConfigs[asset].cachingEnabled;\n }\n}\n" + }, + "contracts/test/BEP20Harness.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\ncontract BEP20Harness is ERC20 {\n uint8 public decimalsInternal = 18;\n\n constructor(string memory name_, string memory symbol_, uint8 decimals_) ERC20(name_, symbol_) {\n decimalsInternal = decimals_;\n }\n\n function faucet(uint256 amount) external {\n _mint(msg.sender, amount);\n }\n\n function decimals() public view virtual override returns (uint8) {\n return decimalsInternal;\n }\n}\n" + }, + "contracts/test/MockAnkrBNB.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.0;\n\nimport { ERC20 } from \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport { IAnkrBNB } from \"../interfaces/IAnkrBNB.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\ncontract MockAnkrBNB is ERC20, Ownable, IAnkrBNB {\n uint8 private immutable _decimals;\n uint256 public exchangeRate;\n\n constructor(string memory name_, string memory symbol_, uint8 decimals_) ERC20(name_, symbol_) Ownable() {\n _decimals = decimals_;\n }\n\n function faucet(uint256 amount) external {\n _mint(msg.sender, amount);\n }\n\n function setSharesToBonds(uint256 rate) external onlyOwner {\n exchangeRate = rate;\n }\n\n function sharesToBonds(uint256 amount) external view override returns (uint256) {\n return (amount * exchangeRate) / (10 ** uint256(_decimals));\n }\n\n function decimals() public view virtual override(ERC20, IAnkrBNB) returns (uint8) {\n return _decimals;\n }\n}\n" + }, + "contracts/test/MockAsBNB.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.0;\n\nimport { ERC20 } from \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport { IAsBNB } from \"../interfaces/IAsBNB.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\ncontract MockAsBNB is ERC20, Ownable, IAsBNB {\n uint8 private immutable _decimals;\n address public minter;\n\n constructor(\n string memory name_,\n string memory symbol_,\n uint8 decimals_,\n address minter_\n ) ERC20(name_, symbol_) Ownable() {\n _decimals = decimals_;\n minter = minter_;\n }\n\n function faucet(uint256 amount) external {\n _mint(msg.sender, amount);\n }\n\n function setMinter(address minter_) external onlyOwner {\n minter = minter_;\n }\n\n function decimals() public view virtual override(ERC20, IAsBNB) returns (uint8) {\n return _decimals;\n }\n}\n" + }, + "contracts/test/MockAsBNBMinter.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.0;\n\nimport { IAsBNBMinter } from \"../interfaces/IAsBNBMinter.sol\";\n\ncontract MockAsBNBMinter is IAsBNBMinter {\n function convertToTokens(uint256 _amount) external pure override returns (uint256) {\n return _amount;\n }\n}\n" + }, + "contracts/test/MockCallPrice.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.0;\n\nimport { OracleInterface, ResilientOracleInterface } from \"../interfaces/OracleInterface.sol\";\n\ninterface CorrelatedTokenOracleInterface {\n function updateSnapshot() external;\n function getPrice(address asset) external view returns (uint256);\n}\n\ncontract MockCallPrice {\n function getMultiPrice(CorrelatedTokenOracleInterface oracle, address asset) public returns (uint256, uint256) {\n oracle.updateSnapshot();\n return (oracle.getPrice(asset), oracle.getPrice(asset));\n }\n\n function getUnderlyingPriceResilientOracle(\n ResilientOracleInterface oracle,\n address vToken\n ) public returns (uint256, uint256) {\n oracle.updatePrice(vToken);\n oracle.updatePrice(vToken);\n return (oracle.getUnderlyingPrice(vToken), oracle.getUnderlyingPrice(vToken));\n }\n\n function getAssetPriceResilientOracle(\n ResilientOracleInterface oracle,\n address asset\n ) public returns (uint256, uint256) {\n oracle.updateAssetPrice(asset);\n oracle.updateAssetPrice(asset);\n return (oracle.getPrice(asset), oracle.getPrice(asset));\n }\n}\n" + }, + "contracts/test/MockEtherFiLiquidityPool.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"../interfaces/IEtherFiLiquidityPool.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\ncontract MockEtherFiLiquidityPool is IEtherFiLiquidityPool, Ownable {\n /// @notice The amount of eETH per weETH scaled by 1e18\n uint256 public amountPerShare;\n\n constructor() Ownable() {}\n\n function setAmountPerShare(uint256 _amountPerShare) external onlyOwner {\n amountPerShare = _amountPerShare;\n }\n\n function amountForShare(uint256 _share) external view override returns (uint256) {\n return (_share * amountPerShare) / 1e18;\n }\n}\n" + }, + "contracts/test/MockSFrax.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.0;\n\nimport { ERC20 } from \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport { ISFrax } from \"../interfaces/ISFrax.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\ncontract MockSFrax is ERC20, Ownable, ISFrax {\n uint8 private immutable _decimals;\n uint256 public exchangeRate;\n\n constructor(string memory name_, string memory symbol_, uint8 decimals_) ERC20(name_, symbol_) Ownable() {\n _decimals = decimals_;\n }\n\n function faucet(uint256 amount) external {\n _mint(msg.sender, amount);\n }\n\n function setRate(uint256 rate) external onlyOwner {\n exchangeRate = rate;\n }\n\n function convertToAssets(uint256 shares) external view override returns (uint256) {\n return (shares * exchangeRate) / (10 ** uint256(_decimals));\n }\n\n function decimals() public view virtual override(ERC20, ISFrax) returns (uint8) {\n return _decimals;\n }\n}\n" + }, + "contracts/test/MockSimpleOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"../interfaces/OracleInterface.sol\";\n\ncontract MockSimpleOracle is OracleInterface {\n mapping(address => uint256) public prices;\n\n constructor() {\n //\n }\n\n function getUnderlyingPrice(address vToken) external view returns (uint256) {\n return prices[vToken];\n }\n\n function getPrice(address asset) external view returns (uint256) {\n return prices[asset];\n }\n\n function setPrice(address vToken, uint256 price) public {\n prices[vToken] = price;\n }\n}\n\ncontract MockBoundValidator is BoundValidatorInterface {\n mapping(address => bool) public validateResults;\n bool public twapUpdated;\n\n constructor() {\n //\n }\n\n function validatePriceWithAnchorPrice(\n address vToken,\n uint256 reporterPrice,\n uint256 anchorPrice\n ) external view returns (bool) {\n return validateResults[vToken];\n }\n\n function validateAssetPriceWithAnchorPrice(\n address asset,\n uint256 reporterPrice,\n uint256 anchorPrice\n ) external view returns (bool) {\n return validateResults[asset];\n }\n\n function setValidateResult(address token, bool pass) public {\n validateResults[token] = pass;\n }\n}\n" + }, + "contracts/test/MockV3Aggregator.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"@chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol\";\n\n/**\n * @title MockV3Aggregator\n * @notice Based on the FluxAggregator contract\n * @notice Use this contract when you need to test\n * other contract's ability to read data from an\n * aggregator contract, but how the aggregator got\n * its answer is unimportant\n */\ncontract MockV3Aggregator is AggregatorV2V3Interface {\n uint256 public constant version = 0;\n\n uint8 public decimals;\n int256 public latestAnswer;\n uint256 public latestTimestamp;\n uint256 public latestRound;\n\n mapping(uint256 => int256) public getAnswer;\n mapping(uint256 => uint256) public getTimestamp;\n mapping(uint256 => uint256) private getStartedAt;\n\n constructor(uint8 _decimals, int256 _initialAnswer) {\n decimals = _decimals;\n updateAnswer(_initialAnswer);\n }\n\n function getRoundData(\n uint80 _roundId\n )\n external\n view\n returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound)\n {\n return (_roundId, getAnswer[_roundId], getStartedAt[_roundId], getTimestamp[_roundId], _roundId);\n }\n\n function latestRoundData()\n external\n view\n returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound)\n {\n return (\n uint80(latestRound),\n getAnswer[latestRound],\n getStartedAt[latestRound],\n getTimestamp[latestRound],\n uint80(latestRound)\n );\n }\n\n function description() external pure returns (string memory) {\n return \"v0.6/tests/MockV3Aggregator.sol\";\n }\n\n function updateAnswer(int256 _answer) public {\n latestAnswer = _answer;\n latestTimestamp = block.timestamp;\n latestRound++;\n getAnswer[latestRound] = _answer;\n getTimestamp[latestRound] = block.timestamp;\n getStartedAt[latestRound] = block.timestamp;\n }\n\n function updateRoundData(uint80 _roundId, int256 _answer, uint256 _timestamp, uint256 _startedAt) public {\n latestRound = _roundId;\n latestAnswer = _answer;\n latestTimestamp = _timestamp;\n getAnswer[latestRound] = _answer;\n getTimestamp[latestRound] = _timestamp;\n getStartedAt[latestRound] = _startedAt;\n }\n}\n" + }, + "contracts/test/MockWBETH.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.0;\n\nimport { ERC20 } from \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport { IWBETH } from \"../interfaces/IWBETH.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\ncontract MockWBETH is ERC20, Ownable, IWBETH {\n uint8 private immutable _decimals;\n uint256 public override exchangeRate;\n\n constructor(string memory name_, string memory symbol_, uint8 decimals_) ERC20(name_, symbol_) Ownable() {\n _decimals = decimals_;\n }\n\n function faucet(uint256 amount) external {\n _mint(msg.sender, amount);\n }\n\n function setExchangeRate(uint256 rate) external onlyOwner {\n exchangeRate = rate;\n }\n\n function decimals() public view virtual override(ERC20, IWBETH) returns (uint8) {\n return _decimals;\n }\n}\n" + }, + "contracts/test/oracles/MockCorrelatedTokenOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { CorrelatedTokenOracle } from \"../../oracles/common/CorrelatedTokenOracle.sol\";\n\ncontract MockCorrelatedTokenOracle is CorrelatedTokenOracle {\n uint256 public mockUnderlyingAmount;\n\n constructor(\n address correlatedToken,\n address underlyingToken,\n address resilientOracle,\n uint256 annualGrowthRate,\n uint256 snapshotInterval,\n uint256 initialSnapshotMaxExchangeRate,\n uint256 initialSnapshotTimestamp,\n address accessControlManager,\n uint256 snapshotGap\n )\n CorrelatedTokenOracle(\n correlatedToken,\n underlyingToken,\n resilientOracle,\n annualGrowthRate,\n snapshotInterval,\n initialSnapshotMaxExchangeRate,\n initialSnapshotTimestamp,\n accessControlManager,\n snapshotGap\n )\n {}\n\n function setMockUnderlyingAmount(uint256 amount) external {\n mockUnderlyingAmount = amount;\n }\n\n function getUnderlyingAmount() public view override returns (uint256) {\n return mockUnderlyingAmount;\n }\n}\n" + }, + "contracts/test/oracles/MockERC20.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\ncontract MockERC20 is ERC20 {\n constructor(string memory name, string memory symbol, uint8 decimals) ERC20(name, symbol) {\n _mint(msg.sender, 100000 * 10 ** uint256(decimals));\n }\n}\n" + }, + "contracts/test/oracles/MockResilientOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"../../interfaces/OracleInterface.sol\";\n\ncontract MockOracle is OracleInterface {\n mapping(address => uint256) public prices;\n\n function getPrice(address asset) external view returns (uint256) {\n return prices[asset];\n }\n\n function setPrice(address vToken, uint256 price) public {\n prices[vToken] = price;\n }\n}\n" + }, + "contracts/test/PancakePairHarness.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\n// a library for performing various math operations\n\nlibrary Math {\n function min(uint256 x, uint256 y) internal pure returns (uint256 z) {\n z = x < y ? x : y;\n }\n\n // babylonian method (https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method)\n function sqrt(uint256 y) internal pure returns (uint256 z) {\n if (y > 3) {\n z = y;\n uint256 x = y / 2 + 1;\n while (x < z) {\n z = x;\n x = (y / x + x) / 2;\n }\n } else if (y != 0) {\n z = 1;\n }\n }\n}\n\n// range: [0, 2**112 - 1]\n// resolution: 1 / 2**112\n\nlibrary UQ112x112 {\n //solhint-disable-next-line state-visibility\n uint224 constant Q112 = 2 ** 112;\n\n // encode a uint112 as a UQ112x112\n function encode(uint112 y) internal pure returns (uint224 z) {\n z = uint224(y) * Q112; // never overflows\n }\n\n // divide a UQ112x112 by a uint112, returning a UQ112x112\n function uqdiv(uint224 x, uint112 y) internal pure returns (uint224 z) {\n z = x / uint224(y);\n }\n}\n\ncontract PancakePairHarness {\n using UQ112x112 for uint224;\n\n address public token0;\n address public token1;\n\n uint112 private reserve0; // uses single storage slot, accessible via getReserves\n uint112 private reserve1; // uses single storage slot, accessible via getReserves\n uint32 private blockTimestampLast; // uses single storage slot, accessible via getReserves\n\n uint256 public price0CumulativeLast;\n uint256 public price1CumulativeLast;\n uint256 public kLast; // reserve0 * reserve1, as of immediately after the most recent liquidity event\n\n // called once by the factory at time of deployment\n function initialize(address _token0, address _token1) external {\n token0 = _token0;\n token1 = _token1;\n }\n\n // update reserves and, on the first call per block, price accumulators\n function update(uint256 balance0, uint256 balance1, uint112 _reserve0, uint112 _reserve1) external {\n require(balance0 <= type(uint112).max && balance1 <= type(uint112).max, \"PancakeV2: OVERFLOW\");\n uint32 blockTimestamp = uint32(block.timestamp % 2 ** 32);\n unchecked {\n uint32 timeElapsed = blockTimestamp - blockTimestampLast; // overflow is desired\n if (timeElapsed > 0 && _reserve0 != 0 && _reserve1 != 0) {\n // * never overflows, and + overflow is desired\n price0CumulativeLast += uint256(UQ112x112.encode(_reserve1).uqdiv(_reserve0)) * timeElapsed;\n price1CumulativeLast += uint256(UQ112x112.encode(_reserve0).uqdiv(_reserve1)) * timeElapsed;\n }\n }\n reserve0 = uint112(balance0);\n reserve1 = uint112(balance1);\n blockTimestampLast = blockTimestamp;\n }\n\n function currentBlockTimestamp() external view returns (uint32) {\n return uint32(block.timestamp % 2 ** 32);\n }\n\n function getReserves() public view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) {\n _reserve0 = reserve0;\n _reserve1 = reserve1;\n _blockTimestampLast = blockTimestampLast;\n }\n}\n" + }, + "contracts/test/VBEP20Harness.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"./BEP20Harness.sol\";\n\ncontract VBEP20Harness is BEP20Harness {\n /**\n * @notice Underlying asset for this VToken\n */\n address public underlying;\n\n constructor(\n string memory name_,\n string memory symbol_,\n uint8 decimals,\n address underlying_\n ) BEP20Harness(name_, symbol_, decimals) {\n underlying = underlying_;\n }\n}\n" + }, + "hardhat-deploy/solc_0.8/openzeppelin/access/Ownable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable is Context {\n address private _owner;\n\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n /**\n * @dev Initializes the contract setting the deployer as the initial owner.\n */\n constructor (address initialOwner) {\n _transferOwnership(initialOwner);\n }\n\n /**\n * @dev Returns the address of the current owner.\n */\n function owner() public view virtual returns (address) {\n return _owner;\n }\n\n /**\n * @dev Throws if called by any account other than the owner.\n */\n modifier onlyOwner() {\n require(owner() == _msgSender(), \"Ownable: caller is not the owner\");\n _;\n }\n\n /**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions anymore. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby removing any functionality that is only available to the owner.\n */\n function renounceOwnership() public virtual onlyOwner {\n _transferOwnership(address(0));\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public virtual onlyOwner {\n require(newOwner != address(0), \"Ownable: new owner is the zero address\");\n _transferOwnership(newOwner);\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Internal function without access restriction.\n */\n function _transferOwnership(address newOwner) internal virtual {\n address oldOwner = _owner;\n _owner = newOwner;\n emit OwnershipTransferred(oldOwner, newOwner);\n }\n}\n" + }, + "hardhat-deploy/solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (interfaces/draft-IERC1822.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n * proxy whose upgrades are fully controlled by the current implementation.\n */\ninterface IERC1822Proxiable {\n /**\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\n * address.\n *\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n * function revert if invoked through a proxy.\n */\n function proxiableUUID() external view returns (bytes32);\n}\n" + }, + "hardhat-deploy/solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\n */\ninterface IBeacon {\n /**\n * @dev Must return an address that can be used as a delegate call target.\n *\n * {BeaconProxy} will check that this address is a contract.\n */\n function implementation() external view returns (address);\n}\n" + }, + "hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (proxy/ERC1967/ERC1967Proxy.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../Proxy.sol\";\nimport \"./ERC1967Upgrade.sol\";\n\n/**\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\n * implementation address that can be changed. This address is stored in storage in the location specified by\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\n * implementation behind the proxy.\n */\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\n /**\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\n *\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\n * function call, and allows initializating the storage of the proxy like a Solidity constructor.\n */\n constructor(address _logic, bytes memory _data) payable {\n assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256(\"eip1967.proxy.implementation\")) - 1));\n _upgradeToAndCall(_logic, _data, false);\n }\n\n /**\n * @dev Returns the current implementation address.\n */\n function _implementation() internal view virtual override returns (address impl) {\n return ERC1967Upgrade._getImplementation();\n }\n}\n" + }, + "hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/ERC1967/ERC1967Upgrade.sol)\n\npragma solidity ^0.8.2;\n\nimport \"../beacon/IBeacon.sol\";\nimport \"../../interfaces/draft-IERC1822.sol\";\nimport \"../../utils/Address.sol\";\nimport \"../../utils/StorageSlot.sol\";\n\n/**\n * @dev This abstract contract provides getters and event emitting update functions for\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\n *\n * _Available since v4.1._\n *\n * @custom:oz-upgrades-unsafe-allow delegatecall\n */\nabstract contract ERC1967Upgrade {\n // This is the keccak-256 hash of \"eip1967.proxy.rollback\" subtracted by 1\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\n\n /**\n * @dev Storage slot with the address of the current implementation.\n * This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is\n * validated in the constructor.\n */\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n\n /**\n * @dev Emitted when the implementation is upgraded.\n */\n event Upgraded(address indexed implementation);\n\n /**\n * @dev Returns the current implementation address.\n */\n function _getImplementation() internal view returns (address) {\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n }\n\n /**\n * @dev Stores a new address in the EIP1967 implementation slot.\n */\n function _setImplementation(address newImplementation) private {\n require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n }\n\n /**\n * @dev Perform implementation upgrade\n *\n * Emits an {Upgraded} event.\n */\n function _upgradeTo(address newImplementation) internal {\n _setImplementation(newImplementation);\n emit Upgraded(newImplementation);\n }\n\n /**\n * @dev Perform implementation upgrade with additional setup call.\n *\n * Emits an {Upgraded} event.\n */\n function _upgradeToAndCall(\n address newImplementation,\n bytes memory data,\n bool forceCall\n ) internal {\n _upgradeTo(newImplementation);\n if (data.length > 0 || forceCall) {\n Address.functionDelegateCall(newImplementation, data);\n }\n }\n\n /**\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\n *\n * Emits an {Upgraded} event.\n */\n function _upgradeToAndCallUUPS(\n address newImplementation,\n bytes memory data,\n bool forceCall\n ) internal {\n // Upgrades from old implementations will perform a rollback test. This test requires the new\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\n // this special case will break upgrade paths from old UUPS implementation to new ones.\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\n _setImplementation(newImplementation);\n } else {\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\n require(slot == _IMPLEMENTATION_SLOT, \"ERC1967Upgrade: unsupported proxiableUUID\");\n } catch {\n revert(\"ERC1967Upgrade: new implementation is not UUPS\");\n }\n _upgradeToAndCall(newImplementation, data, forceCall);\n }\n }\n\n /**\n * @dev Storage slot with the admin of the contract.\n * This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is\n * validated in the constructor.\n */\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\n\n /**\n * @dev Emitted when the admin account has changed.\n */\n event AdminChanged(address previousAdmin, address newAdmin);\n\n /**\n * @dev Returns the current admin.\n */\n function _getAdmin() internal view virtual returns (address) {\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\n }\n\n /**\n * @dev Stores a new address in the EIP1967 admin slot.\n */\n function _setAdmin(address newAdmin) private {\n require(newAdmin != address(0), \"ERC1967: new admin is the zero address\");\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\n }\n\n /**\n * @dev Changes the admin of the proxy.\n *\n * Emits an {AdminChanged} event.\n */\n function _changeAdmin(address newAdmin) internal {\n emit AdminChanged(_getAdmin(), newAdmin);\n _setAdmin(newAdmin);\n }\n\n /**\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\n */\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\n\n /**\n * @dev Emitted when the beacon is upgraded.\n */\n event BeaconUpgraded(address indexed beacon);\n\n /**\n * @dev Returns the current beacon.\n */\n function _getBeacon() internal view returns (address) {\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\n }\n\n /**\n * @dev Stores a new beacon in the EIP1967 beacon slot.\n */\n function _setBeacon(address newBeacon) private {\n require(Address.isContract(newBeacon), \"ERC1967: new beacon is not a contract\");\n require(Address.isContract(IBeacon(newBeacon).implementation()), \"ERC1967: beacon implementation is not a contract\");\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\n }\n\n /**\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\n *\n * Emits a {BeaconUpgraded} event.\n */\n function _upgradeBeaconToAndCall(\n address newBeacon,\n bytes memory data,\n bool forceCall\n ) internal {\n _setBeacon(newBeacon);\n emit BeaconUpgraded(newBeacon);\n if (data.length > 0 || forceCall) {\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\n }\n }\n}\n" + }, + "hardhat-deploy/solc_0.8/openzeppelin/proxy/Proxy.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/Proxy.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n * be specified by overriding the virtual {_implementation} function.\n *\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n * different contract through the {_delegate} function.\n *\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\n */\nabstract contract Proxy {\n /**\n * @dev Delegates the current call to `implementation`.\n *\n * This function does not return to its internal call site, it will return directly to the external caller.\n */\n function _delegate(address implementation) internal virtual {\n assembly {\n // Copy msg.data. We take full control of memory in this inline assembly\n // block because it will not return to Solidity code. We overwrite the\n // Solidity scratch pad at memory position 0.\n calldatacopy(0, 0, calldatasize())\n\n // Call the implementation.\n // out and outsize are 0 because we don't know the size yet.\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\n\n // Copy the returned data.\n returndatacopy(0, 0, returndatasize())\n\n switch result\n // delegatecall returns 0 on error.\n case 0 {\n revert(0, returndatasize())\n }\n default {\n return(0, returndatasize())\n }\n }\n }\n\n /**\n * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\n * and {_fallback} should delegate.\n */\n function _implementation() internal view virtual returns (address);\n\n /**\n * @dev Delegates the current call to the address returned by `_implementation()`.\n *\n * This function does not return to its internall call site, it will return directly to the external caller.\n */\n function _fallback() internal virtual {\n _beforeFallback();\n _delegate(_implementation());\n }\n\n /**\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n * function in the contract matches the call data.\n */\n fallback() external payable virtual {\n _fallback();\n }\n\n /**\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\n * is empty.\n */\n receive() external payable virtual {\n _fallback();\n }\n\n /**\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\n * call, or as part of the Solidity `fallback` or `receive` functions.\n *\n * If overriden should call `super._beforeFallback()`.\n */\n function _beforeFallback() internal virtual {}\n}\n" + }, + "hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/ProxyAdmin.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (proxy/transparent/ProxyAdmin.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./TransparentUpgradeableProxy.sol\";\nimport \"../../access/Ownable.sol\";\n\n/**\n * @dev This is an auxiliary contract meant to be assigned as the admin of a {TransparentUpgradeableProxy}. For an\n * explanation of why you would want to use this see the documentation for {TransparentUpgradeableProxy}.\n */\ncontract ProxyAdmin is Ownable {\n\n constructor (address initialOwner) Ownable(initialOwner) {}\n\n /**\n * @dev Returns the current implementation of `proxy`.\n *\n * Requirements:\n *\n * - This contract must be the admin of `proxy`.\n */\n function getProxyImplementation(TransparentUpgradeableProxy proxy) public view virtual returns (address) {\n // We need to manually run the static call since the getter cannot be flagged as view\n // bytes4(keccak256(\"implementation()\")) == 0x5c60da1b\n (bool success, bytes memory returndata) = address(proxy).staticcall(hex\"5c60da1b\");\n require(success);\n return abi.decode(returndata, (address));\n }\n\n /**\n * @dev Returns the current admin of `proxy`.\n *\n * Requirements:\n *\n * - This contract must be the admin of `proxy`.\n */\n function getProxyAdmin(TransparentUpgradeableProxy proxy) public view virtual returns (address) {\n // We need to manually run the static call since the getter cannot be flagged as view\n // bytes4(keccak256(\"admin()\")) == 0xf851a440\n (bool success, bytes memory returndata) = address(proxy).staticcall(hex\"f851a440\");\n require(success);\n return abi.decode(returndata, (address));\n }\n\n /**\n * @dev Changes the admin of `proxy` to `newAdmin`.\n *\n * Requirements:\n *\n * - This contract must be the current admin of `proxy`.\n */\n function changeProxyAdmin(TransparentUpgradeableProxy proxy, address newAdmin) public virtual onlyOwner {\n proxy.changeAdmin(newAdmin);\n }\n\n /**\n * @dev Upgrades `proxy` to `implementation`. See {TransparentUpgradeableProxy-upgradeTo}.\n *\n * Requirements:\n *\n * - This contract must be the admin of `proxy`.\n */\n function upgrade(TransparentUpgradeableProxy proxy, address implementation) public virtual onlyOwner {\n proxy.upgradeTo(implementation);\n }\n\n /**\n * @dev Upgrades `proxy` to `implementation` and calls a function on the new implementation. See\n * {TransparentUpgradeableProxy-upgradeToAndCall}.\n *\n * Requirements:\n *\n * - This contract must be the admin of `proxy`.\n */\n function upgradeAndCall(\n TransparentUpgradeableProxy proxy,\n address implementation,\n bytes memory data\n ) public payable virtual onlyOwner {\n proxy.upgradeToAndCall{value: msg.value}(implementation, data);\n }\n}\n" + }, + "hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (proxy/transparent/TransparentUpgradeableProxy.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../ERC1967/ERC1967Proxy.sol\";\n\n/**\n * @dev This contract implements a proxy that is upgradeable by an admin.\n *\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\n * clashing], which can potentially be used in an attack, this contract uses the\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\n * things that go hand in hand:\n *\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\n * that call matches one of the admin functions exposed by the proxy itself.\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\n * \"admin cannot fallback to proxy target\".\n *\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\n * the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due\n * to sudden errors when trying to call a function from the proxy implementation.\n *\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\n */\ncontract TransparentUpgradeableProxy is ERC1967Proxy {\n /**\n * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\n * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\n */\n constructor(\n address _logic,\n address admin_,\n bytes memory _data\n ) payable ERC1967Proxy(_logic, _data) {\n assert(_ADMIN_SLOT == bytes32(uint256(keccak256(\"eip1967.proxy.admin\")) - 1));\n _changeAdmin(admin_);\n }\n\n /**\n * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\n */\n modifier ifAdmin() {\n if (msg.sender == _getAdmin()) {\n _;\n } else {\n _fallback();\n }\n }\n\n /**\n * @dev Returns the current admin.\n *\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\n *\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\n */\n function admin() external ifAdmin returns (address admin_) {\n admin_ = _getAdmin();\n }\n\n /**\n * @dev Returns the current implementation.\n *\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\n *\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\n */\n function implementation() external ifAdmin returns (address implementation_) {\n implementation_ = _implementation();\n }\n\n /**\n * @dev Changes the admin of the proxy.\n *\n * Emits an {AdminChanged} event.\n *\n * NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}.\n */\n function changeAdmin(address newAdmin) external virtual ifAdmin {\n _changeAdmin(newAdmin);\n }\n\n /**\n * @dev Upgrade the implementation of the proxy.\n *\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\n */\n function upgradeTo(address newImplementation) external ifAdmin {\n _upgradeToAndCall(newImplementation, bytes(\"\"), false);\n }\n\n /**\n * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\n * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\n * proxied contract.\n *\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\n */\n function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {\n _upgradeToAndCall(newImplementation, data, true);\n }\n\n /**\n * @dev Returns the current admin.\n */\n function _admin() internal view virtual returns (address) {\n return _getAdmin();\n }\n\n /**\n * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.\n */\n function _beforeFallback() internal virtual override {\n require(msg.sender != _getAdmin(), \"TransparentUpgradeableProxy: admin cannot fallback to proxy target\");\n super._beforeFallback();\n }\n}\n" + }, + "hardhat-deploy/solc_0.8/openzeppelin/utils/Address.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (utils/Address.sol)\n\npragma solidity ^0.8.1;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n /**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n * ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a contract.\n *\n * Among others, `isContract` will return false for the following\n * types of addresses:\n *\n * - an externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a contract lived, but was destroyed\n * ====\n *\n * [IMPORTANT]\n * ====\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\n *\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n * constructor.\n * ====\n */\n function isContract(address account) internal view returns (bool) {\n // This method relies on extcodesize/address.code.length, which returns 0\n // for contracts in construction, since the code is only stored at the end\n // of the constructor execution.\n\n return account.code.length > 0;\n }\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n (bool success, ) = recipient.call{value: amount}(\"\");\n require(success, \"Address: unable to send value, recipient may have reverted\");\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason, it is bubbled up by this\n * function (like regular Solidity function calls).\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n *\n * _Available since v3.1._\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCall(target, data, \"Address: low-level call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n * `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n * with `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value,\n string memory errorMessage\n ) internal returns (bytes memory) {\n require(address(this).balance >= value, \"Address: insufficient balance for call\");\n require(isContract(target), \"Address: call to non-contract\");\n\n (bool success, bytes memory returndata) = target.call{value: value}(data);\n return verifyCallResult(success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n return functionStaticCall(target, data, \"Address: low-level static call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n require(isContract(target), \"Address: static call to non-contract\");\n\n (bool success, bytes memory returndata) = target.staticcall(data);\n return verifyCallResult(success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n require(isContract(target), \"Address: delegate call to non-contract\");\n\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return verifyCallResult(success, returndata, errorMessage);\n }\n\n /**\n * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\n * revert reason using the provided one.\n *\n * _Available since v4.3._\n */\n function verifyCallResult(\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal pure returns (bytes memory) {\n if (success) {\n return returndata;\n } else {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(errorMessage);\n }\n }\n }\n}\n" + }, + "hardhat-deploy/solc_0.8/openzeppelin/utils/Context.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n}\n" + }, + "hardhat-deploy/solc_0.8/openzeppelin/utils/StorageSlot.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/StorageSlot.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Library for reading and writing primitive types to specific storage slots.\n *\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n * This library helps with reading and writing to such slots without the need for inline assembly.\n *\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n *\n * Example usage to set ERC1967 implementation slot:\n * ```\n * contract ERC1967 {\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n *\n * function _getImplementation() internal view returns (address) {\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n * }\n *\n * function _setImplementation(address newImplementation) internal {\n * require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n * }\n * }\n * ```\n *\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\n */\nlibrary StorageSlot {\n struct AddressSlot {\n address value;\n }\n\n struct BooleanSlot {\n bool value;\n }\n\n struct Bytes32Slot {\n bytes32 value;\n }\n\n struct Uint256Slot {\n uint256 value;\n }\n\n /**\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\n */\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\n */\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\n */\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\n */\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\n assembly {\n r.slot := slot\n }\n }\n}\n" + }, + "hardhat-deploy/solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (proxy/transparent/TransparentUpgradeableProxy.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../openzeppelin/proxy/ERC1967/ERC1967Proxy.sol\";\n\n/**\n * @dev This contract implements a proxy that is upgradeable by an admin.\n *\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\n * clashing], which can potentially be used in an attack, this contract uses the\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\n * things that go hand in hand:\n *\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\n * that call matches one of the admin functions exposed by the proxy itself.\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\n * \"admin cannot fallback to proxy target\".\n *\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\n * the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due\n * to sudden errors when trying to call a function from the proxy implementation.\n *\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\n */\ncontract OptimizedTransparentUpgradeableProxy is ERC1967Proxy {\n address internal immutable _ADMIN;\n\n /**\n * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\n * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\n */\n constructor(\n address _logic,\n address admin_,\n bytes memory _data\n ) payable ERC1967Proxy(_logic, _data) {\n assert(_ADMIN_SLOT == bytes32(uint256(keccak256(\"eip1967.proxy.admin\")) - 1));\n _ADMIN = admin_;\n\n // still store it to work with EIP-1967\n bytes32 slot = _ADMIN_SLOT;\n // solhint-disable-next-line no-inline-assembly\n assembly {\n sstore(slot, admin_)\n }\n emit AdminChanged(address(0), admin_);\n }\n\n /**\n * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\n */\n modifier ifAdmin() {\n if (msg.sender == _getAdmin()) {\n _;\n } else {\n _fallback();\n }\n }\n\n /**\n * @dev Returns the current admin.\n *\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\n *\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\n */\n function admin() external ifAdmin returns (address admin_) {\n admin_ = _getAdmin();\n }\n\n /**\n * @dev Returns the current implementation.\n *\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\n *\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\n */\n function implementation() external ifAdmin returns (address implementation_) {\n implementation_ = _implementation();\n }\n\n /**\n * @dev Upgrade the implementation of the proxy.\n *\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\n */\n function upgradeTo(address newImplementation) external ifAdmin {\n _upgradeToAndCall(newImplementation, bytes(\"\"), false);\n }\n\n /**\n * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\n * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\n * proxied contract.\n *\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\n */\n function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {\n _upgradeToAndCall(newImplementation, data, true);\n }\n\n /**\n * @dev Returns the current admin.\n */\n function _admin() internal view virtual returns (address) {\n return _getAdmin();\n }\n\n /**\n * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.\n */\n function _beforeFallback() internal virtual override {\n require(msg.sender != _getAdmin(), \"TransparentUpgradeableProxy: admin cannot fallback to proxy target\");\n super._beforeFallback();\n }\n\n function _getAdmin() internal view virtual override returns (address) {\n return _ADMIN;\n }\n}\n" + } + }, + "settings": { + "optimizer": { + "enabled": true, + "runs": 200, + "details": { + "yul": true + } + }, + "evmVersion": "cancun", + "outputSelection": { + "*": { + "*": [ + "storageLayout", + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "evm.gasEstimates" + ], + "": ["ast"] + } + }, + "metadata": { + "useLiteralContent": true + } + } +} diff --git a/helpers/deploymentConfig.ts b/helpers/deploymentConfig.ts index 518eb8c8..de8eb291 100644 --- a/helpers/deploymentConfig.ts +++ b/helpers/deploymentConfig.ts @@ -99,7 +99,7 @@ export const ADDRESSES: PreconfiguredAddresses = { "PT-SolvBTC.BBN-27MAR2025": "0x964Ea3dC70Ee5b35Ea881cf8416B7a5F50E13f56", "PT-clisBNB-24APR2025": "0x14AECeEc177085fd09EA07348B4E1F7Fcc030fA1", "PT-sUSDE-26JUN2025": "0x95e58161BA2423c3034658d957F3f5b94DeAbf81", - "PT-USDe-30Oct2025": "0x3099fc25fCdE347D42a22329147d47aB0b0eb6Dd", + "PT-USDe-30OCT2025": "0x0c98334aCF440b9936D9cc1d99dc1A77bf26a93B", sUSDe: "0xcFec590e417Abb378cfEfE6296829E35fa25cEbd", USDe: "0x986C30591f5aAb401ea3aa63aFA595608721B1B9", xSolvBTC: "0x3ea87323806586A0282b50377e0FEa76070F532B", From 7a3baa3c98561e02b8cfeb0ca3301f91882e3ab3 Mon Sep 17 00:00:00 2001 From: GitGuru7 <128375421+GitGuru7@users.noreply.github.com> Date: Fri, 26 Sep 2025 10:09:26 +0000 Subject: [PATCH 18/24] feat: updating deployment files --- deployments/bsctestnet.json | 2 +- deployments/bsctestnet_addresses.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/deployments/bsctestnet.json b/deployments/bsctestnet.json index 04ed5704..fd7c7a97 100644 --- a/deployments/bsctestnet.json +++ b/deployments/bsctestnet.json @@ -6540,7 +6540,7 @@ ] }, "PendleOracle-PT-USDe-30Oct2025": { - "address": "0x6c41e88f4ac0BD30e57cE4094CFE7524661F5Ef3", + "address": "0xc972BE46D847CB1D306d24f8814ABb02037d5689", "abi": [ { "inputs": [ diff --git a/deployments/bsctestnet_addresses.json b/deployments/bsctestnet_addresses.json index a893f8e5..64e0f6a3 100644 --- a/deployments/bsctestnet_addresses.json +++ b/deployments/bsctestnet_addresses.json @@ -23,7 +23,7 @@ "PendleOracle-PT-SolvBTC.BBN-27MAR2025": "0x31B78f0Ef6A87cF0E812197226306954a65907d5", "PendleOracle-PT-SolvBTC.BBN-27MAR2025_Implementation": "0x2EC23cBc3A111D4265d9fE7dcf319b2Ff4F23f2D", "PendleOracle-PT-SolvBTC.BBN-27MAR2025_Proxy": "0x31B78f0Ef6A87cF0E812197226306954a65907d5", - "PendleOracle-PT-USDe-30Oct2025": "0x6c41e88f4ac0BD30e57cE4094CFE7524661F5Ef3", + "PendleOracle-PT-USDe-30Oct2025": "0xc972BE46D847CB1D306d24f8814ABb02037d5689", "PendleOracle-PT-clisBNB-24APR2025": "0xeF663663e802Ff4510aDE14975820FFB5d2EE9E8", "PendleOracle-PT-clisBNB-24APR2025_Implementation": "0x6d8b4d49238ffc3Ad23239fbC3045307B98D6F76", "PendleOracle-PT-clisBNB-24APR2025_Proxy": "0xeF663663e802Ff4510aDE14975820FFB5d2EE9E8", From 6dc42ad74f1edd9338371efdcfc81db5069e7ba8 Mon Sep 17 00:00:00 2001 From: GitGuru7 Date: Fri, 26 Sep 2025 15:46:03 +0530 Subject: [PATCH 19/24] fix: update PT-USDe oracle deployemnt --- deploy/24-deploy-USDe-pendle-oracles.ts | 4 ++-- .../bsctestnet/PendleOracle-PT-USDe-30Oct2025.json | 14 +++++++------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/deploy/24-deploy-USDe-pendle-oracles.ts b/deploy/24-deploy-USDe-pendle-oracles.ts index 72072ddf..7d4e5695 100644 --- a/deploy/24-deploy-USDe-pendle-oracles.ts +++ b/deploy/24-deploy-USDe-pendle-oracles.ts @@ -30,7 +30,7 @@ const func: DeployFunction = async ({ getNamedAccounts, deployments, network }: contract: "PendleOracle", args: [ { - market: addresses["PT-USDe-30OCT2025_Market"] || "0x0000000000000000000000000000000000000003", + market: addresses["PT-USDe-30OCT2025_Market"] || "0x0000000000000000000000000000000000000004", ptOracle: ptOracleAddress, rateKind: PendleRateKind.PT_TO_SY, ptToken: addresses["PT-USDe-30OCT2025"], @@ -56,7 +56,7 @@ const func: DeployFunction = async ({ getNamedAccounts, deployments, network }: deterministicDeployment: false, args: [ { - market: addresses["PT-USDe-30OCT2025_Market"] || "0x0000000000000000000000000000000000000003", + market: addresses["PT-USDe-30OCT2025_Market"] || "0x0000000000000000000000000000000000000004", ptOracle: ptOracleAddress, rateKind: PendleRateKind.PT_TO_ASSET, ptToken: addresses["PT-USDe-30OCT2025"], diff --git a/deployments/bsctestnet/PendleOracle-PT-USDe-30Oct2025.json b/deployments/bsctestnet/PendleOracle-PT-USDe-30Oct2025.json index 593a5a6c..80f97dce 100644 --- a/deployments/bsctestnet/PendleOracle-PT-USDe-30Oct2025.json +++ b/deployments/bsctestnet/PendleOracle-PT-USDe-30Oct2025.json @@ -1,5 +1,5 @@ { - "address": "0xc972BE46D847CB1D306d24f8814ABb02037d5689", + "address": "0x9d223177a0Ea5505EbF3665f950093091f04739b", "abi": [ { "inputs": [ @@ -501,25 +501,25 @@ "type": "function" } ], - "transactionHash": "0x5f2344ba77510fe931b597a6047bfa3177aa6dbd338401f65f71f897abf758c7", + "transactionHash": "0x695df1847cfc599e035023824c93d084aa4d6fb81274ba4ec46455eb80266d71", "receipt": { "to": null, "from": "0xe2a089cA69a90f1E27E723EFD339Cff4c4701AcC", - "contractAddress": "0xc972BE46D847CB1D306d24f8814ABb02037d5689", + "contractAddress": "0x9d223177a0Ea5505EbF3665f950093091f04739b", "transactionIndex": 0, "gasUsed": "941190", "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0xc3744699ab989f2d706dd46c3deae644a4eb503e60c8e91a775fb356b8c5f16b", - "transactionHash": "0x5f2344ba77510fe931b597a6047bfa3177aa6dbd338401f65f71f897abf758c7", + "blockHash": "0xcad900b3ba7e47593e4254b9e3ff35feea6665f91bf7a968946d984bf4163741", + "transactionHash": "0x695df1847cfc599e035023824c93d084aa4d6fb81274ba4ec46455eb80266d71", "logs": [], - "blockNumber": 66715286, + "blockNumber": 66716089, "cumulativeGasUsed": "941190", "status": 1, "byzantium": true }, "args": [ { - "market": "0x0000000000000000000000000000000000000003", + "market": "0x0000000000000000000000000000000000000004", "ptOracle": "0xa37A9127C302fEc17d456a6E1a5643a18a1779aD", "rateKind": 1, "ptToken": "0x0c98334aCF440b9936D9cc1d99dc1A77bf26a93B", From 7f6990afe8886a559bc4a7efd8ec4794a5928e9a Mon Sep 17 00:00:00 2001 From: GitGuru7 <128375421+GitGuru7@users.noreply.github.com> Date: Fri, 26 Sep 2025 10:18:00 +0000 Subject: [PATCH 20/24] feat: updating deployment files --- deployments/bsctestnet.json | 2 +- deployments/bsctestnet_addresses.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/deployments/bsctestnet.json b/deployments/bsctestnet.json index fd7c7a97..fff94d38 100644 --- a/deployments/bsctestnet.json +++ b/deployments/bsctestnet.json @@ -6540,7 +6540,7 @@ ] }, "PendleOracle-PT-USDe-30Oct2025": { - "address": "0xc972BE46D847CB1D306d24f8814ABb02037d5689", + "address": "0x9d223177a0Ea5505EbF3665f950093091f04739b", "abi": [ { "inputs": [ diff --git a/deployments/bsctestnet_addresses.json b/deployments/bsctestnet_addresses.json index 64e0f6a3..c76ea3c1 100644 --- a/deployments/bsctestnet_addresses.json +++ b/deployments/bsctestnet_addresses.json @@ -23,7 +23,7 @@ "PendleOracle-PT-SolvBTC.BBN-27MAR2025": "0x31B78f0Ef6A87cF0E812197226306954a65907d5", "PendleOracle-PT-SolvBTC.BBN-27MAR2025_Implementation": "0x2EC23cBc3A111D4265d9fE7dcf319b2Ff4F23f2D", "PendleOracle-PT-SolvBTC.BBN-27MAR2025_Proxy": "0x31B78f0Ef6A87cF0E812197226306954a65907d5", - "PendleOracle-PT-USDe-30Oct2025": "0xc972BE46D847CB1D306d24f8814ABb02037d5689", + "PendleOracle-PT-USDe-30Oct2025": "0x9d223177a0Ea5505EbF3665f950093091f04739b", "PendleOracle-PT-clisBNB-24APR2025": "0xeF663663e802Ff4510aDE14975820FFB5d2EE9E8", "PendleOracle-PT-clisBNB-24APR2025_Implementation": "0x6d8b4d49238ffc3Ad23239fbC3045307B98D6F76", "PendleOracle-PT-clisBNB-24APR2025_Proxy": "0xeF663663e802Ff4510aDE14975820FFB5d2EE9E8", From 042822727a1c95ef94978e32ea91333c6b6d7c0d Mon Sep 17 00:00:00 2001 From: GitGuru7 Date: Fri, 26 Sep 2025 18:53:15 +0530 Subject: [PATCH 21/24] feat: add PT-USDe oracle deployemnts on bscmainnet --- .../PendleOracle-PT-USDe-30OCT2025.json | 785 ++++++++++++++++++ ...PT-USDe-30OCT2025_Reference_PtToAsset.json | 785 ++++++++++++++++++ .../eb7ae6b5763315e358adb74172778b7c.json | 337 ++++++++ helpers/deploymentConfig.ts | 2 + 4 files changed, 1909 insertions(+) create mode 100644 deployments/bscmainnet/PendleOracle-PT-USDe-30OCT2025.json create mode 100644 deployments/bscmainnet/PendleOracle-PT-USDe-30OCT2025_Reference_PtToAsset.json create mode 100644 deployments/bscmainnet/solcInputs/eb7ae6b5763315e358adb74172778b7c.json diff --git a/deployments/bscmainnet/PendleOracle-PT-USDe-30OCT2025.json b/deployments/bscmainnet/PendleOracle-PT-USDe-30OCT2025.json new file mode 100644 index 00000000..b1d7cc59 --- /dev/null +++ b/deployments/bscmainnet/PendleOracle-PT-USDe-30OCT2025.json @@ -0,0 +1,785 @@ +{ + "address": "0xAa5138e86c078fd2859a929173B3870b5003EC30", + "abi": [ + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "market", + "type": "address" + }, + { + "internalType": "address", + "name": "ptOracle", + "type": "address" + }, + { + "internalType": "enum PendleOracle.RateKind", + "name": "rateKind", + "type": "uint8" + }, + { + "internalType": "address", + "name": "ptToken", + "type": "address" + }, + { + "internalType": "address", + "name": "underlyingToken", + "type": "address" + }, + { + "internalType": "address", + "name": "resilientOracle", + "type": "address" + }, + { + "internalType": "uint32", + "name": "twapDuration", + "type": "uint32" + }, + { + "internalType": "uint256", + "name": "annualGrowthRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "snapshotInterval", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "initialSnapshotMaxExchangeRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "initialSnapshotTimestamp", + "type": "uint256" + }, + { + "internalType": "address", + "name": "accessControlManager", + "type": "address" + }, + { + "internalType": "uint256", + "name": "snapshotGap", + "type": "uint256" + } + ], + "internalType": "struct PendleOracle.ConstructorParams", + "name": "params", + "type": "tuple" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "InvalidDuration", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidGrowthRate", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialSnapshot", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidSnapshotMaxExchangeRate", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidTokenAddress", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "calledContract", + "type": "address" + }, + { + "internalType": "string", + "name": "methodSignature", + "type": "string" + } + ], + "name": "Unauthorized", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroAddressNotAllowed", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroValueNotAllowed", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "oldGrowthRatePerSecond", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newGrowthRatePerSecond", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "oldSnapshotInterval", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newSnapshotInterval", + "type": "uint256" + } + ], + "name": "GrowthRateUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "oldSnapshotGap", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newSnapshotGap", + "type": "uint256" + } + ], + "name": "SnapshotGapUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "maxExchangeRate", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "name": "SnapshotUpdated", + "type": "event" + }, + { + "inputs": [], + "name": "ACCESS_CONTROL_MANAGER", + "outputs": [ + { + "internalType": "contract IAccessControlManagerV8", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "CORRELATED_TOKEN", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MARKET", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PT_ORACLE", + "outputs": [ + { + "internalType": "contract IPendlePtOracle", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "RATE_KIND", + "outputs": [ + { + "internalType": "enum PendleOracle.RateKind", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "RESILIENT_ORACLE", + "outputs": [ + { + "internalType": "contract ResilientOracleInterface", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "TWAP_DURATION", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UNDERLYING_DECIMALS", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UNDERLYING_TOKEN", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getMaxAllowedExchangeRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "getPrice", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getUnderlyingAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "growthRatePerSecond", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "isCapped", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_annualGrowthRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_snapshotInterval", + "type": "uint256" + } + ], + "name": "setGrowthRate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_snapshotMaxExchangeRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_snapshotTimestamp", + "type": "uint256" + } + ], + "name": "setSnapshot", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_snapshotGap", + "type": "uint256" + } + ], + "name": "setSnapshotGap", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "snapshotGap", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "snapshotInterval", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "snapshotMaxExchangeRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "snapshotTimestamp", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "updateSnapshot", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "transactionHash": "0x0d51f53ddd17fdd25296a95450ddf45721b4c07ed4df2db2c8adeca5474853f0", + "receipt": { + "to": null, + "from": "0x14A1c22EF6d2eF6cE33c0b018d8A34D02021e5c8", + "contractAddress": "0xAa5138e86c078fd2859a929173B3870b5003EC30", + "transactionIndex": 111, + "gasUsed": "965775", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x87f7f922a7330cf95d2a8e48f1543a41f34fce8c7a2d6ac4b565169382561734", + "transactionHash": "0x0d51f53ddd17fdd25296a95450ddf45721b4c07ed4df2db2c8adeca5474853f0", + "logs": [], + "blockNumber": 62522730, + "cumulativeGasUsed": "15810935", + "status": 1, + "byzantium": true + }, + "args": [ + { + "market": "0xb5b56637810e4d090894785993f4cdd6875d927e", + "ptOracle": "0x9a9fa8338dd5e5b2188006f1cd2ef26d921650c2", + "rateKind": 1, + "ptToken": "0x607c834cfb7fcbbb341cbe23f77a6e83bcf3f55c", + "underlyingToken": "0x5d3a1Ff2b6BAb83b63cd9AD0787074081a52ef34", + "resilientOracle": "0x6592b5DE802159F3E74B2486b091D11a8256ab8A", + "twapDuration": 1800, + "annualGrowthRate": 0, + "snapshotInterval": 0, + "initialSnapshotMaxExchangeRate": 0, + "initialSnapshotTimestamp": 0, + "accessControlManager": "0x4788629abc6cfca10f9f969efdeaa1cf70c23555", + "snapshotGap": 0 + } + ], + "numDeployments": 1, + "solcInputHash": "eb7ae6b5763315e358adb74172778b7c", + "metadata": "{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"market\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"ptOracle\",\"type\":\"address\"},{\"internalType\":\"enum PendleOracle.RateKind\",\"name\":\"rateKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"ptToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"underlyingToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resilientOracle\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"twapDuration\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"annualGrowthRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"snapshotInterval\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSnapshotMaxExchangeRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSnapshotTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"accessControlManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"snapshotGap\",\"type\":\"uint256\"}],\"internalType\":\"struct PendleOracle.ConstructorParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidDuration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidGrowthRate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialSnapshot\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSnapshotMaxExchangeRate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"calledContract\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"methodSignature\",\"type\":\"string\"}],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroValueNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldGrowthRatePerSecond\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newGrowthRatePerSecond\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldSnapshotInterval\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSnapshotInterval\",\"type\":\"uint256\"}],\"name\":\"GrowthRateUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldSnapshotGap\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newSnapshotGap\",\"type\":\"uint256\"}],\"name\":\"SnapshotGapUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maxExchangeRate\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"SnapshotUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ACCESS_CONTROL_MANAGER\",\"outputs\":[{\"internalType\":\"contract IAccessControlManagerV8\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CORRELATED_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MARKET\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PT_ORACLE\",\"outputs\":[{\"internalType\":\"contract IPendlePtOracle\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RATE_KIND\",\"outputs\":[{\"internalType\":\"enum PendleOracle.RateKind\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RESILIENT_ORACLE\",\"outputs\":[{\"internalType\":\"contract ResilientOracleInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TWAP_DURATION\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UNDERLYING_DECIMALS\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UNDERLYING_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaxAllowedExchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUnderlyingAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"growthRatePerSecond\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isCapped\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_annualGrowthRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotInterval\",\"type\":\"uint256\"}],\"name\":\"setGrowthRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_snapshotMaxExchangeRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotTimestamp\",\"type\":\"uint256\"}],\"name\":\"setSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_snapshotGap\",\"type\":\"uint256\"}],\"name\":\"setSnapshotGap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotGap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotInterval\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotMaxExchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Venus\",\"details\":\"As a base price the oracle uses either the price of the Pendle market's asset (in this case PT_TO_ASSET rate should be used) or the price of the Pendle market's interest bearing token (e.g. wstETH for stETH; in this case PT_TO_SY rate should be used). Technically, interest bearing token is different from standardized yield (SY) token, but since SY is a wrapper around an interest bearing token, we can safely assume the prices of the two are equal. This is not always true for asset price though: using PT_TO_ASSET rate assumes that the yield token can be seamlessly redeemed for the underlying asset. In reality, this might not always be the case. For more details, see https://docs.pendle.finance/Developers/Contracts/StandardizedYield\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"custom:error\":\"InvalidDuration Thrown if the duration is invalid\"},\"getMaxAllowedExchangeRate()\":{\"returns\":{\"_0\":\"maxExchangeRate Maximum allowed exchange rate\"}},\"getPrice(address)\":{\"custom:error\":\"InvalidTokenAddress error is thrown if the token address is invalid\",\"params\":{\"asset\":\"Address of the token\"},\"returns\":{\"_0\":\"price The price of the token in scaled decimal places. It can be capped to a maximum value taking into account the growth rate\"}},\"getUnderlyingAmount()\":{\"returns\":{\"_0\":\"amount The amount of underlying token (either the market's asset or the yield token) for 1 PT, adjusted for decimals such that the result has the same precision as the underlying token\"}},\"isCapped()\":{\"returns\":{\"_0\":\"isCapped Boolean indicating if the price is capped\"}},\"setGrowthRate(uint256,uint256)\":{\"custom:error\":\"InvalidGrowthRate error is thrown if the growth rate is invalid\",\"custom:event\":\"Emits GrowthRateUpdated event on successful update of the growth rate\",\"params\":{\"_annualGrowthRate\":\"The annual growth rate to set\",\"_snapshotInterval\":\"The snapshot interval to set\"}},\"setSnapshot(uint256,uint256)\":{\"custom:event\":\"Emits SnapshotUpdated event on successful update of the snapshot\",\"params\":{\"_snapshotMaxExchangeRate\":\"The exchange rate to set\",\"_snapshotTimestamp\":\"The timestamp to set\"}},\"setSnapshotGap(uint256)\":{\"custom:event\":\"Emits SnapshotGapUpdated event on successful update of the snapshot gap\",\"params\":{\"_snapshotGap\":\"The snapshot gap to set\"}},\"updateSnapshot()\":{\"custom:error\":\"InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero\",\"custom:event\":\"Emits SnapshotUpdated event on successful update of the snapshot\"}},\"stateVariables\":{\"UNDERLYING_DECIMALS\":{\"details\":\"We make an assumption that the underlying decimals will not change throughout the lifetime of the Pendle market\"}},\"title\":\"PendleOracle\",\"version\":1},\"userdoc\":{\"errors\":{\"InvalidDuration()\":[{\"notice\":\"Thrown if the duration is invalid\"}],\"InvalidGrowthRate()\":[{\"notice\":\"Thrown if the growth rate is invalid\"}],\"InvalidInitialSnapshot()\":[{\"notice\":\"Thrown if the initial snapshot is invalid\"}],\"InvalidSnapshotMaxExchangeRate()\":[{\"notice\":\"Thrown if the max snapshot exchange rate is invalid\"}],\"InvalidTokenAddress()\":[{\"notice\":\"Thrown if the token address is invalid\"}],\"Unauthorized(address,address,string)\":[{\"notice\":\"@notice Thrown when the action is prohibited by AccessControlManager\"}],\"ZeroAddressNotAllowed()\":[{\"notice\":\"Thrown if the supplied address is a zero address where it is not allowed\"}],\"ZeroValueNotAllowed()\":[{\"notice\":\"Thrown if the supplied value is 0 where it is not allowed\"}]},\"events\":{\"GrowthRateUpdated(uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted when the growth rate is updated\"},\"SnapshotGapUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the snapshot gap is updated\"},\"SnapshotUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the snapshot is updated\"}},\"kind\":\"user\",\"methods\":{\"ACCESS_CONTROL_MANAGER()\":{\"notice\":\"Address of the AccessControlManager contract\"},\"CORRELATED_TOKEN()\":{\"notice\":\"Address of the correlated token\"},\"MARKET()\":{\"notice\":\"Address of the market\"},\"PT_ORACLE()\":{\"notice\":\"Address of the PT oracle\"},\"RATE_KIND()\":{\"notice\":\"Whether to use PT/SY (standardized yield token) rate or PT/market asset rate\"},\"RESILIENT_ORACLE()\":{\"notice\":\"Address of Resilient Oracle\"},\"TWAP_DURATION()\":{\"notice\":\"Twap duration for the oracle\"},\"UNDERLYING_DECIMALS()\":{\"notice\":\"Decimals of the underlying token\"},\"UNDERLYING_TOKEN()\":{\"notice\":\"Address of the underlying token\"},\"constructor\":{\"notice\":\"Constructor for the implementation contract.\"},\"getMaxAllowedExchangeRate()\":{\"notice\":\"Gets the maximum allowed exchange rate for token\"},\"getPrice(address)\":{\"notice\":\"Fetches the price of the token\"},\"getUnderlyingAmount()\":{\"notice\":\"Fetches the amount of underlying token for 1 PT\"},\"isCapped()\":{\"notice\":\"Returns if the price is capped\"},\"setGrowthRate(uint256,uint256)\":{\"notice\":\"Sets the growth rate and snapshot interval\"},\"setSnapshot(uint256,uint256)\":{\"notice\":\"Directly sets the snapshot exchange rate and timestamp\"},\"setSnapshotGap(uint256)\":{\"notice\":\"Sets the snapshot gap\"},\"snapshotGap()\":{\"notice\":\"Gap to add when updating the snapshot\"},\"snapshotInterval()\":{\"notice\":\"Snapshot update interval\"},\"snapshotMaxExchangeRate()\":{\"notice\":\"Last stored snapshot maximum exchange rate\"},\"snapshotTimestamp()\":{\"notice\":\"Last stored snapshot timestamp\"},\"updateSnapshot()\":{\"notice\":\"Updates the snapshot price and timestamp\"}},\"notice\":\"This oracle fetches the price of a pendle token\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracles/PendleOracle.sol\":\"PendleOracle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev External interface of AccessControl declared to support ERC165 detection.\\n */\\ninterface IAccessControl {\\n /**\\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\\n *\\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\\n * {RoleAdminChanged} not being emitted signaling this.\\n *\\n * _Available since v3.1._\\n */\\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\\n\\n /**\\n * @dev Emitted when `account` is granted `role`.\\n *\\n * `sender` is the account that originated the contract call, an admin role\\n * bearer except when using {AccessControl-_setupRole}.\\n */\\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Emitted when `account` is revoked `role`.\\n *\\n * `sender` is the account that originated the contract call:\\n * - if using `revokeRole`, it is the admin role bearer\\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\\n */\\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Returns `true` if `account` has been granted `role`.\\n */\\n function hasRole(bytes32 role, address account) external view returns (bool);\\n\\n /**\\n * @dev Returns the admin role that controls `role`. See {grantRole} and\\n * {revokeRole}.\\n *\\n * To change a role's admin, use {AccessControl-_setRoleAdmin}.\\n */\\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function grantRole(bytes32 role, address account) external;\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function revokeRole(bytes32 role, address account) external;\\n\\n /**\\n * @dev Revokes `role` from the calling account.\\n *\\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n * purpose is to provide a mechanism for accounts to lose their privileges\\n * if they are compromised (such as when a trusted device is misplaced).\\n *\\n * If the calling account had been granted `role`, emits a {RoleRevoked}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must be `account`.\\n */\\n function renounceRole(bytes32 role, address account) external;\\n}\\n\",\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n *\\n * _Available since v4.1._\\n */\\ninterface IERC20Metadata is IERC20 {\\n /**\\n * @dev Returns the name of the token.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the symbol of the token.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the decimals places of the token.\\n */\\n function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\"},\"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\nimport \\\"@openzeppelin/contracts/access/IAccessControl.sol\\\";\\n\\n/**\\n * @title IAccessControlManagerV8\\n * @author Venus\\n * @notice Interface implemented by the `AccessControlManagerV8` contract.\\n */\\ninterface IAccessControlManagerV8 is IAccessControl {\\n function giveCallPermission(address contractAddress, string calldata functionSig, address accountToPermit) external;\\n\\n function revokeCallPermission(\\n address contractAddress,\\n string calldata functionSig,\\n address accountToRevoke\\n ) external;\\n\\n function isAllowedToCall(address account, string calldata functionSig) external view returns (bool);\\n\\n function hasPermission(\\n address account,\\n address contractAddress,\\n string calldata functionSig\\n ) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xaa29b098440d0b3a131c5ecdf25ce548790c1b5ac7bf9b5c0264b6af6f7a1e0b\",\"license\":\"BSD-3-Clause\"},\"@venusprotocol/solidity-utilities/contracts/constants.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\n/// @dev Base unit for computations, usually used in scaling (multiplications, divisions)\\nuint256 constant EXP_SCALE = 1e18;\\n\\n/// @dev A unit (literal one) in EXP_SCALE, usually used in additions/subtractions\\nuint256 constant MANTISSA_ONE = EXP_SCALE;\\n\\n/// @dev The approximate number of seconds per year\\nuint256 constant SECONDS_PER_YEAR = 31_536_000;\\n\",\"keccak256\":\"0x14de93ead464da249af31bea0e3bcfb62ec693bea3475fb4d90f055ac81dc5eb\",\"license\":\"BSD-3-Clause\"},\"@venusprotocol/solidity-utilities/contracts/validators.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.25;\\n\\n/// @notice Thrown if the supplied address is a zero address where it is not allowed\\nerror ZeroAddressNotAllowed();\\n\\n/// @notice Thrown if the supplied value is 0 where it is not allowed\\nerror ZeroValueNotAllowed();\\n\\n/// @notice Checks if the provided address is nonzero, reverts otherwise\\n/// @param address_ Address to check\\n/// @custom:error ZeroAddressNotAllowed is thrown if the provided address is a zero address\\nfunction ensureNonzeroAddress(address address_) pure {\\n if (address_ == address(0)) {\\n revert ZeroAddressNotAllowed();\\n }\\n}\\n\\n/// @notice Checks if the provided value is nonzero, reverts otherwise\\n/// @param value_ Value to check\\n/// @custom:error ZeroValueNotAllowed is thrown if the provided value is 0\\nfunction ensureNonzeroValue(uint256 value_) pure {\\n if (value_ == 0) {\\n revert ZeroValueNotAllowed();\\n }\\n}\\n\",\"keccak256\":\"0xdb88e14d50dd21889ca3329d755673d022c47e8da005b6a545c7f69c2c4b7b86\",\"license\":\"BSD-3-Clause\"},\"contracts/interfaces/ICappedOracle.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.25;\\n\\ninterface ICappedOracle {\\n function updateSnapshot() external;\\n}\\n\",\"keccak256\":\"0xad239e65b5e92b3486418c5ccca120247702251f9724cd96657c3cfdc7fedc31\",\"license\":\"BSD-3-Clause\"},\"contracts/interfaces/IPendlePtOracle.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.25;\\n\\ninterface IPendlePtOracle {\\n function getPtToAssetRate(address market, uint32 duration) external view returns (uint256);\\n\\n function getPtToSyRate(address market, uint32 duration) external view returns (uint256);\\n\\n function getOracleState(\\n address market,\\n uint32 duration\\n )\\n external\\n view\\n returns (bool increaseCardinalityRequired, uint16 cardinalityRequired, bool oldestObservationSatisfied);\\n}\\n\",\"keccak256\":\"0x14d96d7f75397e4291288ef6367053bd970d95fc0c3e2a028b077f6342e0160a\",\"license\":\"BSD-3-Clause\"},\"contracts/interfaces/OracleInterface.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\ninterface OracleInterface {\\n function getPrice(address asset) external view returns (uint256);\\n}\\n\\ninterface ResilientOracleInterface is OracleInterface {\\n function updatePrice(address vToken) external;\\n\\n function updateAssetPrice(address asset) external;\\n\\n function getUnderlyingPrice(address vToken) external view returns (uint256);\\n}\\n\\ninterface BoundValidatorInterface {\\n function validatePriceWithAnchorPrice(\\n address asset,\\n uint256 reporterPrice,\\n uint256 anchorPrice\\n ) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\"},\"contracts/oracles/PendleOracle.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.25;\\n\\nimport { IPendlePtOracle } from \\\"../interfaces/IPendlePtOracle.sol\\\";\\nimport { CorrelatedTokenOracle } from \\\"./common/CorrelatedTokenOracle.sol\\\";\\nimport { ensureNonzeroAddress, ensureNonzeroValue } from \\\"@venusprotocol/solidity-utilities/contracts/validators.sol\\\";\\nimport { IERC20Metadata } from \\\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\\\";\\n\\n/**\\n * @title PendleOracle\\n * @author Venus\\n * @notice This oracle fetches the price of a pendle token\\n * @dev As a base price the oracle uses either the price of the Pendle\\n * market's asset (in this case PT_TO_ASSET rate should be used) or\\n * the price of the Pendle market's interest bearing token (e.g. wstETH\\n * for stETH; in this case PT_TO_SY rate should be used). Technically,\\n * interest bearing token is different from standardized yield (SY) token,\\n * but since SY is a wrapper around an interest bearing token, we can safely\\n * assume the prices of the two are equal. This is not always true for asset\\n * price though: using PT_TO_ASSET rate assumes that the yield token can\\n * be seamlessly redeemed for the underlying asset. In reality, this might\\n * not always be the case. For more details, see\\n * https://docs.pendle.finance/Developers/Contracts/StandardizedYield\\n */\\ncontract PendleOracle is CorrelatedTokenOracle {\\n struct ConstructorParams {\\n /// @notice Pendle market\\n address market;\\n /// @notice Pendle oracle\\n address ptOracle;\\n /// @notice Either PT_TO_ASSET or PT_TO_SY\\n RateKind rateKind;\\n /// @notice Pendle PT token\\n address ptToken;\\n /// @notice Underlying token, can be either the market's asset or the interest bearing token\\n address underlyingToken;\\n /// @notice Resilient oracle to get the underlying token price from\\n address resilientOracle;\\n /// @notice TWAP duration to call Pendle oracle with\\n uint32 twapDuration;\\n /// @notice Annual growth rate of the underlying token\\n uint256 annualGrowthRate;\\n /// @notice Snapshot interval for the oracle\\n uint256 snapshotInterval;\\n /// @notice Initial exchange rate of the underlying token\\n uint256 initialSnapshotMaxExchangeRate;\\n /// @notice Initial timestamp of the underlying token\\n uint256 initialSnapshotTimestamp;\\n /// @notice Access control manager\\n address accessControlManager;\\n /// @notice Gap to add when updating the snapshot\\n uint256 snapshotGap;\\n }\\n\\n /// @notice Which asset to use as a base for the returned PT\\n /// price. Can be either a standardized yield token (SY), in\\n /// this case PT/SY price is returned, or the Pendle\\n /// market's asset directly.\\n enum RateKind {\\n PT_TO_ASSET,\\n PT_TO_SY\\n }\\n\\n /// @notice Address of the PT oracle\\n IPendlePtOracle public immutable PT_ORACLE;\\n\\n /// @notice Whether to use PT/SY (standardized yield token) rate\\n /// or PT/market asset rate\\n RateKind public immutable RATE_KIND;\\n\\n /// @notice Address of the market\\n address public immutable MARKET;\\n\\n /// @notice Twap duration for the oracle\\n uint32 public immutable TWAP_DURATION;\\n\\n /// @notice Decimals of the underlying token\\n /// @dev We make an assumption that the underlying decimals will\\n /// not change throughout the lifetime of the Pendle market\\n uint8 public immutable UNDERLYING_DECIMALS;\\n\\n /// @notice Thrown if the duration is invalid\\n error InvalidDuration();\\n\\n /**\\n * @notice Constructor for the implementation contract.\\n * @custom:error InvalidDuration Thrown if the duration is invalid\\n */\\n constructor(\\n ConstructorParams memory params\\n )\\n CorrelatedTokenOracle(\\n params.ptToken,\\n params.underlyingToken,\\n params.resilientOracle,\\n params.annualGrowthRate,\\n params.snapshotInterval,\\n params.initialSnapshotMaxExchangeRate,\\n params.initialSnapshotTimestamp,\\n params.accessControlManager,\\n params.snapshotGap\\n )\\n {\\n ensureNonzeroAddress(params.market);\\n ensureNonzeroAddress(params.ptOracle);\\n ensureNonzeroValue(params.twapDuration);\\n\\n MARKET = params.market;\\n PT_ORACLE = IPendlePtOracle(params.ptOracle);\\n RATE_KIND = params.rateKind;\\n TWAP_DURATION = params.twapDuration;\\n UNDERLYING_DECIMALS = IERC20Metadata(UNDERLYING_TOKEN).decimals();\\n\\n (bool increaseCardinalityRequired, , bool oldestObservationSatisfied) = PT_ORACLE.getOracleState(\\n MARKET,\\n TWAP_DURATION\\n );\\n if (increaseCardinalityRequired || !oldestObservationSatisfied) {\\n revert InvalidDuration();\\n }\\n }\\n\\n /// @notice Fetches the amount of underlying token for 1 PT\\n /// @return amount The amount of underlying token (either the market's asset\\n /// or the yield token) for 1 PT, adjusted for decimals such that the result\\n /// has the same precision as the underlying token\\n function getUnderlyingAmount() public view override returns (uint256) {\\n uint256 rate;\\n if (RATE_KIND == RateKind.PT_TO_SY) {\\n rate = PT_ORACLE.getPtToSyRate(MARKET, TWAP_DURATION);\\n } else {\\n rate = PT_ORACLE.getPtToAssetRate(MARKET, TWAP_DURATION);\\n }\\n return ((10 ** UNDERLYING_DECIMALS) * rate) / 1e18;\\n }\\n}\\n\",\"keccak256\":\"0xaa7963ac7657ea62079c2162cb4fc45524f8ffbbc6e84f89a5d4e54b71dc6025\",\"license\":\"BSD-3-Clause\"},\"contracts/oracles/common/CorrelatedTokenOracle.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.25;\\n\\nimport { OracleInterface, ResilientOracleInterface } from \\\"../../interfaces/OracleInterface.sol\\\";\\nimport { ensureNonzeroAddress } from \\\"@venusprotocol/solidity-utilities/contracts/validators.sol\\\";\\nimport { SECONDS_PER_YEAR } from \\\"@venusprotocol/solidity-utilities/contracts/constants.sol\\\";\\nimport { IERC20Metadata } from \\\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\\\";\\nimport { ICappedOracle } from \\\"../../interfaces/ICappedOracle.sol\\\";\\nimport { IAccessControlManagerV8 } from \\\"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol\\\";\\n\\n/**\\n * @title CorrelatedTokenOracle\\n * @notice This oracle fetches the price of a token that is correlated to another token.\\n */\\nabstract contract CorrelatedTokenOracle is OracleInterface, ICappedOracle {\\n /// @notice Address of the correlated token\\n address public immutable CORRELATED_TOKEN;\\n\\n /// @notice Address of the underlying token\\n address public immutable UNDERLYING_TOKEN;\\n\\n /// @notice Address of Resilient Oracle\\n ResilientOracleInterface public immutable RESILIENT_ORACLE;\\n\\n /// @notice Address of the AccessControlManager contract\\n IAccessControlManagerV8 public immutable ACCESS_CONTROL_MANAGER;\\n\\n //// @notice Growth rate percentage in seconds. Ex: 1e18 is 100%\\n uint256 public growthRatePerSecond;\\n\\n /// @notice Snapshot update interval\\n uint256 public snapshotInterval;\\n\\n /// @notice Last stored snapshot maximum exchange rate\\n uint256 public snapshotMaxExchangeRate;\\n\\n /// @notice Last stored snapshot timestamp\\n uint256 public snapshotTimestamp;\\n\\n /// @notice Gap to add when updating the snapshot\\n uint256 public snapshotGap;\\n\\n /// @notice Emitted when the snapshot is updated\\n event SnapshotUpdated(uint256 indexed maxExchangeRate, uint256 indexed timestamp);\\n\\n /// @notice Emitted when the growth rate is updated\\n event GrowthRateUpdated(\\n uint256 indexed oldGrowthRatePerSecond,\\n uint256 indexed newGrowthRatePerSecond,\\n uint256 indexed oldSnapshotInterval,\\n uint256 newSnapshotInterval\\n );\\n\\n /// @notice Emitted when the snapshot gap is updated\\n event SnapshotGapUpdated(uint256 indexed oldSnapshotGap, uint256 indexed newSnapshotGap);\\n\\n /// @notice Thrown if the token address is invalid\\n error InvalidTokenAddress();\\n\\n /// @notice Thrown if the growth rate is invalid\\n error InvalidGrowthRate();\\n\\n /// @notice Thrown if the initial snapshot is invalid\\n error InvalidInitialSnapshot();\\n\\n /// @notice Thrown if the max snapshot exchange rate is invalid\\n error InvalidSnapshotMaxExchangeRate();\\n\\n /// @notice @notice Thrown when the action is prohibited by AccessControlManager\\n error Unauthorized(address sender, address calledContract, string methodSignature);\\n\\n /**\\n * @notice Constructor for the implementation contract.\\n * @custom:error InvalidGrowthRate error is thrown if the growth rate is invalid\\n * @custom:error InvalidInitialSnapshot error is thrown if the initial snapshot values are invalid\\n */\\n constructor(\\n address _correlatedToken,\\n address _underlyingToken,\\n address _resilientOracle,\\n uint256 _annualGrowthRate,\\n uint256 _snapshotInterval,\\n uint256 _initialSnapshotMaxExchangeRate,\\n uint256 _initialSnapshotTimestamp,\\n address _accessControlManager,\\n uint256 _snapshotGap\\n ) {\\n growthRatePerSecond = _annualGrowthRate / SECONDS_PER_YEAR;\\n\\n if ((growthRatePerSecond == 0 && _snapshotInterval > 0) || (growthRatePerSecond > 0 && _snapshotInterval == 0))\\n revert InvalidGrowthRate();\\n\\n if ((_initialSnapshotMaxExchangeRate == 0 || _initialSnapshotTimestamp == 0) && _snapshotInterval > 0) {\\n revert InvalidInitialSnapshot();\\n }\\n\\n ensureNonzeroAddress(_correlatedToken);\\n ensureNonzeroAddress(_underlyingToken);\\n ensureNonzeroAddress(_resilientOracle);\\n ensureNonzeroAddress(_accessControlManager);\\n\\n CORRELATED_TOKEN = _correlatedToken;\\n UNDERLYING_TOKEN = _underlyingToken;\\n RESILIENT_ORACLE = ResilientOracleInterface(_resilientOracle);\\n snapshotInterval = _snapshotInterval;\\n\\n snapshotMaxExchangeRate = _initialSnapshotMaxExchangeRate;\\n snapshotTimestamp = _initialSnapshotTimestamp;\\n snapshotGap = _snapshotGap;\\n\\n ACCESS_CONTROL_MANAGER = IAccessControlManagerV8(_accessControlManager);\\n }\\n\\n /**\\n * @notice Directly sets the snapshot exchange rate and timestamp\\n * @param _snapshotMaxExchangeRate The exchange rate to set\\n * @param _snapshotTimestamp The timestamp to set\\n * @custom:event Emits SnapshotUpdated event on successful update of the snapshot\\n */\\n function setSnapshot(uint256 _snapshotMaxExchangeRate, uint256 _snapshotTimestamp) external {\\n _checkAccessAllowed(\\\"setSnapshot(uint256,uint256)\\\");\\n\\n snapshotMaxExchangeRate = _snapshotMaxExchangeRate;\\n snapshotTimestamp = _snapshotTimestamp;\\n\\n emit SnapshotUpdated(snapshotMaxExchangeRate, snapshotTimestamp);\\n }\\n\\n /**\\n * @notice Sets the growth rate and snapshot interval\\n * @param _annualGrowthRate The annual growth rate to set\\n * @param _snapshotInterval The snapshot interval to set\\n * @custom:error InvalidGrowthRate error is thrown if the growth rate is invalid\\n * @custom:event Emits GrowthRateUpdated event on successful update of the growth rate\\n */\\n function setGrowthRate(uint256 _annualGrowthRate, uint256 _snapshotInterval) external {\\n _checkAccessAllowed(\\\"setGrowthRate(uint256,uint256)\\\");\\n uint256 oldGrowthRatePerSecond = growthRatePerSecond;\\n\\n growthRatePerSecond = _annualGrowthRate / SECONDS_PER_YEAR;\\n\\n if ((growthRatePerSecond == 0 && _snapshotInterval > 0) || (growthRatePerSecond > 0 && _snapshotInterval == 0))\\n revert InvalidGrowthRate();\\n\\n emit GrowthRateUpdated(oldGrowthRatePerSecond, growthRatePerSecond, snapshotInterval, _snapshotInterval);\\n\\n snapshotInterval = _snapshotInterval;\\n }\\n\\n /**\\n * @notice Sets the snapshot gap\\n * @param _snapshotGap The snapshot gap to set\\n * @custom:event Emits SnapshotGapUpdated event on successful update of the snapshot gap\\n */\\n function setSnapshotGap(uint256 _snapshotGap) external {\\n _checkAccessAllowed(\\\"setSnapshotGap(uint256)\\\");\\n\\n emit SnapshotGapUpdated(snapshotGap, _snapshotGap);\\n\\n snapshotGap = _snapshotGap;\\n }\\n\\n /**\\n * @notice Returns if the price is capped\\n * @return isCapped Boolean indicating if the price is capped\\n */\\n function isCapped() external view virtual returns (bool) {\\n if (snapshotInterval == 0) {\\n return false;\\n }\\n\\n uint256 maxAllowedExchangeRate = getMaxAllowedExchangeRate();\\n if (maxAllowedExchangeRate == 0) {\\n return false;\\n }\\n\\n uint256 exchangeRate = getUnderlyingAmount();\\n\\n return exchangeRate > maxAllowedExchangeRate;\\n }\\n\\n /**\\n * @notice Updates the snapshot price and timestamp\\n * @custom:event Emits SnapshotUpdated event on successful update of the snapshot\\n * @custom:error InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero\\n */\\n function updateSnapshot() public override {\\n if (block.timestamp - snapshotTimestamp < snapshotInterval || snapshotInterval == 0) return;\\n\\n uint256 exchangeRate = getUnderlyingAmount();\\n uint256 maxAllowedExchangeRate = getMaxAllowedExchangeRate();\\n\\n snapshotMaxExchangeRate =\\n (exchangeRate > maxAllowedExchangeRate ? maxAllowedExchangeRate : exchangeRate) +\\n snapshotGap;\\n snapshotTimestamp = block.timestamp;\\n\\n if (snapshotMaxExchangeRate == 0) revert InvalidSnapshotMaxExchangeRate();\\n\\n RESILIENT_ORACLE.updateAssetPrice(UNDERLYING_TOKEN);\\n emit SnapshotUpdated(snapshotMaxExchangeRate, snapshotTimestamp);\\n }\\n\\n /**\\n * @notice Fetches the price of the token\\n * @param asset Address of the token\\n * @return price The price of the token in scaled decimal places. It can be capped\\n * to a maximum value taking into account the growth rate\\n * @custom:error InvalidTokenAddress error is thrown if the token address is invalid\\n */\\n function getPrice(address asset) public view override returns (uint256) {\\n if (asset != CORRELATED_TOKEN) revert InvalidTokenAddress();\\n\\n uint256 exchangeRate = getUnderlyingAmount();\\n\\n if (snapshotInterval == 0) {\\n return _calculatePrice(exchangeRate);\\n }\\n\\n uint256 maxAllowedExchangeRate = getMaxAllowedExchangeRate();\\n\\n uint256 finalExchangeRate = (exchangeRate > maxAllowedExchangeRate && maxAllowedExchangeRate != 0)\\n ? maxAllowedExchangeRate\\n : exchangeRate;\\n\\n return _calculatePrice(finalExchangeRate);\\n }\\n\\n /**\\n * @notice Gets the maximum allowed exchange rate for token\\n * @return maxExchangeRate Maximum allowed exchange rate\\n */\\n function getMaxAllowedExchangeRate() public view returns (uint256) {\\n uint256 timeElapsed = block.timestamp - snapshotTimestamp;\\n uint256 maxExchangeRate = snapshotMaxExchangeRate +\\n (snapshotMaxExchangeRate * growthRatePerSecond * timeElapsed) /\\n 1e18;\\n return maxExchangeRate;\\n }\\n\\n /**\\n * @notice Gets the underlying amount for correlated token\\n * @return underlyingAmount Amount of underlying token\\n */\\n function getUnderlyingAmount() public view virtual returns (uint256);\\n\\n /**\\n * @notice Fetches price of the token based on an underlying exchange rate\\n * @param exchangeRate The underlying exchange rate to use\\n * @return price The price of the token in scaled decimal places\\n */\\n function _calculatePrice(uint256 exchangeRate) internal view returns (uint256) {\\n uint256 underlyingUSDPrice = RESILIENT_ORACLE.getPrice(UNDERLYING_TOKEN);\\n\\n IERC20Metadata token = IERC20Metadata(CORRELATED_TOKEN);\\n uint256 decimals = token.decimals();\\n\\n return (exchangeRate * underlyingUSDPrice) / (10 ** decimals);\\n }\\n\\n /**\\n * @notice Reverts if the call is not allowed by AccessControlManager\\n * @param signature Method signature\\n * @custom:error Unauthorized error is thrown if the call is not allowed\\n */\\n function _checkAccessAllowed(string memory signature) internal view {\\n bool isAllowedToCall = ACCESS_CONTROL_MANAGER.isAllowedToCall(msg.sender, signature);\\n\\n if (!isAllowedToCall) {\\n revert Unauthorized(msg.sender, address(this), signature);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x808b444fa4d1d440dc43de290f1eb59a64646ce9085028b286fa30346305872e\",\"license\":\"BSD-3-Clause\"}},\"version\":1}", + "bytecode": "0x6101a0604052348015610010575f80fd5b5060405161155938038061155983398101604081905261002f916103a6565b6060810151608082015160a083015160e084015161010085015161012086015161014087015161016088015161018089015161006f6301e1338087610481565b5f81905515801561007f57505f85115b8061009357505f8054118015610093575084155b156100b1576040516353b7e64560e11b815260040160405180910390fd5b8315806100bc575082155b80156100c757505f85115b156100e55760405163b8a5589b60e01b815260040160405180910390fd5b6100ee896102eb565b6100f7886102eb565b610100876102eb565b610109826102eb565b6001600160a01b0398891660805296881660a05294871660c052600192909255600255600355506004919091551660e0528051610145906102eb565b6020810151610153906102eb565b60c08101516101679063ffffffff16610315565b80516001600160a01b03908116610140526020820151166101005260408101516001811115610198576101986104a0565b6101208160018111156101ad576101ad6104a0565b815250508060c0015163ffffffff166101608163ffffffff168152505060a0516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610208573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061022c91906104b4565b60ff166101805261010051610140516101605160405162439f4b60e91b81526001600160a01b03928316600482015263ffffffff90911660248201525f928392169063873e960090604401606060405180830381865afa158015610292573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102b691906104ea565b925050915081806102c5575080155b156102e357604051637616640160e01b815260040160405180910390fd5b505050610532565b6001600160a01b038116610312576040516342bcdf7f60e11b815260040160405180910390fd5b50565b805f036103125760405163273e150360e21b815260040160405180910390fd5b6040516101a081016001600160401b038111828210171561036457634e487b7160e01b5f52604160045260245ffd5b60405290565b80516001600160a01b0381168114610380575f80fd5b919050565b805160028110610380575f80fd5b805163ffffffff81168114610380575f80fd5b5f6101a082840312156103b7575f80fd5b6103bf610335565b6103c88361036a565b81526103d66020840161036a565b60208201526103e760408401610385565b60408201526103f86060840161036a565b60608201526104096080840161036a565b608082015261041a60a0840161036a565b60a082015261042b60c08401610393565b60c082015260e0838101519082015261010080840151908201526101208084015190820152610140808401519082015261016061046981850161036a565b90820152610180928301519281019290925250919050565b5f8261049b57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52602160045260245ffd5b5f602082840312156104c4575f80fd5b815160ff811681146104d4575f80fd5b9392505050565b80518015158114610380575f80fd5b5f805f606084860312156104fc575f80fd5b610505846104db565b9250602084015161ffff8116811461051b575f80fd5b9150610529604085016104db565b90509250925092565b60805160a05160c05160e0516101005161012051610140516101605161018051610f596106005f395f81816101d9015261099d01525f81816103070152818161081b01526108f601525f818161038b015281816107f301526108ce01525f818161014601526107a701525f81816102e001528181610847015261092201525f818161022e0152610b9a01525f818161034c0152818161069c0152610a6d01525f818161019a015281816106740152610a4101525f81816102a6015281816103b00152610adb0152610f595ff3fe608060405234801561000f575f80fd5b506004361061013d575f3560e01c806369240426116100b45780639c43eb54116100795780639c43eb541461033e578063a4edcd4c14610347578063abb856131461036e578063ac5a693e14610376578063bdf13af21461037e578063f46f16c214610386575f80fd5b8063692404261461029957806369818a35146102a15780637fc4e4a0146102c8578063809d7b31146102db578063879ac8f814610302575f80fd5b806341976e091161010557806341976e091461021657806345be2dc7146102295780635213f9c814610250578063596efe6f14610265578063643d813d1461026e578063671528d414610281575f80fd5b806302125d091461014157806307d0413c1461017e57806329db1be6146101955780633dae7c22146101d45780634169d2451461020d575b5f80fd5b6101687f000000000000000000000000000000000000000000000000000000000000000081565b6040516101759190610c57565b60405180910390f35b61018760015481565b604051908152602001610175565b6101bc7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610175565b6101fb7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610175565b61018760045481565b610187610224366004610c7d565b6103ad565b6101bc7f000000000000000000000000000000000000000000000000000000000000000081565b61026361025e366004610ca3565b61045e565b005b61018760025481565b61026361027c366004610cba565b6104cf565b6102896105a5565b6040519015158152602001610175565b6102636105e0565b6101bc7f000000000000000000000000000000000000000000000000000000000000000081565b6102636102d6366004610cba565b610729565b6101bc7f000000000000000000000000000000000000000000000000000000000000000081565b6103297f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610175565b61018760035481565b6101bc7f000000000000000000000000000000000000000000000000000000000000000081565b6101876107a1565b6101875f5481565b6101876109dd565b6101bc7f000000000000000000000000000000000000000000000000000000000000000081565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161461040057604051630f58058360e11b815260040160405180910390fd5b5f6104096107a1565b90506001545f036104245761041d81610a2a565b9392505050565b5f61042d6109dd565b90505f818311801561043e57508115155b610448578261044a565b815b905061045581610a2a565b95945050505050565b61049c6040518060400160405280601781526020017f736574536e617073686f744761702875696e7432353629000000000000000000815250610b81565b6004546040518291907feb3716d3f8388c182853c1dc98b18931f3a600bbab31f2ff48631f6412e4997f905f90a3600455565b61050d6040518060400160405280601e81526020017f73657447726f777468526174652875696e743235362c75696e74323536290000815250610b81565b5f5461051d6301e1338084610cee565b5f81905515801561052d57505f82115b8061054157505f8054118015610541575081155b1561055f576040516353b7e64560e11b815260040160405180910390fd5b6001545f54827fa65cbeb0e28a8803a912daac67c472c160aa01e2c988755fa424f290321de6088560405161059691815260200190565b60405180910390a45060015550565b5f6001545f036105b457505f90565b5f6105bd6109dd565b9050805f036105cd575f91505090565b5f6105d66107a1565b9190911192915050565b6001546003546105f09042610d0d565b10806105fc5750600154155b1561060357565b5f61060c6107a1565b90505f6106176109dd565b9050600454818311610629578261062b565b815b6106359190610d26565b6002819055426003555f0361065d57604051635f18388760e01b815260040160405180910390fd5b60405163b62cad6960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063b62cad69906024015f604051808303815f87803b1580156106dd575f80fd5b505af11580156106ef573d5f803e3d5ffd5b505050506003546002547f2c8c8fcb8c77a0ca21dcc3ab8fc0ade761557e76b1240cb40ebbef9fcee00f7d60405160405180910390a35050565b6107676040518060400160405280601c81526020017f736574536e617073686f742875696e743235362c75696e743235362900000000815250610b81565b60028290556003819055604051819083907f2c8c8fcb8c77a0ca21dcc3ab8fc0ade761557e76b1240cb40ebbef9fcee00f7d905f90a35050565b5f8060017f000000000000000000000000000000000000000000000000000000000000000060018111156107d7576107d7610c43565b036108b75760405163a31426d160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f000000000000000000000000000000000000000000000000000000000000000063ffffffff1660248301527f0000000000000000000000000000000000000000000000000000000000000000169063a31426d190604401602060405180830381865afa15801561088c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108b09190610d39565b905061098e565b60405163abca0eab60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f000000000000000000000000000000000000000000000000000000000000000063ffffffff1660248301527f0000000000000000000000000000000000000000000000000000000000000000169063abca0eab90604401602060405180830381865afa158015610967573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061098b9190610d39565b90505b670de0b6b3a7640000816109c37f0000000000000000000000000000000000000000000000000000000000000000600a610e30565b6109cd9190610e3e565b6109d79190610cee565b91505090565b5f80600354426109ed9190610d0d565b90505f670de0b6b3a7640000825f54600254610a099190610e3e565b610a139190610e3e565b610a1d9190610cee565b60025461041d9190610d26565b6040516341976e0960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f9182917f000000000000000000000000000000000000000000000000000000000000000016906341976e0990602401602060405180830381865afa158015610ab2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ad69190610d39565b90505f7f000000000000000000000000000000000000000000000000000000000000000090505f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b39573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b5d9190610e55565b60ff169050610b6d81600a610e75565b610b778487610e3e565b6104559190610cee565b6040516318c5e8ab60e01b81525f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906318c5e8ab90610bd19033908690600401610eae565b602060405180830381865afa158015610bec573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c109190610ed9565b905080610c3f57333083604051634a3fa29360e01b8152600401610c3693929190610ef8565b60405180910390fd5b5050565b634e487b7160e01b5f52602160045260245ffd5b6020810160028310610c7757634e487b7160e01b5f52602160045260245ffd5b91905290565b5f60208284031215610c8d575f80fd5b81356001600160a01b038116811461041d575f80fd5b5f60208284031215610cb3575f80fd5b5035919050565b5f8060408385031215610ccb575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b5f82610d0857634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115610d2057610d20610cda565b92915050565b80820180821115610d2057610d20610cda565b5f60208284031215610d49575f80fd5b5051919050565b600181815b80851115610d8a57815f1904821115610d7057610d70610cda565b80851615610d7d57918102915b93841c9390800290610d55565b509250929050565b5f82610da057506001610d20565b81610dac57505f610d20565b8160018114610dc25760028114610dcc57610de8565b6001915050610d20565b60ff841115610ddd57610ddd610cda565b50506001821b610d20565b5060208310610133831016604e8410600b8410161715610e0b575081810a610d20565b610e158383610d50565b805f1904821115610e2857610e28610cda565b029392505050565b5f61041d60ff841683610d92565b8082028115828204841417610d2057610d20610cda565b5f60208284031215610e65575f80fd5b815160ff8116811461041d575f80fd5b5f61041d8383610d92565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6001600160a01b03831681526040602082018190525f90610ed190830184610e80565b949350505050565b5f60208284031215610ee9575f80fd5b8151801515811461041d575f80fd5b6001600160a01b038481168252831660208201526060604082018190525f9061045590830184610e8056fea2646970667358221220dd4434cf5ec982b81a2a3a25f96ea3d5d76d95704500f208da19253bd6abc73b64736f6c63430008190033", + "deployedBytecode": "0x608060405234801561000f575f80fd5b506004361061013d575f3560e01c806369240426116100b45780639c43eb54116100795780639c43eb541461033e578063a4edcd4c14610347578063abb856131461036e578063ac5a693e14610376578063bdf13af21461037e578063f46f16c214610386575f80fd5b8063692404261461029957806369818a35146102a15780637fc4e4a0146102c8578063809d7b31146102db578063879ac8f814610302575f80fd5b806341976e091161010557806341976e091461021657806345be2dc7146102295780635213f9c814610250578063596efe6f14610265578063643d813d1461026e578063671528d414610281575f80fd5b806302125d091461014157806307d0413c1461017e57806329db1be6146101955780633dae7c22146101d45780634169d2451461020d575b5f80fd5b6101687f000000000000000000000000000000000000000000000000000000000000000081565b6040516101759190610c57565b60405180910390f35b61018760015481565b604051908152602001610175565b6101bc7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610175565b6101fb7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610175565b61018760045481565b610187610224366004610c7d565b6103ad565b6101bc7f000000000000000000000000000000000000000000000000000000000000000081565b61026361025e366004610ca3565b61045e565b005b61018760025481565b61026361027c366004610cba565b6104cf565b6102896105a5565b6040519015158152602001610175565b6102636105e0565b6101bc7f000000000000000000000000000000000000000000000000000000000000000081565b6102636102d6366004610cba565b610729565b6101bc7f000000000000000000000000000000000000000000000000000000000000000081565b6103297f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610175565b61018760035481565b6101bc7f000000000000000000000000000000000000000000000000000000000000000081565b6101876107a1565b6101875f5481565b6101876109dd565b6101bc7f000000000000000000000000000000000000000000000000000000000000000081565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161461040057604051630f58058360e11b815260040160405180910390fd5b5f6104096107a1565b90506001545f036104245761041d81610a2a565b9392505050565b5f61042d6109dd565b90505f818311801561043e57508115155b610448578261044a565b815b905061045581610a2a565b95945050505050565b61049c6040518060400160405280601781526020017f736574536e617073686f744761702875696e7432353629000000000000000000815250610b81565b6004546040518291907feb3716d3f8388c182853c1dc98b18931f3a600bbab31f2ff48631f6412e4997f905f90a3600455565b61050d6040518060400160405280601e81526020017f73657447726f777468526174652875696e743235362c75696e74323536290000815250610b81565b5f5461051d6301e1338084610cee565b5f81905515801561052d57505f82115b8061054157505f8054118015610541575081155b1561055f576040516353b7e64560e11b815260040160405180910390fd5b6001545f54827fa65cbeb0e28a8803a912daac67c472c160aa01e2c988755fa424f290321de6088560405161059691815260200190565b60405180910390a45060015550565b5f6001545f036105b457505f90565b5f6105bd6109dd565b9050805f036105cd575f91505090565b5f6105d66107a1565b9190911192915050565b6001546003546105f09042610d0d565b10806105fc5750600154155b1561060357565b5f61060c6107a1565b90505f6106176109dd565b9050600454818311610629578261062b565b815b6106359190610d26565b6002819055426003555f0361065d57604051635f18388760e01b815260040160405180910390fd5b60405163b62cad6960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063b62cad69906024015f604051808303815f87803b1580156106dd575f80fd5b505af11580156106ef573d5f803e3d5ffd5b505050506003546002547f2c8c8fcb8c77a0ca21dcc3ab8fc0ade761557e76b1240cb40ebbef9fcee00f7d60405160405180910390a35050565b6107676040518060400160405280601c81526020017f736574536e617073686f742875696e743235362c75696e743235362900000000815250610b81565b60028290556003819055604051819083907f2c8c8fcb8c77a0ca21dcc3ab8fc0ade761557e76b1240cb40ebbef9fcee00f7d905f90a35050565b5f8060017f000000000000000000000000000000000000000000000000000000000000000060018111156107d7576107d7610c43565b036108b75760405163a31426d160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f000000000000000000000000000000000000000000000000000000000000000063ffffffff1660248301527f0000000000000000000000000000000000000000000000000000000000000000169063a31426d190604401602060405180830381865afa15801561088c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108b09190610d39565b905061098e565b60405163abca0eab60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f000000000000000000000000000000000000000000000000000000000000000063ffffffff1660248301527f0000000000000000000000000000000000000000000000000000000000000000169063abca0eab90604401602060405180830381865afa158015610967573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061098b9190610d39565b90505b670de0b6b3a7640000816109c37f0000000000000000000000000000000000000000000000000000000000000000600a610e30565b6109cd9190610e3e565b6109d79190610cee565b91505090565b5f80600354426109ed9190610d0d565b90505f670de0b6b3a7640000825f54600254610a099190610e3e565b610a139190610e3e565b610a1d9190610cee565b60025461041d9190610d26565b6040516341976e0960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f9182917f000000000000000000000000000000000000000000000000000000000000000016906341976e0990602401602060405180830381865afa158015610ab2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ad69190610d39565b90505f7f000000000000000000000000000000000000000000000000000000000000000090505f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b39573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b5d9190610e55565b60ff169050610b6d81600a610e75565b610b778487610e3e565b6104559190610cee565b6040516318c5e8ab60e01b81525f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906318c5e8ab90610bd19033908690600401610eae565b602060405180830381865afa158015610bec573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c109190610ed9565b905080610c3f57333083604051634a3fa29360e01b8152600401610c3693929190610ef8565b60405180910390fd5b5050565b634e487b7160e01b5f52602160045260245ffd5b6020810160028310610c7757634e487b7160e01b5f52602160045260245ffd5b91905290565b5f60208284031215610c8d575f80fd5b81356001600160a01b038116811461041d575f80fd5b5f60208284031215610cb3575f80fd5b5035919050565b5f8060408385031215610ccb575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b5f82610d0857634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115610d2057610d20610cda565b92915050565b80820180821115610d2057610d20610cda565b5f60208284031215610d49575f80fd5b5051919050565b600181815b80851115610d8a57815f1904821115610d7057610d70610cda565b80851615610d7d57918102915b93841c9390800290610d55565b509250929050565b5f82610da057506001610d20565b81610dac57505f610d20565b8160018114610dc25760028114610dcc57610de8565b6001915050610d20565b60ff841115610ddd57610ddd610cda565b50506001821b610d20565b5060208310610133831016604e8410600b8410161715610e0b575081810a610d20565b610e158383610d50565b805f1904821115610e2857610e28610cda565b029392505050565b5f61041d60ff841683610d92565b8082028115828204841417610d2057610d20610cda565b5f60208284031215610e65575f80fd5b815160ff8116811461041d575f80fd5b5f61041d8383610d92565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6001600160a01b03831681526040602082018190525f90610ed190830184610e80565b949350505050565b5f60208284031215610ee9575f80fd5b8151801515811461041d575f80fd5b6001600160a01b038481168252831660208201526060604082018190525f9061045590830184610e8056fea2646970667358221220dd4434cf5ec982b81a2a3a25f96ea3d5d76d95704500f208da19253bd6abc73b64736f6c63430008190033", + "devdoc": { + "author": "Venus", + "details": "As a base price the oracle uses either the price of the Pendle market's asset (in this case PT_TO_ASSET rate should be used) or the price of the Pendle market's interest bearing token (e.g. wstETH for stETH; in this case PT_TO_SY rate should be used). Technically, interest bearing token is different from standardized yield (SY) token, but since SY is a wrapper around an interest bearing token, we can safely assume the prices of the two are equal. This is not always true for asset price though: using PT_TO_ASSET rate assumes that the yield token can be seamlessly redeemed for the underlying asset. In reality, this might not always be the case. For more details, see https://docs.pendle.finance/Developers/Contracts/StandardizedYield", + "kind": "dev", + "methods": { + "constructor": { + "custom:error": "InvalidDuration Thrown if the duration is invalid" + }, + "getMaxAllowedExchangeRate()": { + "returns": { + "_0": "maxExchangeRate Maximum allowed exchange rate" + } + }, + "getPrice(address)": { + "custom:error": "InvalidTokenAddress error is thrown if the token address is invalid", + "params": { + "asset": "Address of the token" + }, + "returns": { + "_0": "price The price of the token in scaled decimal places. It can be capped to a maximum value taking into account the growth rate" + } + }, + "getUnderlyingAmount()": { + "returns": { + "_0": "amount The amount of underlying token (either the market's asset or the yield token) for 1 PT, adjusted for decimals such that the result has the same precision as the underlying token" + } + }, + "isCapped()": { + "returns": { + "_0": "isCapped Boolean indicating if the price is capped" + } + }, + "setGrowthRate(uint256,uint256)": { + "custom:error": "InvalidGrowthRate error is thrown if the growth rate is invalid", + "custom:event": "Emits GrowthRateUpdated event on successful update of the growth rate", + "params": { + "_annualGrowthRate": "The annual growth rate to set", + "_snapshotInterval": "The snapshot interval to set" + } + }, + "setSnapshot(uint256,uint256)": { + "custom:event": "Emits SnapshotUpdated event on successful update of the snapshot", + "params": { + "_snapshotMaxExchangeRate": "The exchange rate to set", + "_snapshotTimestamp": "The timestamp to set" + } + }, + "setSnapshotGap(uint256)": { + "custom:event": "Emits SnapshotGapUpdated event on successful update of the snapshot gap", + "params": { + "_snapshotGap": "The snapshot gap to set" + } + }, + "updateSnapshot()": { + "custom:error": "InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero", + "custom:event": "Emits SnapshotUpdated event on successful update of the snapshot" + } + }, + "stateVariables": { + "UNDERLYING_DECIMALS": { + "details": "We make an assumption that the underlying decimals will not change throughout the lifetime of the Pendle market" + } + }, + "title": "PendleOracle", + "version": 1 + }, + "userdoc": { + "errors": { + "InvalidDuration()": [ + { + "notice": "Thrown if the duration is invalid" + } + ], + "InvalidGrowthRate()": [ + { + "notice": "Thrown if the growth rate is invalid" + } + ], + "InvalidInitialSnapshot()": [ + { + "notice": "Thrown if the initial snapshot is invalid" + } + ], + "InvalidSnapshotMaxExchangeRate()": [ + { + "notice": "Thrown if the max snapshot exchange rate is invalid" + } + ], + "InvalidTokenAddress()": [ + { + "notice": "Thrown if the token address is invalid" + } + ], + "Unauthorized(address,address,string)": [ + { + "notice": "@notice Thrown when the action is prohibited by AccessControlManager" + } + ], + "ZeroAddressNotAllowed()": [ + { + "notice": "Thrown if the supplied address is a zero address where it is not allowed" + } + ], + "ZeroValueNotAllowed()": [ + { + "notice": "Thrown if the supplied value is 0 where it is not allowed" + } + ] + }, + "events": { + "GrowthRateUpdated(uint256,uint256,uint256,uint256)": { + "notice": "Emitted when the growth rate is updated" + }, + "SnapshotGapUpdated(uint256,uint256)": { + "notice": "Emitted when the snapshot gap is updated" + }, + "SnapshotUpdated(uint256,uint256)": { + "notice": "Emitted when the snapshot is updated" + } + }, + "kind": "user", + "methods": { + "ACCESS_CONTROL_MANAGER()": { + "notice": "Address of the AccessControlManager contract" + }, + "CORRELATED_TOKEN()": { + "notice": "Address of the correlated token" + }, + "MARKET()": { + "notice": "Address of the market" + }, + "PT_ORACLE()": { + "notice": "Address of the PT oracle" + }, + "RATE_KIND()": { + "notice": "Whether to use PT/SY (standardized yield token) rate or PT/market asset rate" + }, + "RESILIENT_ORACLE()": { + "notice": "Address of Resilient Oracle" + }, + "TWAP_DURATION()": { + "notice": "Twap duration for the oracle" + }, + "UNDERLYING_DECIMALS()": { + "notice": "Decimals of the underlying token" + }, + "UNDERLYING_TOKEN()": { + "notice": "Address of the underlying token" + }, + "constructor": { + "notice": "Constructor for the implementation contract." + }, + "getMaxAllowedExchangeRate()": { + "notice": "Gets the maximum allowed exchange rate for token" + }, + "getPrice(address)": { + "notice": "Fetches the price of the token" + }, + "getUnderlyingAmount()": { + "notice": "Fetches the amount of underlying token for 1 PT" + }, + "isCapped()": { + "notice": "Returns if the price is capped" + }, + "setGrowthRate(uint256,uint256)": { + "notice": "Sets the growth rate and snapshot interval" + }, + "setSnapshot(uint256,uint256)": { + "notice": "Directly sets the snapshot exchange rate and timestamp" + }, + "setSnapshotGap(uint256)": { + "notice": "Sets the snapshot gap" + }, + "snapshotGap()": { + "notice": "Gap to add when updating the snapshot" + }, + "snapshotInterval()": { + "notice": "Snapshot update interval" + }, + "snapshotMaxExchangeRate()": { + "notice": "Last stored snapshot maximum exchange rate" + }, + "snapshotTimestamp()": { + "notice": "Last stored snapshot timestamp" + }, + "updateSnapshot()": { + "notice": "Updates the snapshot price and timestamp" + } + }, + "notice": "This oracle fetches the price of a pendle token", + "version": 1 + }, + "storageLayout": { + "storage": [ + { + "astId": 6602, + "contract": "contracts/oracles/PendleOracle.sol:PendleOracle", + "label": "growthRatePerSecond", + "offset": 0, + "slot": "0", + "type": "t_uint256" + }, + { + "astId": 6605, + "contract": "contracts/oracles/PendleOracle.sol:PendleOracle", + "label": "snapshotInterval", + "offset": 0, + "slot": "1", + "type": "t_uint256" + }, + { + "astId": 6608, + "contract": "contracts/oracles/PendleOracle.sol:PendleOracle", + "label": "snapshotMaxExchangeRate", + "offset": 0, + "slot": "2", + "type": "t_uint256" + }, + { + "astId": 6611, + "contract": "contracts/oracles/PendleOracle.sol:PendleOracle", + "label": "snapshotTimestamp", + "offset": 0, + "slot": "3", + "type": "t_uint256" + }, + { + "astId": 6614, + "contract": "contracts/oracles/PendleOracle.sol:PendleOracle", + "label": "snapshotGap", + "offset": 0, + "slot": "4", + "type": "t_uint256" + } + ], + "types": { + "t_uint256": { + "encoding": "inplace", + "label": "uint256", + "numberOfBytes": "32" + } + } + } +} diff --git a/deployments/bscmainnet/PendleOracle-PT-USDe-30OCT2025_Reference_PtToAsset.json b/deployments/bscmainnet/PendleOracle-PT-USDe-30OCT2025_Reference_PtToAsset.json new file mode 100644 index 00000000..f93df2be --- /dev/null +++ b/deployments/bscmainnet/PendleOracle-PT-USDe-30OCT2025_Reference_PtToAsset.json @@ -0,0 +1,785 @@ +{ + "address": "0xa1041218273BB5F3f0bdD8B2BbaDACE05e2CF567", + "abi": [ + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "market", + "type": "address" + }, + { + "internalType": "address", + "name": "ptOracle", + "type": "address" + }, + { + "internalType": "enum PendleOracle.RateKind", + "name": "rateKind", + "type": "uint8" + }, + { + "internalType": "address", + "name": "ptToken", + "type": "address" + }, + { + "internalType": "address", + "name": "underlyingToken", + "type": "address" + }, + { + "internalType": "address", + "name": "resilientOracle", + "type": "address" + }, + { + "internalType": "uint32", + "name": "twapDuration", + "type": "uint32" + }, + { + "internalType": "uint256", + "name": "annualGrowthRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "snapshotInterval", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "initialSnapshotMaxExchangeRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "initialSnapshotTimestamp", + "type": "uint256" + }, + { + "internalType": "address", + "name": "accessControlManager", + "type": "address" + }, + { + "internalType": "uint256", + "name": "snapshotGap", + "type": "uint256" + } + ], + "internalType": "struct PendleOracle.ConstructorParams", + "name": "params", + "type": "tuple" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "InvalidDuration", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidGrowthRate", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialSnapshot", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidSnapshotMaxExchangeRate", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidTokenAddress", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "calledContract", + "type": "address" + }, + { + "internalType": "string", + "name": "methodSignature", + "type": "string" + } + ], + "name": "Unauthorized", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroAddressNotAllowed", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroValueNotAllowed", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "oldGrowthRatePerSecond", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newGrowthRatePerSecond", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "oldSnapshotInterval", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newSnapshotInterval", + "type": "uint256" + } + ], + "name": "GrowthRateUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "oldSnapshotGap", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newSnapshotGap", + "type": "uint256" + } + ], + "name": "SnapshotGapUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "maxExchangeRate", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "name": "SnapshotUpdated", + "type": "event" + }, + { + "inputs": [], + "name": "ACCESS_CONTROL_MANAGER", + "outputs": [ + { + "internalType": "contract IAccessControlManagerV8", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "CORRELATED_TOKEN", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MARKET", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PT_ORACLE", + "outputs": [ + { + "internalType": "contract IPendlePtOracle", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "RATE_KIND", + "outputs": [ + { + "internalType": "enum PendleOracle.RateKind", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "RESILIENT_ORACLE", + "outputs": [ + { + "internalType": "contract ResilientOracleInterface", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "TWAP_DURATION", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UNDERLYING_DECIMALS", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UNDERLYING_TOKEN", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getMaxAllowedExchangeRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "getPrice", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getUnderlyingAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "growthRatePerSecond", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "isCapped", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_annualGrowthRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_snapshotInterval", + "type": "uint256" + } + ], + "name": "setGrowthRate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_snapshotMaxExchangeRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_snapshotTimestamp", + "type": "uint256" + } + ], + "name": "setSnapshot", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_snapshotGap", + "type": "uint256" + } + ], + "name": "setSnapshotGap", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "snapshotGap", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "snapshotInterval", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "snapshotMaxExchangeRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "snapshotTimestamp", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "updateSnapshot", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "transactionHash": "0xdb767cd2719099ab74f0b8ab1f38835ec870e65c61ea3e1bb2a31ec972277a07", + "receipt": { + "to": null, + "from": "0x14A1c22EF6d2eF6cE33c0b018d8A34D02021e5c8", + "contractAddress": "0xa1041218273BB5F3f0bdD8B2BbaDACE05e2CF567", + "transactionIndex": 151, + "gasUsed": "965763", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x99e3b6c46d7f52bbf25c9b33324a00c0093f807d44e2ef2c10acbb34404e1622", + "transactionHash": "0xdb767cd2719099ab74f0b8ab1f38835ec870e65c61ea3e1bb2a31ec972277a07", + "logs": [], + "blockNumber": 62522738, + "cumulativeGasUsed": "22657268", + "status": 1, + "byzantium": true + }, + "args": [ + { + "market": "0xb5b56637810e4d090894785993f4cdd6875d927e", + "ptOracle": "0x9a9fa8338dd5e5b2188006f1cd2ef26d921650c2", + "rateKind": 0, + "ptToken": "0x607c834cfb7fcbbb341cbe23f77a6e83bcf3f55c", + "underlyingToken": "0x5d3a1Ff2b6BAb83b63cd9AD0787074081a52ef34", + "resilientOracle": "0x6592b5DE802159F3E74B2486b091D11a8256ab8A", + "twapDuration": 1800, + "annualGrowthRate": 0, + "snapshotInterval": 0, + "initialSnapshotMaxExchangeRate": 0, + "initialSnapshotTimestamp": 0, + "accessControlManager": "0x4788629abc6cfca10f9f969efdeaa1cf70c23555", + "snapshotGap": 0 + } + ], + "numDeployments": 1, + "solcInputHash": "eb7ae6b5763315e358adb74172778b7c", + "metadata": "{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"market\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"ptOracle\",\"type\":\"address\"},{\"internalType\":\"enum PendleOracle.RateKind\",\"name\":\"rateKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"ptToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"underlyingToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resilientOracle\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"twapDuration\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"annualGrowthRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"snapshotInterval\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSnapshotMaxExchangeRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSnapshotTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"accessControlManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"snapshotGap\",\"type\":\"uint256\"}],\"internalType\":\"struct PendleOracle.ConstructorParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidDuration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidGrowthRate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialSnapshot\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSnapshotMaxExchangeRate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"calledContract\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"methodSignature\",\"type\":\"string\"}],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroValueNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldGrowthRatePerSecond\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newGrowthRatePerSecond\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldSnapshotInterval\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSnapshotInterval\",\"type\":\"uint256\"}],\"name\":\"GrowthRateUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldSnapshotGap\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newSnapshotGap\",\"type\":\"uint256\"}],\"name\":\"SnapshotGapUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maxExchangeRate\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"SnapshotUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ACCESS_CONTROL_MANAGER\",\"outputs\":[{\"internalType\":\"contract IAccessControlManagerV8\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CORRELATED_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MARKET\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PT_ORACLE\",\"outputs\":[{\"internalType\":\"contract IPendlePtOracle\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RATE_KIND\",\"outputs\":[{\"internalType\":\"enum PendleOracle.RateKind\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RESILIENT_ORACLE\",\"outputs\":[{\"internalType\":\"contract ResilientOracleInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TWAP_DURATION\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UNDERLYING_DECIMALS\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UNDERLYING_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaxAllowedExchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUnderlyingAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"growthRatePerSecond\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isCapped\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_annualGrowthRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotInterval\",\"type\":\"uint256\"}],\"name\":\"setGrowthRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_snapshotMaxExchangeRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotTimestamp\",\"type\":\"uint256\"}],\"name\":\"setSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_snapshotGap\",\"type\":\"uint256\"}],\"name\":\"setSnapshotGap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotGap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotInterval\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotMaxExchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Venus\",\"details\":\"As a base price the oracle uses either the price of the Pendle market's asset (in this case PT_TO_ASSET rate should be used) or the price of the Pendle market's interest bearing token (e.g. wstETH for stETH; in this case PT_TO_SY rate should be used). Technically, interest bearing token is different from standardized yield (SY) token, but since SY is a wrapper around an interest bearing token, we can safely assume the prices of the two are equal. This is not always true for asset price though: using PT_TO_ASSET rate assumes that the yield token can be seamlessly redeemed for the underlying asset. In reality, this might not always be the case. For more details, see https://docs.pendle.finance/Developers/Contracts/StandardizedYield\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"custom:error\":\"InvalidDuration Thrown if the duration is invalid\"},\"getMaxAllowedExchangeRate()\":{\"returns\":{\"_0\":\"maxExchangeRate Maximum allowed exchange rate\"}},\"getPrice(address)\":{\"custom:error\":\"InvalidTokenAddress error is thrown if the token address is invalid\",\"params\":{\"asset\":\"Address of the token\"},\"returns\":{\"_0\":\"price The price of the token in scaled decimal places. It can be capped to a maximum value taking into account the growth rate\"}},\"getUnderlyingAmount()\":{\"returns\":{\"_0\":\"amount The amount of underlying token (either the market's asset or the yield token) for 1 PT, adjusted for decimals such that the result has the same precision as the underlying token\"}},\"isCapped()\":{\"returns\":{\"_0\":\"isCapped Boolean indicating if the price is capped\"}},\"setGrowthRate(uint256,uint256)\":{\"custom:error\":\"InvalidGrowthRate error is thrown if the growth rate is invalid\",\"custom:event\":\"Emits GrowthRateUpdated event on successful update of the growth rate\",\"params\":{\"_annualGrowthRate\":\"The annual growth rate to set\",\"_snapshotInterval\":\"The snapshot interval to set\"}},\"setSnapshot(uint256,uint256)\":{\"custom:event\":\"Emits SnapshotUpdated event on successful update of the snapshot\",\"params\":{\"_snapshotMaxExchangeRate\":\"The exchange rate to set\",\"_snapshotTimestamp\":\"The timestamp to set\"}},\"setSnapshotGap(uint256)\":{\"custom:event\":\"Emits SnapshotGapUpdated event on successful update of the snapshot gap\",\"params\":{\"_snapshotGap\":\"The snapshot gap to set\"}},\"updateSnapshot()\":{\"custom:error\":\"InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero\",\"custom:event\":\"Emits SnapshotUpdated event on successful update of the snapshot\"}},\"stateVariables\":{\"UNDERLYING_DECIMALS\":{\"details\":\"We make an assumption that the underlying decimals will not change throughout the lifetime of the Pendle market\"}},\"title\":\"PendleOracle\",\"version\":1},\"userdoc\":{\"errors\":{\"InvalidDuration()\":[{\"notice\":\"Thrown if the duration is invalid\"}],\"InvalidGrowthRate()\":[{\"notice\":\"Thrown if the growth rate is invalid\"}],\"InvalidInitialSnapshot()\":[{\"notice\":\"Thrown if the initial snapshot is invalid\"}],\"InvalidSnapshotMaxExchangeRate()\":[{\"notice\":\"Thrown if the max snapshot exchange rate is invalid\"}],\"InvalidTokenAddress()\":[{\"notice\":\"Thrown if the token address is invalid\"}],\"Unauthorized(address,address,string)\":[{\"notice\":\"@notice Thrown when the action is prohibited by AccessControlManager\"}],\"ZeroAddressNotAllowed()\":[{\"notice\":\"Thrown if the supplied address is a zero address where it is not allowed\"}],\"ZeroValueNotAllowed()\":[{\"notice\":\"Thrown if the supplied value is 0 where it is not allowed\"}]},\"events\":{\"GrowthRateUpdated(uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted when the growth rate is updated\"},\"SnapshotGapUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the snapshot gap is updated\"},\"SnapshotUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the snapshot is updated\"}},\"kind\":\"user\",\"methods\":{\"ACCESS_CONTROL_MANAGER()\":{\"notice\":\"Address of the AccessControlManager contract\"},\"CORRELATED_TOKEN()\":{\"notice\":\"Address of the correlated token\"},\"MARKET()\":{\"notice\":\"Address of the market\"},\"PT_ORACLE()\":{\"notice\":\"Address of the PT oracle\"},\"RATE_KIND()\":{\"notice\":\"Whether to use PT/SY (standardized yield token) rate or PT/market asset rate\"},\"RESILIENT_ORACLE()\":{\"notice\":\"Address of Resilient Oracle\"},\"TWAP_DURATION()\":{\"notice\":\"Twap duration for the oracle\"},\"UNDERLYING_DECIMALS()\":{\"notice\":\"Decimals of the underlying token\"},\"UNDERLYING_TOKEN()\":{\"notice\":\"Address of the underlying token\"},\"constructor\":{\"notice\":\"Constructor for the implementation contract.\"},\"getMaxAllowedExchangeRate()\":{\"notice\":\"Gets the maximum allowed exchange rate for token\"},\"getPrice(address)\":{\"notice\":\"Fetches the price of the token\"},\"getUnderlyingAmount()\":{\"notice\":\"Fetches the amount of underlying token for 1 PT\"},\"isCapped()\":{\"notice\":\"Returns if the price is capped\"},\"setGrowthRate(uint256,uint256)\":{\"notice\":\"Sets the growth rate and snapshot interval\"},\"setSnapshot(uint256,uint256)\":{\"notice\":\"Directly sets the snapshot exchange rate and timestamp\"},\"setSnapshotGap(uint256)\":{\"notice\":\"Sets the snapshot gap\"},\"snapshotGap()\":{\"notice\":\"Gap to add when updating the snapshot\"},\"snapshotInterval()\":{\"notice\":\"Snapshot update interval\"},\"snapshotMaxExchangeRate()\":{\"notice\":\"Last stored snapshot maximum exchange rate\"},\"snapshotTimestamp()\":{\"notice\":\"Last stored snapshot timestamp\"},\"updateSnapshot()\":{\"notice\":\"Updates the snapshot price and timestamp\"}},\"notice\":\"This oracle fetches the price of a pendle token\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracles/PendleOracle.sol\":\"PendleOracle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev External interface of AccessControl declared to support ERC165 detection.\\n */\\ninterface IAccessControl {\\n /**\\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\\n *\\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\\n * {RoleAdminChanged} not being emitted signaling this.\\n *\\n * _Available since v3.1._\\n */\\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\\n\\n /**\\n * @dev Emitted when `account` is granted `role`.\\n *\\n * `sender` is the account that originated the contract call, an admin role\\n * bearer except when using {AccessControl-_setupRole}.\\n */\\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Emitted when `account` is revoked `role`.\\n *\\n * `sender` is the account that originated the contract call:\\n * - if using `revokeRole`, it is the admin role bearer\\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\\n */\\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Returns `true` if `account` has been granted `role`.\\n */\\n function hasRole(bytes32 role, address account) external view returns (bool);\\n\\n /**\\n * @dev Returns the admin role that controls `role`. See {grantRole} and\\n * {revokeRole}.\\n *\\n * To change a role's admin, use {AccessControl-_setRoleAdmin}.\\n */\\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function grantRole(bytes32 role, address account) external;\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function revokeRole(bytes32 role, address account) external;\\n\\n /**\\n * @dev Revokes `role` from the calling account.\\n *\\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n * purpose is to provide a mechanism for accounts to lose their privileges\\n * if they are compromised (such as when a trusted device is misplaced).\\n *\\n * If the calling account had been granted `role`, emits a {RoleRevoked}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must be `account`.\\n */\\n function renounceRole(bytes32 role, address account) external;\\n}\\n\",\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n *\\n * _Available since v4.1._\\n */\\ninterface IERC20Metadata is IERC20 {\\n /**\\n * @dev Returns the name of the token.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the symbol of the token.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the decimals places of the token.\\n */\\n function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\"},\"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\nimport \\\"@openzeppelin/contracts/access/IAccessControl.sol\\\";\\n\\n/**\\n * @title IAccessControlManagerV8\\n * @author Venus\\n * @notice Interface implemented by the `AccessControlManagerV8` contract.\\n */\\ninterface IAccessControlManagerV8 is IAccessControl {\\n function giveCallPermission(address contractAddress, string calldata functionSig, address accountToPermit) external;\\n\\n function revokeCallPermission(\\n address contractAddress,\\n string calldata functionSig,\\n address accountToRevoke\\n ) external;\\n\\n function isAllowedToCall(address account, string calldata functionSig) external view returns (bool);\\n\\n function hasPermission(\\n address account,\\n address contractAddress,\\n string calldata functionSig\\n ) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xaa29b098440d0b3a131c5ecdf25ce548790c1b5ac7bf9b5c0264b6af6f7a1e0b\",\"license\":\"BSD-3-Clause\"},\"@venusprotocol/solidity-utilities/contracts/constants.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\n/// @dev Base unit for computations, usually used in scaling (multiplications, divisions)\\nuint256 constant EXP_SCALE = 1e18;\\n\\n/// @dev A unit (literal one) in EXP_SCALE, usually used in additions/subtractions\\nuint256 constant MANTISSA_ONE = EXP_SCALE;\\n\\n/// @dev The approximate number of seconds per year\\nuint256 constant SECONDS_PER_YEAR = 31_536_000;\\n\",\"keccak256\":\"0x14de93ead464da249af31bea0e3bcfb62ec693bea3475fb4d90f055ac81dc5eb\",\"license\":\"BSD-3-Clause\"},\"@venusprotocol/solidity-utilities/contracts/validators.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.25;\\n\\n/// @notice Thrown if the supplied address is a zero address where it is not allowed\\nerror ZeroAddressNotAllowed();\\n\\n/// @notice Thrown if the supplied value is 0 where it is not allowed\\nerror ZeroValueNotAllowed();\\n\\n/// @notice Checks if the provided address is nonzero, reverts otherwise\\n/// @param address_ Address to check\\n/// @custom:error ZeroAddressNotAllowed is thrown if the provided address is a zero address\\nfunction ensureNonzeroAddress(address address_) pure {\\n if (address_ == address(0)) {\\n revert ZeroAddressNotAllowed();\\n }\\n}\\n\\n/// @notice Checks if the provided value is nonzero, reverts otherwise\\n/// @param value_ Value to check\\n/// @custom:error ZeroValueNotAllowed is thrown if the provided value is 0\\nfunction ensureNonzeroValue(uint256 value_) pure {\\n if (value_ == 0) {\\n revert ZeroValueNotAllowed();\\n }\\n}\\n\",\"keccak256\":\"0xdb88e14d50dd21889ca3329d755673d022c47e8da005b6a545c7f69c2c4b7b86\",\"license\":\"BSD-3-Clause\"},\"contracts/interfaces/ICappedOracle.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.25;\\n\\ninterface ICappedOracle {\\n function updateSnapshot() external;\\n}\\n\",\"keccak256\":\"0xad239e65b5e92b3486418c5ccca120247702251f9724cd96657c3cfdc7fedc31\",\"license\":\"BSD-3-Clause\"},\"contracts/interfaces/IPendlePtOracle.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.25;\\n\\ninterface IPendlePtOracle {\\n function getPtToAssetRate(address market, uint32 duration) external view returns (uint256);\\n\\n function getPtToSyRate(address market, uint32 duration) external view returns (uint256);\\n\\n function getOracleState(\\n address market,\\n uint32 duration\\n )\\n external\\n view\\n returns (bool increaseCardinalityRequired, uint16 cardinalityRequired, bool oldestObservationSatisfied);\\n}\\n\",\"keccak256\":\"0x14d96d7f75397e4291288ef6367053bd970d95fc0c3e2a028b077f6342e0160a\",\"license\":\"BSD-3-Clause\"},\"contracts/interfaces/OracleInterface.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\ninterface OracleInterface {\\n function getPrice(address asset) external view returns (uint256);\\n}\\n\\ninterface ResilientOracleInterface is OracleInterface {\\n function updatePrice(address vToken) external;\\n\\n function updateAssetPrice(address asset) external;\\n\\n function getUnderlyingPrice(address vToken) external view returns (uint256);\\n}\\n\\ninterface BoundValidatorInterface {\\n function validatePriceWithAnchorPrice(\\n address asset,\\n uint256 reporterPrice,\\n uint256 anchorPrice\\n ) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\"},\"contracts/oracles/PendleOracle.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.25;\\n\\nimport { IPendlePtOracle } from \\\"../interfaces/IPendlePtOracle.sol\\\";\\nimport { CorrelatedTokenOracle } from \\\"./common/CorrelatedTokenOracle.sol\\\";\\nimport { ensureNonzeroAddress, ensureNonzeroValue } from \\\"@venusprotocol/solidity-utilities/contracts/validators.sol\\\";\\nimport { IERC20Metadata } from \\\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\\\";\\n\\n/**\\n * @title PendleOracle\\n * @author Venus\\n * @notice This oracle fetches the price of a pendle token\\n * @dev As a base price the oracle uses either the price of the Pendle\\n * market's asset (in this case PT_TO_ASSET rate should be used) or\\n * the price of the Pendle market's interest bearing token (e.g. wstETH\\n * for stETH; in this case PT_TO_SY rate should be used). Technically,\\n * interest bearing token is different from standardized yield (SY) token,\\n * but since SY is a wrapper around an interest bearing token, we can safely\\n * assume the prices of the two are equal. This is not always true for asset\\n * price though: using PT_TO_ASSET rate assumes that the yield token can\\n * be seamlessly redeemed for the underlying asset. In reality, this might\\n * not always be the case. For more details, see\\n * https://docs.pendle.finance/Developers/Contracts/StandardizedYield\\n */\\ncontract PendleOracle is CorrelatedTokenOracle {\\n struct ConstructorParams {\\n /// @notice Pendle market\\n address market;\\n /// @notice Pendle oracle\\n address ptOracle;\\n /// @notice Either PT_TO_ASSET or PT_TO_SY\\n RateKind rateKind;\\n /// @notice Pendle PT token\\n address ptToken;\\n /// @notice Underlying token, can be either the market's asset or the interest bearing token\\n address underlyingToken;\\n /// @notice Resilient oracle to get the underlying token price from\\n address resilientOracle;\\n /// @notice TWAP duration to call Pendle oracle with\\n uint32 twapDuration;\\n /// @notice Annual growth rate of the underlying token\\n uint256 annualGrowthRate;\\n /// @notice Snapshot interval for the oracle\\n uint256 snapshotInterval;\\n /// @notice Initial exchange rate of the underlying token\\n uint256 initialSnapshotMaxExchangeRate;\\n /// @notice Initial timestamp of the underlying token\\n uint256 initialSnapshotTimestamp;\\n /// @notice Access control manager\\n address accessControlManager;\\n /// @notice Gap to add when updating the snapshot\\n uint256 snapshotGap;\\n }\\n\\n /// @notice Which asset to use as a base for the returned PT\\n /// price. Can be either a standardized yield token (SY), in\\n /// this case PT/SY price is returned, or the Pendle\\n /// market's asset directly.\\n enum RateKind {\\n PT_TO_ASSET,\\n PT_TO_SY\\n }\\n\\n /// @notice Address of the PT oracle\\n IPendlePtOracle public immutable PT_ORACLE;\\n\\n /// @notice Whether to use PT/SY (standardized yield token) rate\\n /// or PT/market asset rate\\n RateKind public immutable RATE_KIND;\\n\\n /// @notice Address of the market\\n address public immutable MARKET;\\n\\n /// @notice Twap duration for the oracle\\n uint32 public immutable TWAP_DURATION;\\n\\n /// @notice Decimals of the underlying token\\n /// @dev We make an assumption that the underlying decimals will\\n /// not change throughout the lifetime of the Pendle market\\n uint8 public immutable UNDERLYING_DECIMALS;\\n\\n /// @notice Thrown if the duration is invalid\\n error InvalidDuration();\\n\\n /**\\n * @notice Constructor for the implementation contract.\\n * @custom:error InvalidDuration Thrown if the duration is invalid\\n */\\n constructor(\\n ConstructorParams memory params\\n )\\n CorrelatedTokenOracle(\\n params.ptToken,\\n params.underlyingToken,\\n params.resilientOracle,\\n params.annualGrowthRate,\\n params.snapshotInterval,\\n params.initialSnapshotMaxExchangeRate,\\n params.initialSnapshotTimestamp,\\n params.accessControlManager,\\n params.snapshotGap\\n )\\n {\\n ensureNonzeroAddress(params.market);\\n ensureNonzeroAddress(params.ptOracle);\\n ensureNonzeroValue(params.twapDuration);\\n\\n MARKET = params.market;\\n PT_ORACLE = IPendlePtOracle(params.ptOracle);\\n RATE_KIND = params.rateKind;\\n TWAP_DURATION = params.twapDuration;\\n UNDERLYING_DECIMALS = IERC20Metadata(UNDERLYING_TOKEN).decimals();\\n\\n (bool increaseCardinalityRequired, , bool oldestObservationSatisfied) = PT_ORACLE.getOracleState(\\n MARKET,\\n TWAP_DURATION\\n );\\n if (increaseCardinalityRequired || !oldestObservationSatisfied) {\\n revert InvalidDuration();\\n }\\n }\\n\\n /// @notice Fetches the amount of underlying token for 1 PT\\n /// @return amount The amount of underlying token (either the market's asset\\n /// or the yield token) for 1 PT, adjusted for decimals such that the result\\n /// has the same precision as the underlying token\\n function getUnderlyingAmount() public view override returns (uint256) {\\n uint256 rate;\\n if (RATE_KIND == RateKind.PT_TO_SY) {\\n rate = PT_ORACLE.getPtToSyRate(MARKET, TWAP_DURATION);\\n } else {\\n rate = PT_ORACLE.getPtToAssetRate(MARKET, TWAP_DURATION);\\n }\\n return ((10 ** UNDERLYING_DECIMALS) * rate) / 1e18;\\n }\\n}\\n\",\"keccak256\":\"0xaa7963ac7657ea62079c2162cb4fc45524f8ffbbc6e84f89a5d4e54b71dc6025\",\"license\":\"BSD-3-Clause\"},\"contracts/oracles/common/CorrelatedTokenOracle.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.25;\\n\\nimport { OracleInterface, ResilientOracleInterface } from \\\"../../interfaces/OracleInterface.sol\\\";\\nimport { ensureNonzeroAddress } from \\\"@venusprotocol/solidity-utilities/contracts/validators.sol\\\";\\nimport { SECONDS_PER_YEAR } from \\\"@venusprotocol/solidity-utilities/contracts/constants.sol\\\";\\nimport { IERC20Metadata } from \\\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\\\";\\nimport { ICappedOracle } from \\\"../../interfaces/ICappedOracle.sol\\\";\\nimport { IAccessControlManagerV8 } from \\\"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol\\\";\\n\\n/**\\n * @title CorrelatedTokenOracle\\n * @notice This oracle fetches the price of a token that is correlated to another token.\\n */\\nabstract contract CorrelatedTokenOracle is OracleInterface, ICappedOracle {\\n /// @notice Address of the correlated token\\n address public immutable CORRELATED_TOKEN;\\n\\n /// @notice Address of the underlying token\\n address public immutable UNDERLYING_TOKEN;\\n\\n /// @notice Address of Resilient Oracle\\n ResilientOracleInterface public immutable RESILIENT_ORACLE;\\n\\n /// @notice Address of the AccessControlManager contract\\n IAccessControlManagerV8 public immutable ACCESS_CONTROL_MANAGER;\\n\\n //// @notice Growth rate percentage in seconds. Ex: 1e18 is 100%\\n uint256 public growthRatePerSecond;\\n\\n /// @notice Snapshot update interval\\n uint256 public snapshotInterval;\\n\\n /// @notice Last stored snapshot maximum exchange rate\\n uint256 public snapshotMaxExchangeRate;\\n\\n /// @notice Last stored snapshot timestamp\\n uint256 public snapshotTimestamp;\\n\\n /// @notice Gap to add when updating the snapshot\\n uint256 public snapshotGap;\\n\\n /// @notice Emitted when the snapshot is updated\\n event SnapshotUpdated(uint256 indexed maxExchangeRate, uint256 indexed timestamp);\\n\\n /// @notice Emitted when the growth rate is updated\\n event GrowthRateUpdated(\\n uint256 indexed oldGrowthRatePerSecond,\\n uint256 indexed newGrowthRatePerSecond,\\n uint256 indexed oldSnapshotInterval,\\n uint256 newSnapshotInterval\\n );\\n\\n /// @notice Emitted when the snapshot gap is updated\\n event SnapshotGapUpdated(uint256 indexed oldSnapshotGap, uint256 indexed newSnapshotGap);\\n\\n /// @notice Thrown if the token address is invalid\\n error InvalidTokenAddress();\\n\\n /// @notice Thrown if the growth rate is invalid\\n error InvalidGrowthRate();\\n\\n /// @notice Thrown if the initial snapshot is invalid\\n error InvalidInitialSnapshot();\\n\\n /// @notice Thrown if the max snapshot exchange rate is invalid\\n error InvalidSnapshotMaxExchangeRate();\\n\\n /// @notice @notice Thrown when the action is prohibited by AccessControlManager\\n error Unauthorized(address sender, address calledContract, string methodSignature);\\n\\n /**\\n * @notice Constructor for the implementation contract.\\n * @custom:error InvalidGrowthRate error is thrown if the growth rate is invalid\\n * @custom:error InvalidInitialSnapshot error is thrown if the initial snapshot values are invalid\\n */\\n constructor(\\n address _correlatedToken,\\n address _underlyingToken,\\n address _resilientOracle,\\n uint256 _annualGrowthRate,\\n uint256 _snapshotInterval,\\n uint256 _initialSnapshotMaxExchangeRate,\\n uint256 _initialSnapshotTimestamp,\\n address _accessControlManager,\\n uint256 _snapshotGap\\n ) {\\n growthRatePerSecond = _annualGrowthRate / SECONDS_PER_YEAR;\\n\\n if ((growthRatePerSecond == 0 && _snapshotInterval > 0) || (growthRatePerSecond > 0 && _snapshotInterval == 0))\\n revert InvalidGrowthRate();\\n\\n if ((_initialSnapshotMaxExchangeRate == 0 || _initialSnapshotTimestamp == 0) && _snapshotInterval > 0) {\\n revert InvalidInitialSnapshot();\\n }\\n\\n ensureNonzeroAddress(_correlatedToken);\\n ensureNonzeroAddress(_underlyingToken);\\n ensureNonzeroAddress(_resilientOracle);\\n ensureNonzeroAddress(_accessControlManager);\\n\\n CORRELATED_TOKEN = _correlatedToken;\\n UNDERLYING_TOKEN = _underlyingToken;\\n RESILIENT_ORACLE = ResilientOracleInterface(_resilientOracle);\\n snapshotInterval = _snapshotInterval;\\n\\n snapshotMaxExchangeRate = _initialSnapshotMaxExchangeRate;\\n snapshotTimestamp = _initialSnapshotTimestamp;\\n snapshotGap = _snapshotGap;\\n\\n ACCESS_CONTROL_MANAGER = IAccessControlManagerV8(_accessControlManager);\\n }\\n\\n /**\\n * @notice Directly sets the snapshot exchange rate and timestamp\\n * @param _snapshotMaxExchangeRate The exchange rate to set\\n * @param _snapshotTimestamp The timestamp to set\\n * @custom:event Emits SnapshotUpdated event on successful update of the snapshot\\n */\\n function setSnapshot(uint256 _snapshotMaxExchangeRate, uint256 _snapshotTimestamp) external {\\n _checkAccessAllowed(\\\"setSnapshot(uint256,uint256)\\\");\\n\\n snapshotMaxExchangeRate = _snapshotMaxExchangeRate;\\n snapshotTimestamp = _snapshotTimestamp;\\n\\n emit SnapshotUpdated(snapshotMaxExchangeRate, snapshotTimestamp);\\n }\\n\\n /**\\n * @notice Sets the growth rate and snapshot interval\\n * @param _annualGrowthRate The annual growth rate to set\\n * @param _snapshotInterval The snapshot interval to set\\n * @custom:error InvalidGrowthRate error is thrown if the growth rate is invalid\\n * @custom:event Emits GrowthRateUpdated event on successful update of the growth rate\\n */\\n function setGrowthRate(uint256 _annualGrowthRate, uint256 _snapshotInterval) external {\\n _checkAccessAllowed(\\\"setGrowthRate(uint256,uint256)\\\");\\n uint256 oldGrowthRatePerSecond = growthRatePerSecond;\\n\\n growthRatePerSecond = _annualGrowthRate / SECONDS_PER_YEAR;\\n\\n if ((growthRatePerSecond == 0 && _snapshotInterval > 0) || (growthRatePerSecond > 0 && _snapshotInterval == 0))\\n revert InvalidGrowthRate();\\n\\n emit GrowthRateUpdated(oldGrowthRatePerSecond, growthRatePerSecond, snapshotInterval, _snapshotInterval);\\n\\n snapshotInterval = _snapshotInterval;\\n }\\n\\n /**\\n * @notice Sets the snapshot gap\\n * @param _snapshotGap The snapshot gap to set\\n * @custom:event Emits SnapshotGapUpdated event on successful update of the snapshot gap\\n */\\n function setSnapshotGap(uint256 _snapshotGap) external {\\n _checkAccessAllowed(\\\"setSnapshotGap(uint256)\\\");\\n\\n emit SnapshotGapUpdated(snapshotGap, _snapshotGap);\\n\\n snapshotGap = _snapshotGap;\\n }\\n\\n /**\\n * @notice Returns if the price is capped\\n * @return isCapped Boolean indicating if the price is capped\\n */\\n function isCapped() external view virtual returns (bool) {\\n if (snapshotInterval == 0) {\\n return false;\\n }\\n\\n uint256 maxAllowedExchangeRate = getMaxAllowedExchangeRate();\\n if (maxAllowedExchangeRate == 0) {\\n return false;\\n }\\n\\n uint256 exchangeRate = getUnderlyingAmount();\\n\\n return exchangeRate > maxAllowedExchangeRate;\\n }\\n\\n /**\\n * @notice Updates the snapshot price and timestamp\\n * @custom:event Emits SnapshotUpdated event on successful update of the snapshot\\n * @custom:error InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero\\n */\\n function updateSnapshot() public override {\\n if (block.timestamp - snapshotTimestamp < snapshotInterval || snapshotInterval == 0) return;\\n\\n uint256 exchangeRate = getUnderlyingAmount();\\n uint256 maxAllowedExchangeRate = getMaxAllowedExchangeRate();\\n\\n snapshotMaxExchangeRate =\\n (exchangeRate > maxAllowedExchangeRate ? maxAllowedExchangeRate : exchangeRate) +\\n snapshotGap;\\n snapshotTimestamp = block.timestamp;\\n\\n if (snapshotMaxExchangeRate == 0) revert InvalidSnapshotMaxExchangeRate();\\n\\n RESILIENT_ORACLE.updateAssetPrice(UNDERLYING_TOKEN);\\n emit SnapshotUpdated(snapshotMaxExchangeRate, snapshotTimestamp);\\n }\\n\\n /**\\n * @notice Fetches the price of the token\\n * @param asset Address of the token\\n * @return price The price of the token in scaled decimal places. It can be capped\\n * to a maximum value taking into account the growth rate\\n * @custom:error InvalidTokenAddress error is thrown if the token address is invalid\\n */\\n function getPrice(address asset) public view override returns (uint256) {\\n if (asset != CORRELATED_TOKEN) revert InvalidTokenAddress();\\n\\n uint256 exchangeRate = getUnderlyingAmount();\\n\\n if (snapshotInterval == 0) {\\n return _calculatePrice(exchangeRate);\\n }\\n\\n uint256 maxAllowedExchangeRate = getMaxAllowedExchangeRate();\\n\\n uint256 finalExchangeRate = (exchangeRate > maxAllowedExchangeRate && maxAllowedExchangeRate != 0)\\n ? maxAllowedExchangeRate\\n : exchangeRate;\\n\\n return _calculatePrice(finalExchangeRate);\\n }\\n\\n /**\\n * @notice Gets the maximum allowed exchange rate for token\\n * @return maxExchangeRate Maximum allowed exchange rate\\n */\\n function getMaxAllowedExchangeRate() public view returns (uint256) {\\n uint256 timeElapsed = block.timestamp - snapshotTimestamp;\\n uint256 maxExchangeRate = snapshotMaxExchangeRate +\\n (snapshotMaxExchangeRate * growthRatePerSecond * timeElapsed) /\\n 1e18;\\n return maxExchangeRate;\\n }\\n\\n /**\\n * @notice Gets the underlying amount for correlated token\\n * @return underlyingAmount Amount of underlying token\\n */\\n function getUnderlyingAmount() public view virtual returns (uint256);\\n\\n /**\\n * @notice Fetches price of the token based on an underlying exchange rate\\n * @param exchangeRate The underlying exchange rate to use\\n * @return price The price of the token in scaled decimal places\\n */\\n function _calculatePrice(uint256 exchangeRate) internal view returns (uint256) {\\n uint256 underlyingUSDPrice = RESILIENT_ORACLE.getPrice(UNDERLYING_TOKEN);\\n\\n IERC20Metadata token = IERC20Metadata(CORRELATED_TOKEN);\\n uint256 decimals = token.decimals();\\n\\n return (exchangeRate * underlyingUSDPrice) / (10 ** decimals);\\n }\\n\\n /**\\n * @notice Reverts if the call is not allowed by AccessControlManager\\n * @param signature Method signature\\n * @custom:error Unauthorized error is thrown if the call is not allowed\\n */\\n function _checkAccessAllowed(string memory signature) internal view {\\n bool isAllowedToCall = ACCESS_CONTROL_MANAGER.isAllowedToCall(msg.sender, signature);\\n\\n if (!isAllowedToCall) {\\n revert Unauthorized(msg.sender, address(this), signature);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x808b444fa4d1d440dc43de290f1eb59a64646ce9085028b286fa30346305872e\",\"license\":\"BSD-3-Clause\"}},\"version\":1}", + "bytecode": "0x6101a0604052348015610010575f80fd5b5060405161155938038061155983398101604081905261002f916103a6565b6060810151608082015160a083015160e084015161010085015161012086015161014087015161016088015161018089015161006f6301e1338087610481565b5f81905515801561007f57505f85115b8061009357505f8054118015610093575084155b156100b1576040516353b7e64560e11b815260040160405180910390fd5b8315806100bc575082155b80156100c757505f85115b156100e55760405163b8a5589b60e01b815260040160405180910390fd5b6100ee896102eb565b6100f7886102eb565b610100876102eb565b610109826102eb565b6001600160a01b0398891660805296881660a05294871660c052600192909255600255600355506004919091551660e0528051610145906102eb565b6020810151610153906102eb565b60c08101516101679063ffffffff16610315565b80516001600160a01b03908116610140526020820151166101005260408101516001811115610198576101986104a0565b6101208160018111156101ad576101ad6104a0565b815250508060c0015163ffffffff166101608163ffffffff168152505060a0516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610208573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061022c91906104b4565b60ff166101805261010051610140516101605160405162439f4b60e91b81526001600160a01b03928316600482015263ffffffff90911660248201525f928392169063873e960090604401606060405180830381865afa158015610292573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102b691906104ea565b925050915081806102c5575080155b156102e357604051637616640160e01b815260040160405180910390fd5b505050610532565b6001600160a01b038116610312576040516342bcdf7f60e11b815260040160405180910390fd5b50565b805f036103125760405163273e150360e21b815260040160405180910390fd5b6040516101a081016001600160401b038111828210171561036457634e487b7160e01b5f52604160045260245ffd5b60405290565b80516001600160a01b0381168114610380575f80fd5b919050565b805160028110610380575f80fd5b805163ffffffff81168114610380575f80fd5b5f6101a082840312156103b7575f80fd5b6103bf610335565b6103c88361036a565b81526103d66020840161036a565b60208201526103e760408401610385565b60408201526103f86060840161036a565b60608201526104096080840161036a565b608082015261041a60a0840161036a565b60a082015261042b60c08401610393565b60c082015260e0838101519082015261010080840151908201526101208084015190820152610140808401519082015261016061046981850161036a565b90820152610180928301519281019290925250919050565b5f8261049b57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52602160045260245ffd5b5f602082840312156104c4575f80fd5b815160ff811681146104d4575f80fd5b9392505050565b80518015158114610380575f80fd5b5f805f606084860312156104fc575f80fd5b610505846104db565b9250602084015161ffff8116811461051b575f80fd5b9150610529604085016104db565b90509250925092565b60805160a05160c05160e0516101005161012051610140516101605161018051610f596106005f395f81816101d9015261099d01525f81816103070152818161081b01526108f601525f818161038b015281816107f301526108ce01525f818161014601526107a701525f81816102e001528181610847015261092201525f818161022e0152610b9a01525f818161034c0152818161069c0152610a6d01525f818161019a015281816106740152610a4101525f81816102a6015281816103b00152610adb0152610f595ff3fe608060405234801561000f575f80fd5b506004361061013d575f3560e01c806369240426116100b45780639c43eb54116100795780639c43eb541461033e578063a4edcd4c14610347578063abb856131461036e578063ac5a693e14610376578063bdf13af21461037e578063f46f16c214610386575f80fd5b8063692404261461029957806369818a35146102a15780637fc4e4a0146102c8578063809d7b31146102db578063879ac8f814610302575f80fd5b806341976e091161010557806341976e091461021657806345be2dc7146102295780635213f9c814610250578063596efe6f14610265578063643d813d1461026e578063671528d414610281575f80fd5b806302125d091461014157806307d0413c1461017e57806329db1be6146101955780633dae7c22146101d45780634169d2451461020d575b5f80fd5b6101687f000000000000000000000000000000000000000000000000000000000000000081565b6040516101759190610c57565b60405180910390f35b61018760015481565b604051908152602001610175565b6101bc7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610175565b6101fb7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610175565b61018760045481565b610187610224366004610c7d565b6103ad565b6101bc7f000000000000000000000000000000000000000000000000000000000000000081565b61026361025e366004610ca3565b61045e565b005b61018760025481565b61026361027c366004610cba565b6104cf565b6102896105a5565b6040519015158152602001610175565b6102636105e0565b6101bc7f000000000000000000000000000000000000000000000000000000000000000081565b6102636102d6366004610cba565b610729565b6101bc7f000000000000000000000000000000000000000000000000000000000000000081565b6103297f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610175565b61018760035481565b6101bc7f000000000000000000000000000000000000000000000000000000000000000081565b6101876107a1565b6101875f5481565b6101876109dd565b6101bc7f000000000000000000000000000000000000000000000000000000000000000081565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161461040057604051630f58058360e11b815260040160405180910390fd5b5f6104096107a1565b90506001545f036104245761041d81610a2a565b9392505050565b5f61042d6109dd565b90505f818311801561043e57508115155b610448578261044a565b815b905061045581610a2a565b95945050505050565b61049c6040518060400160405280601781526020017f736574536e617073686f744761702875696e7432353629000000000000000000815250610b81565b6004546040518291907feb3716d3f8388c182853c1dc98b18931f3a600bbab31f2ff48631f6412e4997f905f90a3600455565b61050d6040518060400160405280601e81526020017f73657447726f777468526174652875696e743235362c75696e74323536290000815250610b81565b5f5461051d6301e1338084610cee565b5f81905515801561052d57505f82115b8061054157505f8054118015610541575081155b1561055f576040516353b7e64560e11b815260040160405180910390fd5b6001545f54827fa65cbeb0e28a8803a912daac67c472c160aa01e2c988755fa424f290321de6088560405161059691815260200190565b60405180910390a45060015550565b5f6001545f036105b457505f90565b5f6105bd6109dd565b9050805f036105cd575f91505090565b5f6105d66107a1565b9190911192915050565b6001546003546105f09042610d0d565b10806105fc5750600154155b1561060357565b5f61060c6107a1565b90505f6106176109dd565b9050600454818311610629578261062b565b815b6106359190610d26565b6002819055426003555f0361065d57604051635f18388760e01b815260040160405180910390fd5b60405163b62cad6960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063b62cad69906024015f604051808303815f87803b1580156106dd575f80fd5b505af11580156106ef573d5f803e3d5ffd5b505050506003546002547f2c8c8fcb8c77a0ca21dcc3ab8fc0ade761557e76b1240cb40ebbef9fcee00f7d60405160405180910390a35050565b6107676040518060400160405280601c81526020017f736574536e617073686f742875696e743235362c75696e743235362900000000815250610b81565b60028290556003819055604051819083907f2c8c8fcb8c77a0ca21dcc3ab8fc0ade761557e76b1240cb40ebbef9fcee00f7d905f90a35050565b5f8060017f000000000000000000000000000000000000000000000000000000000000000060018111156107d7576107d7610c43565b036108b75760405163a31426d160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f000000000000000000000000000000000000000000000000000000000000000063ffffffff1660248301527f0000000000000000000000000000000000000000000000000000000000000000169063a31426d190604401602060405180830381865afa15801561088c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108b09190610d39565b905061098e565b60405163abca0eab60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f000000000000000000000000000000000000000000000000000000000000000063ffffffff1660248301527f0000000000000000000000000000000000000000000000000000000000000000169063abca0eab90604401602060405180830381865afa158015610967573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061098b9190610d39565b90505b670de0b6b3a7640000816109c37f0000000000000000000000000000000000000000000000000000000000000000600a610e30565b6109cd9190610e3e565b6109d79190610cee565b91505090565b5f80600354426109ed9190610d0d565b90505f670de0b6b3a7640000825f54600254610a099190610e3e565b610a139190610e3e565b610a1d9190610cee565b60025461041d9190610d26565b6040516341976e0960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f9182917f000000000000000000000000000000000000000000000000000000000000000016906341976e0990602401602060405180830381865afa158015610ab2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ad69190610d39565b90505f7f000000000000000000000000000000000000000000000000000000000000000090505f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b39573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b5d9190610e55565b60ff169050610b6d81600a610e75565b610b778487610e3e565b6104559190610cee565b6040516318c5e8ab60e01b81525f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906318c5e8ab90610bd19033908690600401610eae565b602060405180830381865afa158015610bec573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c109190610ed9565b905080610c3f57333083604051634a3fa29360e01b8152600401610c3693929190610ef8565b60405180910390fd5b5050565b634e487b7160e01b5f52602160045260245ffd5b6020810160028310610c7757634e487b7160e01b5f52602160045260245ffd5b91905290565b5f60208284031215610c8d575f80fd5b81356001600160a01b038116811461041d575f80fd5b5f60208284031215610cb3575f80fd5b5035919050565b5f8060408385031215610ccb575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b5f82610d0857634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115610d2057610d20610cda565b92915050565b80820180821115610d2057610d20610cda565b5f60208284031215610d49575f80fd5b5051919050565b600181815b80851115610d8a57815f1904821115610d7057610d70610cda565b80851615610d7d57918102915b93841c9390800290610d55565b509250929050565b5f82610da057506001610d20565b81610dac57505f610d20565b8160018114610dc25760028114610dcc57610de8565b6001915050610d20565b60ff841115610ddd57610ddd610cda565b50506001821b610d20565b5060208310610133831016604e8410600b8410161715610e0b575081810a610d20565b610e158383610d50565b805f1904821115610e2857610e28610cda565b029392505050565b5f61041d60ff841683610d92565b8082028115828204841417610d2057610d20610cda565b5f60208284031215610e65575f80fd5b815160ff8116811461041d575f80fd5b5f61041d8383610d92565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6001600160a01b03831681526040602082018190525f90610ed190830184610e80565b949350505050565b5f60208284031215610ee9575f80fd5b8151801515811461041d575f80fd5b6001600160a01b038481168252831660208201526060604082018190525f9061045590830184610e8056fea2646970667358221220dd4434cf5ec982b81a2a3a25f96ea3d5d76d95704500f208da19253bd6abc73b64736f6c63430008190033", + "deployedBytecode": "0x608060405234801561000f575f80fd5b506004361061013d575f3560e01c806369240426116100b45780639c43eb54116100795780639c43eb541461033e578063a4edcd4c14610347578063abb856131461036e578063ac5a693e14610376578063bdf13af21461037e578063f46f16c214610386575f80fd5b8063692404261461029957806369818a35146102a15780637fc4e4a0146102c8578063809d7b31146102db578063879ac8f814610302575f80fd5b806341976e091161010557806341976e091461021657806345be2dc7146102295780635213f9c814610250578063596efe6f14610265578063643d813d1461026e578063671528d414610281575f80fd5b806302125d091461014157806307d0413c1461017e57806329db1be6146101955780633dae7c22146101d45780634169d2451461020d575b5f80fd5b6101687f000000000000000000000000000000000000000000000000000000000000000081565b6040516101759190610c57565b60405180910390f35b61018760015481565b604051908152602001610175565b6101bc7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610175565b6101fb7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610175565b61018760045481565b610187610224366004610c7d565b6103ad565b6101bc7f000000000000000000000000000000000000000000000000000000000000000081565b61026361025e366004610ca3565b61045e565b005b61018760025481565b61026361027c366004610cba565b6104cf565b6102896105a5565b6040519015158152602001610175565b6102636105e0565b6101bc7f000000000000000000000000000000000000000000000000000000000000000081565b6102636102d6366004610cba565b610729565b6101bc7f000000000000000000000000000000000000000000000000000000000000000081565b6103297f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610175565b61018760035481565b6101bc7f000000000000000000000000000000000000000000000000000000000000000081565b6101876107a1565b6101875f5481565b6101876109dd565b6101bc7f000000000000000000000000000000000000000000000000000000000000000081565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161461040057604051630f58058360e11b815260040160405180910390fd5b5f6104096107a1565b90506001545f036104245761041d81610a2a565b9392505050565b5f61042d6109dd565b90505f818311801561043e57508115155b610448578261044a565b815b905061045581610a2a565b95945050505050565b61049c6040518060400160405280601781526020017f736574536e617073686f744761702875696e7432353629000000000000000000815250610b81565b6004546040518291907feb3716d3f8388c182853c1dc98b18931f3a600bbab31f2ff48631f6412e4997f905f90a3600455565b61050d6040518060400160405280601e81526020017f73657447726f777468526174652875696e743235362c75696e74323536290000815250610b81565b5f5461051d6301e1338084610cee565b5f81905515801561052d57505f82115b8061054157505f8054118015610541575081155b1561055f576040516353b7e64560e11b815260040160405180910390fd5b6001545f54827fa65cbeb0e28a8803a912daac67c472c160aa01e2c988755fa424f290321de6088560405161059691815260200190565b60405180910390a45060015550565b5f6001545f036105b457505f90565b5f6105bd6109dd565b9050805f036105cd575f91505090565b5f6105d66107a1565b9190911192915050565b6001546003546105f09042610d0d565b10806105fc5750600154155b1561060357565b5f61060c6107a1565b90505f6106176109dd565b9050600454818311610629578261062b565b815b6106359190610d26565b6002819055426003555f0361065d57604051635f18388760e01b815260040160405180910390fd5b60405163b62cad6960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063b62cad69906024015f604051808303815f87803b1580156106dd575f80fd5b505af11580156106ef573d5f803e3d5ffd5b505050506003546002547f2c8c8fcb8c77a0ca21dcc3ab8fc0ade761557e76b1240cb40ebbef9fcee00f7d60405160405180910390a35050565b6107676040518060400160405280601c81526020017f736574536e617073686f742875696e743235362c75696e743235362900000000815250610b81565b60028290556003819055604051819083907f2c8c8fcb8c77a0ca21dcc3ab8fc0ade761557e76b1240cb40ebbef9fcee00f7d905f90a35050565b5f8060017f000000000000000000000000000000000000000000000000000000000000000060018111156107d7576107d7610c43565b036108b75760405163a31426d160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f000000000000000000000000000000000000000000000000000000000000000063ffffffff1660248301527f0000000000000000000000000000000000000000000000000000000000000000169063a31426d190604401602060405180830381865afa15801561088c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108b09190610d39565b905061098e565b60405163abca0eab60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f000000000000000000000000000000000000000000000000000000000000000063ffffffff1660248301527f0000000000000000000000000000000000000000000000000000000000000000169063abca0eab90604401602060405180830381865afa158015610967573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061098b9190610d39565b90505b670de0b6b3a7640000816109c37f0000000000000000000000000000000000000000000000000000000000000000600a610e30565b6109cd9190610e3e565b6109d79190610cee565b91505090565b5f80600354426109ed9190610d0d565b90505f670de0b6b3a7640000825f54600254610a099190610e3e565b610a139190610e3e565b610a1d9190610cee565b60025461041d9190610d26565b6040516341976e0960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f9182917f000000000000000000000000000000000000000000000000000000000000000016906341976e0990602401602060405180830381865afa158015610ab2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ad69190610d39565b90505f7f000000000000000000000000000000000000000000000000000000000000000090505f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b39573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b5d9190610e55565b60ff169050610b6d81600a610e75565b610b778487610e3e565b6104559190610cee565b6040516318c5e8ab60e01b81525f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906318c5e8ab90610bd19033908690600401610eae565b602060405180830381865afa158015610bec573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c109190610ed9565b905080610c3f57333083604051634a3fa29360e01b8152600401610c3693929190610ef8565b60405180910390fd5b5050565b634e487b7160e01b5f52602160045260245ffd5b6020810160028310610c7757634e487b7160e01b5f52602160045260245ffd5b91905290565b5f60208284031215610c8d575f80fd5b81356001600160a01b038116811461041d575f80fd5b5f60208284031215610cb3575f80fd5b5035919050565b5f8060408385031215610ccb575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b5f82610d0857634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115610d2057610d20610cda565b92915050565b80820180821115610d2057610d20610cda565b5f60208284031215610d49575f80fd5b5051919050565b600181815b80851115610d8a57815f1904821115610d7057610d70610cda565b80851615610d7d57918102915b93841c9390800290610d55565b509250929050565b5f82610da057506001610d20565b81610dac57505f610d20565b8160018114610dc25760028114610dcc57610de8565b6001915050610d20565b60ff841115610ddd57610ddd610cda565b50506001821b610d20565b5060208310610133831016604e8410600b8410161715610e0b575081810a610d20565b610e158383610d50565b805f1904821115610e2857610e28610cda565b029392505050565b5f61041d60ff841683610d92565b8082028115828204841417610d2057610d20610cda565b5f60208284031215610e65575f80fd5b815160ff8116811461041d575f80fd5b5f61041d8383610d92565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6001600160a01b03831681526040602082018190525f90610ed190830184610e80565b949350505050565b5f60208284031215610ee9575f80fd5b8151801515811461041d575f80fd5b6001600160a01b038481168252831660208201526060604082018190525f9061045590830184610e8056fea2646970667358221220dd4434cf5ec982b81a2a3a25f96ea3d5d76d95704500f208da19253bd6abc73b64736f6c63430008190033", + "devdoc": { + "author": "Venus", + "details": "As a base price the oracle uses either the price of the Pendle market's asset (in this case PT_TO_ASSET rate should be used) or the price of the Pendle market's interest bearing token (e.g. wstETH for stETH; in this case PT_TO_SY rate should be used). Technically, interest bearing token is different from standardized yield (SY) token, but since SY is a wrapper around an interest bearing token, we can safely assume the prices of the two are equal. This is not always true for asset price though: using PT_TO_ASSET rate assumes that the yield token can be seamlessly redeemed for the underlying asset. In reality, this might not always be the case. For more details, see https://docs.pendle.finance/Developers/Contracts/StandardizedYield", + "kind": "dev", + "methods": { + "constructor": { + "custom:error": "InvalidDuration Thrown if the duration is invalid" + }, + "getMaxAllowedExchangeRate()": { + "returns": { + "_0": "maxExchangeRate Maximum allowed exchange rate" + } + }, + "getPrice(address)": { + "custom:error": "InvalidTokenAddress error is thrown if the token address is invalid", + "params": { + "asset": "Address of the token" + }, + "returns": { + "_0": "price The price of the token in scaled decimal places. It can be capped to a maximum value taking into account the growth rate" + } + }, + "getUnderlyingAmount()": { + "returns": { + "_0": "amount The amount of underlying token (either the market's asset or the yield token) for 1 PT, adjusted for decimals such that the result has the same precision as the underlying token" + } + }, + "isCapped()": { + "returns": { + "_0": "isCapped Boolean indicating if the price is capped" + } + }, + "setGrowthRate(uint256,uint256)": { + "custom:error": "InvalidGrowthRate error is thrown if the growth rate is invalid", + "custom:event": "Emits GrowthRateUpdated event on successful update of the growth rate", + "params": { + "_annualGrowthRate": "The annual growth rate to set", + "_snapshotInterval": "The snapshot interval to set" + } + }, + "setSnapshot(uint256,uint256)": { + "custom:event": "Emits SnapshotUpdated event on successful update of the snapshot", + "params": { + "_snapshotMaxExchangeRate": "The exchange rate to set", + "_snapshotTimestamp": "The timestamp to set" + } + }, + "setSnapshotGap(uint256)": { + "custom:event": "Emits SnapshotGapUpdated event on successful update of the snapshot gap", + "params": { + "_snapshotGap": "The snapshot gap to set" + } + }, + "updateSnapshot()": { + "custom:error": "InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero", + "custom:event": "Emits SnapshotUpdated event on successful update of the snapshot" + } + }, + "stateVariables": { + "UNDERLYING_DECIMALS": { + "details": "We make an assumption that the underlying decimals will not change throughout the lifetime of the Pendle market" + } + }, + "title": "PendleOracle", + "version": 1 + }, + "userdoc": { + "errors": { + "InvalidDuration()": [ + { + "notice": "Thrown if the duration is invalid" + } + ], + "InvalidGrowthRate()": [ + { + "notice": "Thrown if the growth rate is invalid" + } + ], + "InvalidInitialSnapshot()": [ + { + "notice": "Thrown if the initial snapshot is invalid" + } + ], + "InvalidSnapshotMaxExchangeRate()": [ + { + "notice": "Thrown if the max snapshot exchange rate is invalid" + } + ], + "InvalidTokenAddress()": [ + { + "notice": "Thrown if the token address is invalid" + } + ], + "Unauthorized(address,address,string)": [ + { + "notice": "@notice Thrown when the action is prohibited by AccessControlManager" + } + ], + "ZeroAddressNotAllowed()": [ + { + "notice": "Thrown if the supplied address is a zero address where it is not allowed" + } + ], + "ZeroValueNotAllowed()": [ + { + "notice": "Thrown if the supplied value is 0 where it is not allowed" + } + ] + }, + "events": { + "GrowthRateUpdated(uint256,uint256,uint256,uint256)": { + "notice": "Emitted when the growth rate is updated" + }, + "SnapshotGapUpdated(uint256,uint256)": { + "notice": "Emitted when the snapshot gap is updated" + }, + "SnapshotUpdated(uint256,uint256)": { + "notice": "Emitted when the snapshot is updated" + } + }, + "kind": "user", + "methods": { + "ACCESS_CONTROL_MANAGER()": { + "notice": "Address of the AccessControlManager contract" + }, + "CORRELATED_TOKEN()": { + "notice": "Address of the correlated token" + }, + "MARKET()": { + "notice": "Address of the market" + }, + "PT_ORACLE()": { + "notice": "Address of the PT oracle" + }, + "RATE_KIND()": { + "notice": "Whether to use PT/SY (standardized yield token) rate or PT/market asset rate" + }, + "RESILIENT_ORACLE()": { + "notice": "Address of Resilient Oracle" + }, + "TWAP_DURATION()": { + "notice": "Twap duration for the oracle" + }, + "UNDERLYING_DECIMALS()": { + "notice": "Decimals of the underlying token" + }, + "UNDERLYING_TOKEN()": { + "notice": "Address of the underlying token" + }, + "constructor": { + "notice": "Constructor for the implementation contract." + }, + "getMaxAllowedExchangeRate()": { + "notice": "Gets the maximum allowed exchange rate for token" + }, + "getPrice(address)": { + "notice": "Fetches the price of the token" + }, + "getUnderlyingAmount()": { + "notice": "Fetches the amount of underlying token for 1 PT" + }, + "isCapped()": { + "notice": "Returns if the price is capped" + }, + "setGrowthRate(uint256,uint256)": { + "notice": "Sets the growth rate and snapshot interval" + }, + "setSnapshot(uint256,uint256)": { + "notice": "Directly sets the snapshot exchange rate and timestamp" + }, + "setSnapshotGap(uint256)": { + "notice": "Sets the snapshot gap" + }, + "snapshotGap()": { + "notice": "Gap to add when updating the snapshot" + }, + "snapshotInterval()": { + "notice": "Snapshot update interval" + }, + "snapshotMaxExchangeRate()": { + "notice": "Last stored snapshot maximum exchange rate" + }, + "snapshotTimestamp()": { + "notice": "Last stored snapshot timestamp" + }, + "updateSnapshot()": { + "notice": "Updates the snapshot price and timestamp" + } + }, + "notice": "This oracle fetches the price of a pendle token", + "version": 1 + }, + "storageLayout": { + "storage": [ + { + "astId": 6602, + "contract": "contracts/oracles/PendleOracle.sol:PendleOracle", + "label": "growthRatePerSecond", + "offset": 0, + "slot": "0", + "type": "t_uint256" + }, + { + "astId": 6605, + "contract": "contracts/oracles/PendleOracle.sol:PendleOracle", + "label": "snapshotInterval", + "offset": 0, + "slot": "1", + "type": "t_uint256" + }, + { + "astId": 6608, + "contract": "contracts/oracles/PendleOracle.sol:PendleOracle", + "label": "snapshotMaxExchangeRate", + "offset": 0, + "slot": "2", + "type": "t_uint256" + }, + { + "astId": 6611, + "contract": "contracts/oracles/PendleOracle.sol:PendleOracle", + "label": "snapshotTimestamp", + "offset": 0, + "slot": "3", + "type": "t_uint256" + }, + { + "astId": 6614, + "contract": "contracts/oracles/PendleOracle.sol:PendleOracle", + "label": "snapshotGap", + "offset": 0, + "slot": "4", + "type": "t_uint256" + } + ], + "types": { + "t_uint256": { + "encoding": "inplace", + "label": "uint256", + "numberOfBytes": "32" + } + } + } +} diff --git a/deployments/bscmainnet/solcInputs/eb7ae6b5763315e358adb74172778b7c.json b/deployments/bscmainnet/solcInputs/eb7ae6b5763315e358adb74172778b7c.json new file mode 100644 index 00000000..dbabbfef --- /dev/null +++ b/deployments/bscmainnet/solcInputs/eb7ae6b5763315e358adb74172778b7c.json @@ -0,0 +1,337 @@ +{ + "language": "Solidity", + "sources": { + "@chainlink/contracts/src/v0.8/interfaces/AggregatorInterface.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\ninterface AggregatorInterface {\n function latestAnswer() external view returns (int256);\n\n function latestTimestamp() external view returns (uint256);\n\n function latestRound() external view returns (uint256);\n\n function getAnswer(uint256 roundId) external view returns (int256);\n\n function getTimestamp(uint256 roundId) external view returns (uint256);\n\n event AnswerUpdated(int256 indexed current, uint256 indexed roundId, uint256 updatedAt);\n\n event NewRound(uint256 indexed roundId, address indexed startedBy, uint256 startedAt);\n}\n" + }, + "@chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport \"./AggregatorInterface.sol\";\nimport \"./AggregatorV3Interface.sol\";\n\ninterface AggregatorV2V3Interface is AggregatorInterface, AggregatorV3Interface {}\n" + }, + "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\ninterface AggregatorV3Interface {\n function decimals() external view returns (uint8);\n\n function description() external view returns (string memory);\n\n function version() external view returns (uint256);\n\n function getRoundData(uint80 _roundId)\n external\n view\n returns (\n uint80 roundId,\n int256 answer,\n uint256 startedAt,\n uint256 updatedAt,\n uint80 answeredInRound\n );\n\n function latestRoundData()\n external\n view\n returns (\n uint80 roundId,\n int256 answer,\n uint256 startedAt,\n uint256 updatedAt,\n uint80 answeredInRound\n );\n}\n" + }, + "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable2Step.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./OwnableUpgradeable.sol\";\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Contract module which provides access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership} and {acceptOwnership}.\n *\n * This module is used through inheritance. It will make available all functions\n * from parent (Ownable).\n */\nabstract contract Ownable2StepUpgradeable is Initializable, OwnableUpgradeable {\n address private _pendingOwner;\n\n event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner);\n\n function __Ownable2Step_init() internal onlyInitializing {\n __Ownable_init_unchained();\n }\n\n function __Ownable2Step_init_unchained() internal onlyInitializing {\n }\n /**\n * @dev Returns the address of the pending owner.\n */\n function pendingOwner() public view virtual returns (address) {\n return _pendingOwner;\n }\n\n /**\n * @dev Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one.\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public virtual override onlyOwner {\n _pendingOwner = newOwner;\n emit OwnershipTransferStarted(owner(), newOwner);\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`) and deletes any pending owner.\n * Internal function without access restriction.\n */\n function _transferOwnership(address newOwner) internal virtual override {\n delete _pendingOwner;\n super._transferOwnership(newOwner);\n }\n\n /**\n * @dev The new owner accepts the ownership transfer.\n */\n function acceptOwnership() public virtual {\n address sender = _msgSender();\n require(pendingOwner() == sender, \"Ownable2Step: caller is not the new owner\");\n _transferOwnership(sender);\n }\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[49] private __gap;\n}\n" + }, + "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../utils/ContextUpgradeable.sol\";\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\n address private _owner;\n\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n /**\n * @dev Initializes the contract setting the deployer as the initial owner.\n */\n function __Ownable_init() internal onlyInitializing {\n __Ownable_init_unchained();\n }\n\n function __Ownable_init_unchained() internal onlyInitializing {\n _transferOwnership(_msgSender());\n }\n\n /**\n * @dev Throws if called by any account other than the owner.\n */\n modifier onlyOwner() {\n _checkOwner();\n _;\n }\n\n /**\n * @dev Returns the address of the current owner.\n */\n function owner() public view virtual returns (address) {\n return _owner;\n }\n\n /**\n * @dev Throws if the sender is not the owner.\n */\n function _checkOwner() internal view virtual {\n require(owner() == _msgSender(), \"Ownable: caller is not the owner\");\n }\n\n /**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby disabling any functionality that is only available to the owner.\n */\n function renounceOwnership() public virtual onlyOwner {\n _transferOwnership(address(0));\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public virtual onlyOwner {\n require(newOwner != address(0), \"Ownable: new owner is the zero address\");\n _transferOwnership(newOwner);\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Internal function without access restriction.\n */\n function _transferOwnership(address newOwner) internal virtual {\n address oldOwner = _owner;\n _owner = newOwner;\n emit OwnershipTransferred(oldOwner, newOwner);\n }\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[49] private __gap;\n}\n" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\n\npragma solidity ^0.8.2;\n\nimport \"../../utils/AddressUpgradeable.sol\";\n\n/**\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n *\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n * reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n * case an upgrade adds a module that needs to be initialized.\n *\n * For example:\n *\n * [.hljs-theme-light.nopadding]\n * ```solidity\n * contract MyToken is ERC20Upgradeable {\n * function initialize() initializer public {\n * __ERC20_init(\"MyToken\", \"MTK\");\n * }\n * }\n *\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n * function initializeV2() reinitializer(2) public {\n * __ERC20Permit_init(\"MyToken\");\n * }\n * }\n * ```\n *\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n *\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n *\n * [CAUTION]\n * ====\n * Avoid leaving a contract uninitialized.\n *\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n *\n * [.hljs-theme-light.nopadding]\n * ```\n * /// @custom:oz-upgrades-unsafe-allow constructor\n * constructor() {\n * _disableInitializers();\n * }\n * ```\n * ====\n */\nabstract contract Initializable {\n /**\n * @dev Indicates that the contract has been initialized.\n * @custom:oz-retyped-from bool\n */\n uint8 private _initialized;\n\n /**\n * @dev Indicates that the contract is in the process of being initialized.\n */\n bool private _initializing;\n\n /**\n * @dev Triggered when the contract has been initialized or reinitialized.\n */\n event Initialized(uint8 version);\n\n /**\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n * `onlyInitializing` functions can be used to initialize parent contracts.\n *\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\n * constructor.\n *\n * Emits an {Initialized} event.\n */\n modifier initializer() {\n bool isTopLevelCall = !_initializing;\n require(\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\n \"Initializable: contract is already initialized\"\n );\n _initialized = 1;\n if (isTopLevelCall) {\n _initializing = true;\n }\n _;\n if (isTopLevelCall) {\n _initializing = false;\n emit Initialized(1);\n }\n }\n\n /**\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n * used to initialize parent contracts.\n *\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\n * are added through upgrades and that require initialization.\n *\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n * cannot be nested. If one is invoked in the context of another, execution will revert.\n *\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n * a contract, executing them in the right order is up to the developer or operator.\n *\n * WARNING: setting the version to 255 will prevent any future reinitialization.\n *\n * Emits an {Initialized} event.\n */\n modifier reinitializer(uint8 version) {\n require(!_initializing && _initialized < version, \"Initializable: contract is already initialized\");\n _initialized = version;\n _initializing = true;\n _;\n _initializing = false;\n emit Initialized(version);\n }\n\n /**\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\n */\n modifier onlyInitializing() {\n require(_initializing, \"Initializable: contract is not initializing\");\n _;\n }\n\n /**\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n * through proxies.\n *\n * Emits an {Initialized} event the first time it is successfully executed.\n */\n function _disableInitializers() internal virtual {\n require(!_initializing, \"Initializable: contract is initializing\");\n if (_initialized != type(uint8).max) {\n _initialized = type(uint8).max;\n emit Initialized(type(uint8).max);\n }\n }\n\n /**\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\n */\n function _getInitializedVersion() internal view returns (uint8) {\n return _initialized;\n }\n\n /**\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\n */\n function _isInitializing() internal view returns (bool) {\n return _initializing;\n }\n}\n" + }, + "@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../utils/ContextUpgradeable.sol\";\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Contract module which allows children to implement an emergency stop\n * mechanism that can be triggered by an authorized account.\n *\n * This module is used through inheritance. It will make available the\n * modifiers `whenNotPaused` and `whenPaused`, which can be applied to\n * the functions of your contract. Note that they will not be pausable by\n * simply including this module, only once the modifiers are put in place.\n */\nabstract contract PausableUpgradeable is Initializable, ContextUpgradeable {\n /**\n * @dev Emitted when the pause is triggered by `account`.\n */\n event Paused(address account);\n\n /**\n * @dev Emitted when the pause is lifted by `account`.\n */\n event Unpaused(address account);\n\n bool private _paused;\n\n /**\n * @dev Initializes the contract in unpaused state.\n */\n function __Pausable_init() internal onlyInitializing {\n __Pausable_init_unchained();\n }\n\n function __Pausable_init_unchained() internal onlyInitializing {\n _paused = false;\n }\n\n /**\n * @dev Modifier to make a function callable only when the contract is not paused.\n *\n * Requirements:\n *\n * - The contract must not be paused.\n */\n modifier whenNotPaused() {\n _requireNotPaused();\n _;\n }\n\n /**\n * @dev Modifier to make a function callable only when the contract is paused.\n *\n * Requirements:\n *\n * - The contract must be paused.\n */\n modifier whenPaused() {\n _requirePaused();\n _;\n }\n\n /**\n * @dev Returns true if the contract is paused, and false otherwise.\n */\n function paused() public view virtual returns (bool) {\n return _paused;\n }\n\n /**\n * @dev Throws if the contract is paused.\n */\n function _requireNotPaused() internal view virtual {\n require(!paused(), \"Pausable: paused\");\n }\n\n /**\n * @dev Throws if the contract is not paused.\n */\n function _requirePaused() internal view virtual {\n require(paused(), \"Pausable: not paused\");\n }\n\n /**\n * @dev Triggers stopped state.\n *\n * Requirements:\n *\n * - The contract must not be paused.\n */\n function _pause() internal virtual whenNotPaused {\n _paused = true;\n emit Paused(_msgSender());\n }\n\n /**\n * @dev Returns to normal state.\n *\n * Requirements:\n *\n * - The contract must be paused.\n */\n function _unpause() internal virtual whenPaused {\n _paused = false;\n emit Unpaused(_msgSender());\n }\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[49] private __gap;\n}\n" + }, + "@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\n\npragma solidity ^0.8.1;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary AddressUpgradeable {\n /**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n * ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a contract.\n *\n * Among others, `isContract` will return false for the following\n * types of addresses:\n *\n * - an externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a contract lived, but was destroyed\n *\n * Furthermore, `isContract` will also return true if the target contract within\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n * which only has an effect at the end of a transaction.\n * ====\n *\n * [IMPORTANT]\n * ====\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\n *\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n * constructor.\n * ====\n */\n function isContract(address account) internal view returns (bool) {\n // This method relies on extcodesize/address.code.length, which returns 0\n // for contracts in construction, since the code is only stored at the end\n // of the constructor execution.\n\n return account.code.length > 0;\n }\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n (bool success, ) = recipient.call{value: amount}(\"\");\n require(success, \"Address: unable to send value, recipient may have reverted\");\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason, it is bubbled up by this\n * function (like regular Solidity function calls).\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n *\n * _Available since v3.1._\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, \"Address: low-level call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n * `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n * with `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value,\n string memory errorMessage\n ) internal returns (bytes memory) {\n require(address(this).balance >= value, \"Address: insufficient balance for call\");\n (bool success, bytes memory returndata) = target.call{value: value}(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n return functionStaticCall(target, data, \"Address: low-level static call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n (bool success, bytes memory returndata) = target.staticcall(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n *\n * _Available since v4.8._\n */\n function verifyCallResultFromTarget(\n address target,\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n if (success) {\n if (returndata.length == 0) {\n // only check isContract if the call was successful and the return data is empty\n // otherwise we already know that it was a contract\n require(isContract(target), \"Address: call to non-contract\");\n }\n return returndata;\n } else {\n _revert(returndata, errorMessage);\n }\n }\n\n /**\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n * revert reason or using the provided one.\n *\n * _Available since v4.3._\n */\n function verifyCallResult(\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal pure returns (bytes memory) {\n if (success) {\n return returndata;\n } else {\n _revert(returndata, errorMessage);\n }\n }\n\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n /// @solidity memory-safe-assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(errorMessage);\n }\n }\n}\n" + }, + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\n\npragma solidity ^0.8.0;\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract ContextUpgradeable is Initializable {\n function __Context_init() internal onlyInitializing {\n }\n\n function __Context_init_unchained() internal onlyInitializing {\n }\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n\n function _contextSuffixLength() internal view virtual returns (uint256) {\n return 0;\n }\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[50] private __gap;\n}\n" + }, + "@openzeppelin/contracts/access/IAccessControl.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev External interface of AccessControl declared to support ERC165 detection.\n */\ninterface IAccessControl {\n /**\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n *\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n * {RoleAdminChanged} not being emitted signaling this.\n *\n * _Available since v3.1._\n */\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\n\n /**\n * @dev Emitted when `account` is granted `role`.\n *\n * `sender` is the account that originated the contract call, an admin role\n * bearer except when using {AccessControl-_setupRole}.\n */\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\n\n /**\n * @dev Emitted when `account` is revoked `role`.\n *\n * `sender` is the account that originated the contract call:\n * - if using `revokeRole`, it is the admin role bearer\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\n */\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\n\n /**\n * @dev Returns `true` if `account` has been granted `role`.\n */\n function hasRole(bytes32 role, address account) external view returns (bool);\n\n /**\n * @dev Returns the admin role that controls `role`. See {grantRole} and\n * {revokeRole}.\n *\n * To change a role's admin, use {AccessControl-_setRoleAdmin}.\n */\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\n\n /**\n * @dev Grants `role` to `account`.\n *\n * If `account` had not been already granted `role`, emits a {RoleGranted}\n * event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function grantRole(bytes32 role, address account) external;\n\n /**\n * @dev Revokes `role` from `account`.\n *\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function revokeRole(bytes32 role, address account) external;\n\n /**\n * @dev Revokes `role` from the calling account.\n *\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\n * purpose is to provide a mechanism for accounts to lose their privileges\n * if they are compromised (such as when a trusted device is misplaced).\n *\n * If the calling account had been granted `role`, emits a {RoleRevoked}\n * event.\n *\n * Requirements:\n *\n * - the caller must be `account`.\n */\n function renounceRole(bytes32 role, address account) external;\n}\n" + }, + "@openzeppelin/contracts/access/Ownable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable is Context {\n address private _owner;\n\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n /**\n * @dev Initializes the contract setting the deployer as the initial owner.\n */\n constructor() {\n _transferOwnership(_msgSender());\n }\n\n /**\n * @dev Throws if called by any account other than the owner.\n */\n modifier onlyOwner() {\n _checkOwner();\n _;\n }\n\n /**\n * @dev Returns the address of the current owner.\n */\n function owner() public view virtual returns (address) {\n return _owner;\n }\n\n /**\n * @dev Throws if the sender is not the owner.\n */\n function _checkOwner() internal view virtual {\n require(owner() == _msgSender(), \"Ownable: caller is not the owner\");\n }\n\n /**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby disabling any functionality that is only available to the owner.\n */\n function renounceOwnership() public virtual onlyOwner {\n _transferOwnership(address(0));\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public virtual onlyOwner {\n require(newOwner != address(0), \"Ownable: new owner is the zero address\");\n _transferOwnership(newOwner);\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Internal function without access restriction.\n */\n function _transferOwnership(address newOwner) internal virtual {\n address oldOwner = _owner;\n _owner = newOwner;\n emit OwnershipTransferred(oldOwner, newOwner);\n }\n}\n" + }, + "@openzeppelin/contracts/token/ERC20/ERC20.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC20.sol\";\nimport \"./extensions/IERC20Metadata.sol\";\nimport \"../../utils/Context.sol\";\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n * For a generic mechanism see {ERC20PresetMinterPauser}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * The default value of {decimals} is 18. To change this, you should override\n * this function so it returns a different value.\n *\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\n * instead returning `false` on failure. This behavior is nonetheless\n * conventional and does not conflict with the expectations of ERC20\n * applications.\n *\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n * This allows applications to reconstruct the allowance for all accounts just\n * by listening to said events. Other implementations of the EIP may not emit\n * these events, as it isn't required by the specification.\n *\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n * functions have been added to mitigate the well-known issues around setting\n * allowances. See {IERC20-approve}.\n */\ncontract ERC20 is Context, IERC20, IERC20Metadata {\n mapping(address => uint256) private _balances;\n\n mapping(address => mapping(address => uint256)) private _allowances;\n\n uint256 private _totalSupply;\n\n string private _name;\n string private _symbol;\n\n /**\n * @dev Sets the values for {name} and {symbol}.\n *\n * All two of these values are immutable: they can only be set once during\n * construction.\n */\n constructor(string memory name_, string memory symbol_) {\n _name = name_;\n _symbol = symbol_;\n }\n\n /**\n * @dev Returns the name of the token.\n */\n function name() public view virtual override returns (string memory) {\n return _name;\n }\n\n /**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */\n function symbol() public view virtual override returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev Returns the number of decimals used to get its user representation.\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\n * be displayed to a user as `5.05` (`505 / 10 ** 2`).\n *\n * Tokens usually opt for a value of 18, imitating the relationship between\n * Ether and Wei. This is the default value returned by this function, unless\n * it's overridden.\n *\n * NOTE: This information is only used for _display_ purposes: it in\n * no way affects any of the arithmetic of the contract, including\n * {IERC20-balanceOf} and {IERC20-transfer}.\n */\n function decimals() public view virtual override returns (uint8) {\n return 18;\n }\n\n /**\n * @dev See {IERC20-totalSupply}.\n */\n function totalSupply() public view virtual override returns (uint256) {\n return _totalSupply;\n }\n\n /**\n * @dev See {IERC20-balanceOf}.\n */\n function balanceOf(address account) public view virtual override returns (uint256) {\n return _balances[account];\n }\n\n /**\n * @dev See {IERC20-transfer}.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - the caller must have a balance of at least `amount`.\n */\n function transfer(address to, uint256 amount) public virtual override returns (bool) {\n address owner = _msgSender();\n _transfer(owner, to, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-allowance}.\n */\n function allowance(address owner, address spender) public view virtual override returns (uint256) {\n return _allowances[owner][spender];\n }\n\n /**\n * @dev See {IERC20-approve}.\n *\n * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on\n * `transferFrom`. This is semantically equivalent to an infinite approval.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function approve(address spender, uint256 amount) public virtual override returns (bool) {\n address owner = _msgSender();\n _approve(owner, spender, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-transferFrom}.\n *\n * Emits an {Approval} event indicating the updated allowance. This is not\n * required by the EIP. See the note at the beginning of {ERC20}.\n *\n * NOTE: Does not update the allowance if the current allowance\n * is the maximum `uint256`.\n *\n * Requirements:\n *\n * - `from` and `to` cannot be the zero address.\n * - `from` must have a balance of at least `amount`.\n * - the caller must have allowance for ``from``'s tokens of at least\n * `amount`.\n */\n function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {\n address spender = _msgSender();\n _spendAllowance(from, spender, amount);\n _transfer(from, to, amount);\n return true;\n }\n\n /**\n * @dev Atomically increases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\n address owner = _msgSender();\n _approve(owner, spender, allowance(owner, spender) + addedValue);\n return true;\n }\n\n /**\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `spender` must have allowance for the caller of at least\n * `subtractedValue`.\n */\n function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\n address owner = _msgSender();\n uint256 currentAllowance = allowance(owner, spender);\n require(currentAllowance >= subtractedValue, \"ERC20: decreased allowance below zero\");\n unchecked {\n _approve(owner, spender, currentAllowance - subtractedValue);\n }\n\n return true;\n }\n\n /**\n * @dev Moves `amount` of tokens from `from` to `to`.\n *\n * This internal function is equivalent to {transfer}, and can be used to\n * e.g. implement automatic token fees, slashing mechanisms, etc.\n *\n * Emits a {Transfer} event.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `from` must have a balance of at least `amount`.\n */\n function _transfer(address from, address to, uint256 amount) internal virtual {\n require(from != address(0), \"ERC20: transfer from the zero address\");\n require(to != address(0), \"ERC20: transfer to the zero address\");\n\n _beforeTokenTransfer(from, to, amount);\n\n uint256 fromBalance = _balances[from];\n require(fromBalance >= amount, \"ERC20: transfer amount exceeds balance\");\n unchecked {\n _balances[from] = fromBalance - amount;\n // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by\n // decrementing then incrementing.\n _balances[to] += amount;\n }\n\n emit Transfer(from, to, amount);\n\n _afterTokenTransfer(from, to, amount);\n }\n\n /** @dev Creates `amount` tokens and assigns them to `account`, increasing\n * the total supply.\n *\n * Emits a {Transfer} event with `from` set to the zero address.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n */\n function _mint(address account, uint256 amount) internal virtual {\n require(account != address(0), \"ERC20: mint to the zero address\");\n\n _beforeTokenTransfer(address(0), account, amount);\n\n _totalSupply += amount;\n unchecked {\n // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.\n _balances[account] += amount;\n }\n emit Transfer(address(0), account, amount);\n\n _afterTokenTransfer(address(0), account, amount);\n }\n\n /**\n * @dev Destroys `amount` tokens from `account`, reducing the\n * total supply.\n *\n * Emits a {Transfer} event with `to` set to the zero address.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n * - `account` must have at least `amount` tokens.\n */\n function _burn(address account, uint256 amount) internal virtual {\n require(account != address(0), \"ERC20: burn from the zero address\");\n\n _beforeTokenTransfer(account, address(0), amount);\n\n uint256 accountBalance = _balances[account];\n require(accountBalance >= amount, \"ERC20: burn amount exceeds balance\");\n unchecked {\n _balances[account] = accountBalance - amount;\n // Overflow not possible: amount <= accountBalance <= totalSupply.\n _totalSupply -= amount;\n }\n\n emit Transfer(account, address(0), amount);\n\n _afterTokenTransfer(account, address(0), amount);\n }\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n *\n * This internal function is equivalent to `approve`, and can be used to\n * e.g. set automatic allowances for certain subsystems, etc.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `owner` cannot be the zero address.\n * - `spender` cannot be the zero address.\n */\n function _approve(address owner, address spender, uint256 amount) internal virtual {\n require(owner != address(0), \"ERC20: approve from the zero address\");\n require(spender != address(0), \"ERC20: approve to the zero address\");\n\n _allowances[owner][spender] = amount;\n emit Approval(owner, spender, amount);\n }\n\n /**\n * @dev Updates `owner` s allowance for `spender` based on spent `amount`.\n *\n * Does not update the allowance amount in case of infinite allowance.\n * Revert if not enough allowance is available.\n *\n * Might emit an {Approval} event.\n */\n function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {\n uint256 currentAllowance = allowance(owner, spender);\n if (currentAllowance != type(uint256).max) {\n require(currentAllowance >= amount, \"ERC20: insufficient allowance\");\n unchecked {\n _approve(owner, spender, currentAllowance - amount);\n }\n }\n }\n\n /**\n * @dev Hook that is called before any transfer of tokens. This includes\n * minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * will be transferred to `to`.\n * - when `from` is zero, `amount` tokens will be minted for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}\n\n /**\n * @dev Hook that is called after any transfer of tokens. This includes\n * minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * has been transferred to `to`.\n * - when `from` is zero, `amount` tokens have been minted for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens have been burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}\n}\n" + }, + "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC20.sol\";\n\n/**\n * @dev Interface for the optional metadata functions from the ERC20 standard.\n *\n * _Available since v4.1._\n */\ninterface IERC20Metadata is IERC20 {\n /**\n * @dev Returns the name of the token.\n */\n function name() external view returns (string memory);\n\n /**\n * @dev Returns the symbol of the token.\n */\n function symbol() external view returns (string memory);\n\n /**\n * @dev Returns the decimals places of the token.\n */\n function decimals() external view returns (uint8);\n}\n" + }, + "@openzeppelin/contracts/token/ERC20/IERC20.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n /**\n * @dev Returns the amount of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address to, uint256 amount) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 amount) external returns (bool);\n\n /**\n * @dev Moves `amount` tokens from `from` to `to` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\n}\n" + }, + "@openzeppelin/contracts/utils/Context.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n\n function _contextSuffixLength() internal view virtual returns (uint256) {\n return 0;\n }\n}\n" + }, + "@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol\";\n\nimport \"./IAccessControlManagerV8.sol\";\n\n/**\n * @title AccessControlledV8\n * @author Venus\n * @notice This contract is helper between access control manager and actual contract. This contract further inherited by other contract (using solidity 0.8.13)\n * to integrate access controlled mechanism. It provides initialise methods and verifying access methods.\n */\nabstract contract AccessControlledV8 is Initializable, Ownable2StepUpgradeable {\n /// @notice Access control manager contract\n IAccessControlManagerV8 private _accessControlManager;\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[49] private __gap;\n\n /// @notice Emitted when access control manager contract address is changed\n event NewAccessControlManager(address oldAccessControlManager, address newAccessControlManager);\n\n /// @notice Thrown when the action is prohibited by AccessControlManager\n error Unauthorized(address sender, address calledContract, string methodSignature);\n\n function __AccessControlled_init(address accessControlManager_) internal onlyInitializing {\n __Ownable2Step_init();\n __AccessControlled_init_unchained(accessControlManager_);\n }\n\n function __AccessControlled_init_unchained(address accessControlManager_) internal onlyInitializing {\n _setAccessControlManager(accessControlManager_);\n }\n\n /**\n * @notice Sets the address of AccessControlManager\n * @dev Admin function to set address of AccessControlManager\n * @param accessControlManager_ The new address of the AccessControlManager\n * @custom:event Emits NewAccessControlManager event\n * @custom:access Only Governance\n */\n function setAccessControlManager(address accessControlManager_) external onlyOwner {\n _setAccessControlManager(accessControlManager_);\n }\n\n /**\n * @notice Returns the address of the access control manager contract\n */\n function accessControlManager() external view returns (IAccessControlManagerV8) {\n return _accessControlManager;\n }\n\n /**\n * @dev Internal function to set address of AccessControlManager\n * @param accessControlManager_ The new address of the AccessControlManager\n */\n function _setAccessControlManager(address accessControlManager_) internal {\n require(address(accessControlManager_) != address(0), \"invalid acess control manager address\");\n address oldAccessControlManager = address(_accessControlManager);\n _accessControlManager = IAccessControlManagerV8(accessControlManager_);\n emit NewAccessControlManager(oldAccessControlManager, accessControlManager_);\n }\n\n /**\n * @notice Reverts if the call is not allowed by AccessControlManager\n * @param signature Method signature\n */\n function _checkAccessAllowed(string memory signature) internal view {\n bool isAllowedToCall = _accessControlManager.isAllowedToCall(msg.sender, signature);\n\n if (!isAllowedToCall) {\n revert Unauthorized(msg.sender, address(this), signature);\n }\n }\n}\n" + }, + "@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\nimport \"@openzeppelin/contracts/access/IAccessControl.sol\";\n\n/**\n * @title IAccessControlManagerV8\n * @author Venus\n * @notice Interface implemented by the `AccessControlManagerV8` contract.\n */\ninterface IAccessControlManagerV8 is IAccessControl {\n function giveCallPermission(address contractAddress, string calldata functionSig, address accountToPermit) external;\n\n function revokeCallPermission(\n address contractAddress,\n string calldata functionSig,\n address accountToRevoke\n ) external;\n\n function isAllowedToCall(address account, string calldata functionSig) external view returns (bool);\n\n function hasPermission(\n address account,\n address contractAddress,\n string calldata functionSig\n ) external view returns (bool);\n}\n" + }, + "@venusprotocol/solidity-utilities/contracts/constants.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\n/// @dev Base unit for computations, usually used in scaling (multiplications, divisions)\nuint256 constant EXP_SCALE = 1e18;\n\n/// @dev A unit (literal one) in EXP_SCALE, usually used in additions/subtractions\nuint256 constant MANTISSA_ONE = EXP_SCALE;\n\n/// @dev The approximate number of seconds per year\nuint256 constant SECONDS_PER_YEAR = 31_536_000;\n" + }, + "@venusprotocol/solidity-utilities/contracts/validators.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\n/// @notice Thrown if the supplied address is a zero address where it is not allowed\nerror ZeroAddressNotAllowed();\n\n/// @notice Thrown if the supplied value is 0 where it is not allowed\nerror ZeroValueNotAllowed();\n\n/// @notice Checks if the provided address is nonzero, reverts otherwise\n/// @param address_ Address to check\n/// @custom:error ZeroAddressNotAllowed is thrown if the provided address is a zero address\nfunction ensureNonzeroAddress(address address_) pure {\n if (address_ == address(0)) {\n revert ZeroAddressNotAllowed();\n }\n}\n\n/// @notice Checks if the provided value is nonzero, reverts otherwise\n/// @param value_ Value to check\n/// @custom:error ZeroValueNotAllowed is thrown if the provided value is 0\nfunction ensureNonzeroValue(uint256 value_) pure {\n if (value_ == 0) {\n revert ZeroValueNotAllowed();\n }\n}\n" + }, + "contracts/hardhat-dependency-compiler/@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol": { + "content": "// SPDX-License-Identifier: UNLICENSED\npragma solidity >0.0.0;\nimport '@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol';\n" + }, + "contracts/hardhat-dependency-compiler/hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/ProxyAdmin.sol": { + "content": "// SPDX-License-Identifier: UNLICENSED\npragma solidity >0.0.0;\nimport 'hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/ProxyAdmin.sol';\n" + }, + "contracts/hardhat-dependency-compiler/hardhat-deploy/solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol": { + "content": "// SPDX-License-Identifier: UNLICENSED\npragma solidity >0.0.0;\nimport 'hardhat-deploy/solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol';\n" + }, + "contracts/interfaces/FeedRegistryInterface.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\ninterface FeedRegistryInterface {\n function latestRoundDataByName(\n string memory base,\n string memory quote\n )\n external\n view\n returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound);\n\n function decimalsByName(string memory base, string memory quote) external view returns (uint8);\n}\n" + }, + "contracts/interfaces/IAccountant.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface IAccountant {\n function getRateSafe() external view returns (uint256);\n}\n" + }, + "contracts/interfaces/IAnkrBNB.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface IAnkrBNB {\n function sharesToBonds(uint256 amount) external view returns (uint256);\n function decimals() external view returns (uint8);\n}\n" + }, + "contracts/interfaces/IAsBNB.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface IAsBNB {\n function minter() external view returns (address);\n function decimals() external view returns (uint8);\n}\n" + }, + "contracts/interfaces/IAsBNBMinter.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface IAsBNBMinter {\n function convertToTokens(uint256 amount) external view returns (uint256);\n}\n" + }, + "contracts/interfaces/ICappedOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface ICappedOracle {\n function updateSnapshot() external;\n}\n" + }, + "contracts/interfaces/IERC4626.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface IERC4626 {\n function convertToAssets(uint256 shares) external view returns (uint256);\n function decimals() external view returns (uint8);\n}\n" + }, + "contracts/interfaces/IEtherFiLiquidityPool.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface IEtherFiLiquidityPool {\n function amountForShare(uint256 _share) external view returns (uint256);\n}\n" + }, + "contracts/interfaces/IPendlePtOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface IPendlePtOracle {\n function getPtToAssetRate(address market, uint32 duration) external view returns (uint256);\n\n function getPtToSyRate(address market, uint32 duration) external view returns (uint256);\n\n function getOracleState(\n address market,\n uint32 duration\n )\n external\n view\n returns (bool increaseCardinalityRequired, uint16 cardinalityRequired, bool oldestObservationSatisfied);\n}\n" + }, + "contracts/interfaces/IPStakePool.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface IPStakePool {\n struct Data {\n uint256 totalWei;\n uint256 poolTokenSupply;\n }\n\n /**\n * @dev The current exchange rate for converting stkBNB to BNB.\n */\n function exchangeRate() external view returns (Data memory);\n}\n" + }, + "contracts/interfaces/ISFrax.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface ISFrax {\n function convertToAssets(uint256 shares) external view returns (uint256);\n function decimals() external view returns (uint8);\n}\n" + }, + "contracts/interfaces/ISfrxEthFraxOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface ISfrxEthFraxOracle {\n function getPrices() external view returns (bool _isbadData, uint256 _priceLow, uint256 _priceHigh);\n}\n" + }, + "contracts/interfaces/IStaderStakeManager.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface IStaderStakeManager {\n function convertBnbXToBnb(uint256 _amount) external view returns (uint256);\n}\n" + }, + "contracts/interfaces/IStETH.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\ninterface IStETH {\n function getPooledEthByShares(uint256 _sharesAmount) external view returns (uint256);\n function decimals() external view returns (uint8);\n}\n" + }, + "contracts/interfaces/ISynclubStakeManager.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface ISynclubStakeManager {\n function convertSnBnbToBnb(uint256 _amount) external view returns (uint256);\n}\n" + }, + "contracts/interfaces/IWBETH.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface IWBETH {\n function exchangeRate() external view returns (uint256);\n function decimals() external view returns (uint8);\n}\n" + }, + "contracts/interfaces/IZkETH.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\ninterface IZkETH {\n function LSTPerToken() external view returns (uint256);\n function decimals() external view returns (uint8);\n}\n" + }, + "contracts/interfaces/OracleInterface.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\ninterface OracleInterface {\n function getPrice(address asset) external view returns (uint256);\n}\n\ninterface ResilientOracleInterface is OracleInterface {\n function updatePrice(address vToken) external;\n\n function updateAssetPrice(address asset) external;\n\n function getUnderlyingPrice(address vToken) external view returns (uint256);\n}\n\ninterface BoundValidatorInterface {\n function validatePriceWithAnchorPrice(\n address asset,\n uint256 reporterPrice,\n uint256 anchorPrice\n ) external view returns (bool);\n}\n" + }, + "contracts/interfaces/PublicResolverInterface.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\n// SPDX-FileCopyrightText: 2022 Venus\npragma solidity ^0.8.25;\n\ninterface PublicResolverInterface {\n function addr(bytes32 node) external view returns (address payable);\n}\n" + }, + "contracts/interfaces/SIDRegistryInterface.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\n// SPDX-FileCopyrightText: 2022 Venus\npragma solidity ^0.8.25;\n\ninterface SIDRegistryInterface {\n function resolver(bytes32 node) external view returns (address);\n}\n" + }, + "contracts/interfaces/VBep20Interface.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\nimport \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\";\n\ninterface VBep20Interface is IERC20Metadata {\n /**\n * @notice Underlying asset for this VToken\n */\n function underlying() external view returns (address);\n}\n" + }, + "contracts/lib/Transient.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\nlibrary Transient {\n /**\n * @notice Cache the asset price into transient storage\n * @param key address of the asset\n * @param value asset price\n */\n function cachePrice(bytes32 cacheSlot, address key, uint256 value) internal {\n bytes32 slot = keccak256(abi.encode(cacheSlot, key));\n assembly (\"memory-safe\") {\n tstore(slot, value)\n }\n }\n\n /**\n * @notice Read cached price from transient storage\n * @param key address of the asset\n * @return value cached asset price\n */\n function readCachedPrice(bytes32 cacheSlot, address key) internal view returns (uint256 value) {\n bytes32 slot = keccak256(abi.encode(cacheSlot, key));\n assembly (\"memory-safe\") {\n value := tload(slot)\n }\n }\n}\n" + }, + "contracts/oracles/AnkrBNBOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { IAnkrBNB } from \"../interfaces/IAnkrBNB.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\nimport { EXP_SCALE } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\n\n/**\n * @title AnkrBNBOracle\n * @author Venus\n * @notice This oracle fetches the price of ankrBNB asset\n */\ncontract AnkrBNBOracle is CorrelatedTokenOracle {\n /// @notice This is used as token address of BNB on BSC\n address public constant NATIVE_TOKEN_ADDR = 0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB;\n\n /// @notice Constructor for the implementation contract.\n constructor(\n address ankrBNB,\n address resilientOracle,\n uint256 annualGrowthRate,\n uint256 _snapshotInterval,\n uint256 initialSnapshotMaxExchangeRate,\n uint256 initialSnapshotTimestamp,\n address accessControlManager,\n uint256 _snapshotGap\n )\n CorrelatedTokenOracle(\n ankrBNB,\n NATIVE_TOKEN_ADDR,\n resilientOracle,\n annualGrowthRate,\n _snapshotInterval,\n initialSnapshotMaxExchangeRate,\n initialSnapshotTimestamp,\n accessControlManager,\n _snapshotGap\n )\n {}\n\n /**\n * @notice Fetches the amount of BNB for 1 ankrBNB\n * @return amount The amount of BNB for ankrBNB\n */\n function getUnderlyingAmount() public view override returns (uint256) {\n return IAnkrBNB(CORRELATED_TOKEN).sharesToBonds(EXP_SCALE);\n }\n}\n" + }, + "contracts/oracles/AsBNBOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { IAsBNB } from \"../interfaces/IAsBNB.sol\";\nimport { IAsBNBMinter } from \"../interfaces/IAsBNBMinter.sol\";\nimport { EXP_SCALE } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\n\n/**\n * @title asBNBOracle\n * @author Venus\n * @notice This oracle fetches the price of asBNB asset\n */\ncontract AsBNBOracle is CorrelatedTokenOracle {\n /// @notice Constructor for the implementation contract.\n constructor(\n address asBNB,\n address slisBNB,\n address resilientOracle,\n uint256 annualGrowthRate,\n uint256 _snapshotInterval,\n uint256 initialSnapshotMaxExchangeRate,\n uint256 initialSnapshotTimestamp,\n address accessControlManager,\n uint256 _snapshotGap\n )\n CorrelatedTokenOracle(\n asBNB,\n slisBNB,\n resilientOracle,\n annualGrowthRate,\n _snapshotInterval,\n initialSnapshotMaxExchangeRate,\n initialSnapshotTimestamp,\n accessControlManager,\n _snapshotGap\n )\n {}\n\n /**\n * @notice Fetches the amount of slisBNB for 1 asBNB\n * @return price The amount of slisBNB for asBNB\n */\n function getUnderlyingAmount() public view override returns (uint256) {\n IAsBNBMinter minter = IAsBNBMinter(IAsBNB(CORRELATED_TOKEN).minter());\n return minter.convertToTokens(EXP_SCALE);\n }\n}\n" + }, + "contracts/oracles/BinanceOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\";\nimport \"../interfaces/VBep20Interface.sol\";\nimport \"../interfaces/SIDRegistryInterface.sol\";\nimport \"../interfaces/FeedRegistryInterface.sol\";\nimport \"../interfaces/PublicResolverInterface.sol\";\nimport \"../interfaces/OracleInterface.sol\";\nimport \"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol\";\nimport \"../interfaces/OracleInterface.sol\";\n\n/**\n * @title BinanceOracle\n * @author Venus\n * @notice This oracle fetches price of assets from Binance.\n */\ncontract BinanceOracle is AccessControlledV8, OracleInterface {\n /// @notice Used to fetch feed registry address.\n address public sidRegistryAddress;\n\n /// @notice Set this as asset address for BNB. This is the underlying address for vBNB\n address public constant BNB_ADDR = 0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB;\n\n /// @notice Max stale period configuration for assets\n mapping(string => uint256) public maxStalePeriod;\n\n /// @notice Override symbols to be compatible with Binance feed registry\n mapping(string => string) public symbols;\n\n /// @notice Used to fetch price of assets used directly when space ID is not supported by current chain.\n address public feedRegistryAddress;\n\n /// @notice Emits when asset stale period is updated.\n event MaxStalePeriodAdded(string indexed asset, uint256 maxStalePeriod);\n\n /// @notice Emits when symbol of the asset is updated.\n event SymbolOverridden(string indexed symbol, string overriddenSymbol);\n\n /// @notice Emits when address of feed registry is updated.\n event FeedRegistryUpdated(address indexed oldFeedRegistry, address indexed newFeedRegistry);\n\n /**\n * @notice Checks whether an address is null or not\n */\n modifier notNullAddress(address someone) {\n if (someone == address(0)) revert(\"can't be zero address\");\n _;\n }\n\n /// @notice Constructor for the implementation contract.\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n\n /**\n * @notice Sets the contracts required to fetch prices\n * @param _sidRegistryAddress Address of SID registry\n * @param _acm Address of the access control manager contract\n */\n function initialize(address _sidRegistryAddress, address _acm) external initializer {\n sidRegistryAddress = _sidRegistryAddress;\n __AccessControlled_init(_acm);\n }\n\n /**\n * @notice Used to set the max stale period of an asset\n * @param symbol The symbol of the asset\n * @param _maxStalePeriod The max stake period\n */\n function setMaxStalePeriod(string memory symbol, uint256 _maxStalePeriod) external {\n _checkAccessAllowed(\"setMaxStalePeriod(string,uint256)\");\n if (_maxStalePeriod == 0) revert(\"stale period can't be zero\");\n if (bytes(symbol).length == 0) revert(\"symbol cannot be empty\");\n\n maxStalePeriod[symbol] = _maxStalePeriod;\n emit MaxStalePeriodAdded(symbol, _maxStalePeriod);\n }\n\n /**\n * @notice Used to override a symbol when fetching price\n * @param symbol The symbol to override\n * @param overrideSymbol The symbol after override\n */\n function setSymbolOverride(string calldata symbol, string calldata overrideSymbol) external {\n _checkAccessAllowed(\"setSymbolOverride(string,string)\");\n if (bytes(symbol).length == 0) revert(\"symbol cannot be empty\");\n\n symbols[symbol] = overrideSymbol;\n emit SymbolOverridden(symbol, overrideSymbol);\n }\n\n /**\n * @notice Used to set feed registry address when current chain does not support space ID.\n * @param newfeedRegistryAddress Address of new feed registry.\n */\n function setFeedRegistryAddress(\n address newfeedRegistryAddress\n ) external notNullAddress(newfeedRegistryAddress) onlyOwner {\n if (sidRegistryAddress != address(0)) revert(\"sidRegistryAddress must be zero\");\n emit FeedRegistryUpdated(feedRegistryAddress, newfeedRegistryAddress);\n feedRegistryAddress = newfeedRegistryAddress;\n }\n\n /**\n * @notice Uses Space ID to fetch the feed registry address\n * @return feedRegistryAddress Address of binance oracle feed registry.\n */\n function getFeedRegistryAddress() public view returns (address) {\n bytes32 nodeHash = 0x94fe3821e0768eb35012484db4df61890f9a6ca5bfa984ef8ff717e73139faff;\n\n SIDRegistryInterface sidRegistry = SIDRegistryInterface(sidRegistryAddress);\n address publicResolverAddress = sidRegistry.resolver(nodeHash);\n PublicResolverInterface publicResolver = PublicResolverInterface(publicResolverAddress);\n\n return publicResolver.addr(nodeHash);\n }\n\n /**\n * @notice Gets the price of a asset from the binance oracle\n * @param asset Address of the asset\n * @return Price in USD\n */\n function getPrice(address asset) public view returns (uint256) {\n string memory symbol;\n uint256 decimals;\n\n if (asset == BNB_ADDR) {\n symbol = \"BNB\";\n decimals = 18;\n } else {\n IERC20Metadata token = IERC20Metadata(asset);\n symbol = token.symbol();\n decimals = token.decimals();\n }\n\n string memory overrideSymbol = symbols[symbol];\n\n if (bytes(overrideSymbol).length != 0) {\n symbol = overrideSymbol;\n }\n\n return _getPrice(symbol, decimals);\n }\n\n function _getPrice(string memory symbol, uint256 decimals) internal view returns (uint256) {\n FeedRegistryInterface feedRegistry;\n\n if (sidRegistryAddress != address(0)) {\n // If sidRegistryAddress is available, fetch feedRegistryAddress from sidRegistry\n feedRegistry = FeedRegistryInterface(getFeedRegistryAddress());\n } else {\n // Use feedRegistry directly if sidRegistryAddress is not available\n feedRegistry = FeedRegistryInterface(feedRegistryAddress);\n }\n\n (, int256 answer, , uint256 updatedAt, ) = feedRegistry.latestRoundDataByName(symbol, \"USD\");\n if (answer <= 0) revert(\"invalid binance oracle price\");\n if (block.timestamp < updatedAt) revert(\"updatedAt exceeds block time\");\n\n uint256 deltaTime;\n unchecked {\n deltaTime = block.timestamp - updatedAt;\n }\n if (deltaTime > maxStalePeriod[symbol]) revert(\"binance oracle price expired\");\n\n uint256 decimalDelta = feedRegistry.decimalsByName(symbol, \"USD\");\n return (uint256(answer) * (10 ** (18 - decimalDelta))) * (10 ** (18 - decimals));\n }\n}\n" + }, + "contracts/oracles/BNBxOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { IStaderStakeManager } from \"../interfaces/IStaderStakeManager.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\nimport { EXP_SCALE } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\n\n/**\n * @title BNBxOracle\n * @author Venus\n * @notice This oracle fetches the price of BNBx asset\n */\ncontract BNBxOracle is CorrelatedTokenOracle {\n /// @notice This is used as token address of BNB on BSC\n address public constant NATIVE_TOKEN_ADDR = 0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB;\n\n /// @notice Address of StakeManager\n IStaderStakeManager public immutable STAKE_MANAGER;\n\n /// @notice Constructor for the implementation contract.\n constructor(\n address stakeManager,\n address bnbx,\n address resilientOracle,\n uint256 annualGrowthRate,\n uint256 _snapshotInterval,\n uint256 initialSnapshotMaxExchangeRate,\n uint256 initialSnapshotTimestamp,\n address accessControlManager,\n uint256 _snapshotGap\n )\n CorrelatedTokenOracle(\n bnbx,\n NATIVE_TOKEN_ADDR,\n resilientOracle,\n annualGrowthRate,\n _snapshotInterval,\n initialSnapshotMaxExchangeRate,\n initialSnapshotTimestamp,\n accessControlManager,\n _snapshotGap\n )\n {\n ensureNonzeroAddress(stakeManager);\n STAKE_MANAGER = IStaderStakeManager(stakeManager);\n }\n\n /**\n * @notice Fetches the amount of BNB for 1 BNBx\n * @return price The amount of BNB for BNBx\n */\n function getUnderlyingAmount() public view override returns (uint256) {\n return STAKE_MANAGER.convertBnbXToBnb(EXP_SCALE);\n }\n}\n" + }, + "contracts/oracles/BoundValidator.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"../interfaces/VBep20Interface.sol\";\nimport \"../interfaces/OracleInterface.sol\";\nimport \"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol\";\n\n/**\n * @title BoundValidator\n * @author Venus\n * @notice The BoundValidator contract is used to validate prices fetched from two different sources.\n * Each asset has an upper and lower bound ratio set in the config. In order for a price to be valid\n * it must fall within this range of the validator price.\n */\ncontract BoundValidator is AccessControlledV8, BoundValidatorInterface {\n struct ValidateConfig {\n /// @notice asset address\n address asset;\n /// @notice Upper bound of deviation between reported price and anchor price,\n /// beyond which the reported price will be invalidated\n uint256 upperBoundRatio;\n /// @notice Lower bound of deviation between reported price and anchor price,\n /// below which the reported price will be invalidated\n uint256 lowerBoundRatio;\n }\n\n /// @notice validation configs by asset\n mapping(address => ValidateConfig) public validateConfigs;\n\n /// @notice Emit this event when new validation configs are added\n event ValidateConfigAdded(address indexed asset, uint256 indexed upperBound, uint256 indexed lowerBound);\n\n /// @notice Constructor for the implementation contract. Sets immutable variables.\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n\n /**\n * @notice Initializes the owner of the contract\n * @param accessControlManager_ Address of the access control manager contract\n */\n function initialize(address accessControlManager_) external initializer {\n __AccessControlled_init(accessControlManager_);\n }\n\n /**\n * @notice Add multiple validation configs at the same time\n * @param configs Array of validation configs\n * @custom:access Only Governance\n * @custom:error Zero length error is thrown if length of the config array is 0\n * @custom:event Emits ValidateConfigAdded for each validation config that is successfully set\n */\n function setValidateConfigs(ValidateConfig[] memory configs) external {\n uint256 length = configs.length;\n if (length == 0) revert(\"invalid validate config length\");\n for (uint256 i; i < length; ++i) {\n setValidateConfig(configs[i]);\n }\n }\n\n /**\n * @notice Add a single validation config\n * @param config Validation config struct\n * @custom:access Only Governance\n * @custom:error Null address error is thrown if asset address is null\n * @custom:error Range error thrown if bound ratio is not positive\n * @custom:error Range error thrown if lower bound is greater than or equal to upper bound\n * @custom:event Emits ValidateConfigAdded when a validation config is successfully set\n */\n function setValidateConfig(ValidateConfig memory config) public {\n _checkAccessAllowed(\"setValidateConfig(ValidateConfig)\");\n\n if (config.asset == address(0)) revert(\"asset can't be zero address\");\n if (config.upperBoundRatio == 0 || config.lowerBoundRatio == 0) revert(\"bound must be positive\");\n if (config.upperBoundRatio <= config.lowerBoundRatio) revert(\"upper bound must be higher than lowner bound\");\n validateConfigs[config.asset] = config;\n emit ValidateConfigAdded(config.asset, config.upperBoundRatio, config.lowerBoundRatio);\n }\n\n /**\n * @notice Test reported asset price against anchor price\n * @param asset asset address\n * @param reportedPrice The price to be tested\n * @custom:error Missing error thrown if asset config is not set\n * @custom:error Price error thrown if anchor price is not valid\n */\n function validatePriceWithAnchorPrice(\n address asset,\n uint256 reportedPrice,\n uint256 anchorPrice\n ) public view virtual override returns (bool) {\n if (validateConfigs[asset].upperBoundRatio == 0) revert(\"validation config not exist\");\n if (anchorPrice == 0) revert(\"anchor price is not valid\");\n return _isWithinAnchor(asset, reportedPrice, anchorPrice);\n }\n\n /**\n * @notice Test whether the reported price is within the valid bounds\n * @param asset Asset address\n * @param reportedPrice The price to be tested\n * @param anchorPrice The reported price must be within the the valid bounds of this price\n */\n function _isWithinAnchor(address asset, uint256 reportedPrice, uint256 anchorPrice) private view returns (bool) {\n if (reportedPrice != 0) {\n // we need to multiply anchorPrice by 1e18 to make the ratio 18 decimals\n uint256 anchorRatio = (anchorPrice * 1e18) / reportedPrice;\n uint256 upperBoundAnchorRatio = validateConfigs[asset].upperBoundRatio;\n uint256 lowerBoundAnchorRatio = validateConfigs[asset].lowerBoundRatio;\n return anchorRatio <= upperBoundAnchorRatio && anchorRatio >= lowerBoundAnchorRatio;\n }\n return false;\n }\n\n // BoundValidator is to get inherited, so it's a good practice to add some storage gaps like\n // OpenZepplin proposed in their contracts: https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n // solhint-disable-next-line\n uint256[49] private __gap;\n}\n" + }, + "contracts/oracles/ChainlinkOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"../interfaces/VBep20Interface.sol\";\nimport \"../interfaces/OracleInterface.sol\";\nimport \"@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol\";\nimport \"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol\";\n\n/**\n * @title ChainlinkOracle\n * @author Venus\n * @notice This oracle fetches prices of assets from the Chainlink oracle.\n */\ncontract ChainlinkOracle is AccessControlledV8, OracleInterface {\n struct TokenConfig {\n /// @notice Underlying token address, which can't be a null address\n /// @notice Used to check if a token is supported\n /// @notice 0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB address for native tokens\n /// (e.g BNB for BNB chain, ETH for Ethereum network)\n address asset;\n /// @notice Chainlink feed address\n address feed;\n /// @notice Price expiration period of this asset\n uint256 maxStalePeriod;\n }\n\n /// @notice Set this as asset address for native token on each chain.\n /// This is the underlying address for vBNB on BNB chain or an underlying asset for a native market on any chain.\n address public constant NATIVE_TOKEN_ADDR = 0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB;\n\n /// @notice Manually set an override price, useful under extenuating conditions such as price feed failure\n mapping(address => uint256) public prices;\n\n /// @notice Token config by assets\n mapping(address => TokenConfig) public tokenConfigs;\n\n /// @notice Emit when a price is manually set\n event PricePosted(address indexed asset, uint256 previousPriceMantissa, uint256 newPriceMantissa);\n\n /// @notice Emit when a token config is added\n event TokenConfigAdded(address indexed asset, address feed, uint256 maxStalePeriod);\n\n modifier notNullAddress(address someone) {\n if (someone == address(0)) revert(\"can't be zero address\");\n _;\n }\n\n /// @notice Constructor for the implementation contract.\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n\n /**\n * @notice Initializes the owner of the contract\n * @param accessControlManager_ Address of the access control manager contract\n */\n function initialize(address accessControlManager_) external initializer {\n __AccessControlled_init(accessControlManager_);\n }\n\n /**\n * @notice Manually set the price of a given asset\n * @param asset Asset address\n * @param price Asset price in 18 decimals\n * @custom:access Only Governance\n * @custom:event Emits PricePosted event on successfully setup of asset price\n */\n function setDirectPrice(address asset, uint256 price) external notNullAddress(asset) {\n _checkAccessAllowed(\"setDirectPrice(address,uint256)\");\n\n uint256 previousPriceMantissa = prices[asset];\n prices[asset] = price;\n emit PricePosted(asset, previousPriceMantissa, price);\n }\n\n /**\n * @notice Add multiple token configs at the same time\n * @param tokenConfigs_ config array\n * @custom:access Only Governance\n * @custom:error Zero length error thrown, if length of the array in parameter is 0\n */\n function setTokenConfigs(TokenConfig[] memory tokenConfigs_) external {\n if (tokenConfigs_.length == 0) revert(\"length can't be 0\");\n uint256 numTokenConfigs = tokenConfigs_.length;\n for (uint256 i; i < numTokenConfigs; ++i) {\n setTokenConfig(tokenConfigs_[i]);\n }\n }\n\n /**\n * @notice Add single token config. asset & feed cannot be null addresses and maxStalePeriod must be positive\n * @param tokenConfig Token config struct\n * @custom:access Only Governance\n * @custom:error NotNullAddress error is thrown if asset address is null\n * @custom:error NotNullAddress error is thrown if token feed address is null\n * @custom:error Range error is thrown if maxStale period of token is not greater than zero\n * @custom:event Emits TokenConfigAdded event on successfully setting of the token config\n */\n function setTokenConfig(\n TokenConfig memory tokenConfig\n ) public notNullAddress(tokenConfig.asset) notNullAddress(tokenConfig.feed) {\n _checkAccessAllowed(\"setTokenConfig(TokenConfig)\");\n\n if (tokenConfig.maxStalePeriod == 0) revert(\"stale period can't be zero\");\n tokenConfigs[tokenConfig.asset] = tokenConfig;\n emit TokenConfigAdded(tokenConfig.asset, tokenConfig.feed, tokenConfig.maxStalePeriod);\n }\n\n /**\n * @notice Gets the price of a asset from the chainlink oracle\n * @param asset Address of the asset\n * @return Price in USD from Chainlink or a manually set price for the asset\n */\n function getPrice(address asset) public view virtual returns (uint256) {\n uint256 decimals;\n\n if (asset == NATIVE_TOKEN_ADDR) {\n decimals = 18;\n } else {\n IERC20Metadata token = IERC20Metadata(asset);\n decimals = token.decimals();\n }\n\n return _getPriceInternal(asset, decimals);\n }\n\n /**\n * @notice Gets the Chainlink price for a given asset\n * @param asset address of the asset\n * @param decimals decimals of the asset\n * @return price Asset price in USD or a manually set price of the asset\n */\n function _getPriceInternal(address asset, uint256 decimals) internal view returns (uint256 price) {\n uint256 tokenPrice = prices[asset];\n if (tokenPrice != 0) {\n price = tokenPrice;\n } else {\n price = _getChainlinkPrice(asset);\n }\n\n uint256 decimalDelta = 18 - decimals;\n return price * (10 ** decimalDelta);\n }\n\n /**\n * @notice Get the Chainlink price for an asset, revert if token config doesn't exist\n * @dev The precision of the price feed is used to ensure the returned price has 18 decimals of precision\n * @param asset Address of the asset\n * @return price Price in USD, with 18 decimals of precision\n * @custom:error NotNullAddress error is thrown if the asset address is null\n * @custom:error Price error is thrown if the Chainlink price of asset is not greater than zero\n * @custom:error Timing error is thrown if current timestamp is less than the last updatedAt timestamp\n * @custom:error Timing error is thrown if time difference between current time and last updated time\n * is greater than maxStalePeriod\n */\n function _getChainlinkPrice(\n address asset\n ) private view notNullAddress(tokenConfigs[asset].asset) returns (uint256) {\n TokenConfig memory tokenConfig = tokenConfigs[asset];\n AggregatorV3Interface feed = AggregatorV3Interface(tokenConfig.feed);\n\n // note: maxStalePeriod cannot be 0\n uint256 maxStalePeriod = tokenConfig.maxStalePeriod;\n\n // Chainlink USD-denominated feeds store answers at 8 decimals, mostly\n uint256 decimalDelta = 18 - feed.decimals();\n\n (, int256 answer, , uint256 updatedAt, ) = feed.latestRoundData();\n if (answer <= 0) revert(\"chainlink price must be positive\");\n if (block.timestamp < updatedAt) revert(\"updatedAt exceeds block time\");\n\n uint256 deltaTime;\n unchecked {\n deltaTime = block.timestamp - updatedAt;\n }\n\n if (deltaTime > maxStalePeriod) revert(\"chainlink price expired\");\n\n return uint256(answer) * (10 ** decimalDelta);\n }\n}\n" + }, + "contracts/oracles/common/CorrelatedTokenOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { OracleInterface, ResilientOracleInterface } from \"../../interfaces/OracleInterface.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\nimport { SECONDS_PER_YEAR } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\nimport { IERC20Metadata } from \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\";\nimport { ICappedOracle } from \"../../interfaces/ICappedOracle.sol\";\nimport { IAccessControlManagerV8 } from \"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol\";\n\n/**\n * @title CorrelatedTokenOracle\n * @notice This oracle fetches the price of a token that is correlated to another token.\n */\nabstract contract CorrelatedTokenOracle is OracleInterface, ICappedOracle {\n /// @notice Address of the correlated token\n address public immutable CORRELATED_TOKEN;\n\n /// @notice Address of the underlying token\n address public immutable UNDERLYING_TOKEN;\n\n /// @notice Address of Resilient Oracle\n ResilientOracleInterface public immutable RESILIENT_ORACLE;\n\n /// @notice Address of the AccessControlManager contract\n IAccessControlManagerV8 public immutable ACCESS_CONTROL_MANAGER;\n\n //// @notice Growth rate percentage in seconds. Ex: 1e18 is 100%\n uint256 public growthRatePerSecond;\n\n /// @notice Snapshot update interval\n uint256 public snapshotInterval;\n\n /// @notice Last stored snapshot maximum exchange rate\n uint256 public snapshotMaxExchangeRate;\n\n /// @notice Last stored snapshot timestamp\n uint256 public snapshotTimestamp;\n\n /// @notice Gap to add when updating the snapshot\n uint256 public snapshotGap;\n\n /// @notice Emitted when the snapshot is updated\n event SnapshotUpdated(uint256 indexed maxExchangeRate, uint256 indexed timestamp);\n\n /// @notice Emitted when the growth rate is updated\n event GrowthRateUpdated(\n uint256 indexed oldGrowthRatePerSecond,\n uint256 indexed newGrowthRatePerSecond,\n uint256 indexed oldSnapshotInterval,\n uint256 newSnapshotInterval\n );\n\n /// @notice Emitted when the snapshot gap is updated\n event SnapshotGapUpdated(uint256 indexed oldSnapshotGap, uint256 indexed newSnapshotGap);\n\n /// @notice Thrown if the token address is invalid\n error InvalidTokenAddress();\n\n /// @notice Thrown if the growth rate is invalid\n error InvalidGrowthRate();\n\n /// @notice Thrown if the initial snapshot is invalid\n error InvalidInitialSnapshot();\n\n /// @notice Thrown if the max snapshot exchange rate is invalid\n error InvalidSnapshotMaxExchangeRate();\n\n /// @notice @notice Thrown when the action is prohibited by AccessControlManager\n error Unauthorized(address sender, address calledContract, string methodSignature);\n\n /**\n * @notice Constructor for the implementation contract.\n * @custom:error InvalidGrowthRate error is thrown if the growth rate is invalid\n * @custom:error InvalidInitialSnapshot error is thrown if the initial snapshot values are invalid\n */\n constructor(\n address _correlatedToken,\n address _underlyingToken,\n address _resilientOracle,\n uint256 _annualGrowthRate,\n uint256 _snapshotInterval,\n uint256 _initialSnapshotMaxExchangeRate,\n uint256 _initialSnapshotTimestamp,\n address _accessControlManager,\n uint256 _snapshotGap\n ) {\n growthRatePerSecond = _annualGrowthRate / SECONDS_PER_YEAR;\n\n if ((growthRatePerSecond == 0 && _snapshotInterval > 0) || (growthRatePerSecond > 0 && _snapshotInterval == 0))\n revert InvalidGrowthRate();\n\n if ((_initialSnapshotMaxExchangeRate == 0 || _initialSnapshotTimestamp == 0) && _snapshotInterval > 0) {\n revert InvalidInitialSnapshot();\n }\n\n ensureNonzeroAddress(_correlatedToken);\n ensureNonzeroAddress(_underlyingToken);\n ensureNonzeroAddress(_resilientOracle);\n ensureNonzeroAddress(_accessControlManager);\n\n CORRELATED_TOKEN = _correlatedToken;\n UNDERLYING_TOKEN = _underlyingToken;\n RESILIENT_ORACLE = ResilientOracleInterface(_resilientOracle);\n snapshotInterval = _snapshotInterval;\n\n snapshotMaxExchangeRate = _initialSnapshotMaxExchangeRate;\n snapshotTimestamp = _initialSnapshotTimestamp;\n snapshotGap = _snapshotGap;\n\n ACCESS_CONTROL_MANAGER = IAccessControlManagerV8(_accessControlManager);\n }\n\n /**\n * @notice Directly sets the snapshot exchange rate and timestamp\n * @param _snapshotMaxExchangeRate The exchange rate to set\n * @param _snapshotTimestamp The timestamp to set\n * @custom:event Emits SnapshotUpdated event on successful update of the snapshot\n */\n function setSnapshot(uint256 _snapshotMaxExchangeRate, uint256 _snapshotTimestamp) external {\n _checkAccessAllowed(\"setSnapshot(uint256,uint256)\");\n\n snapshotMaxExchangeRate = _snapshotMaxExchangeRate;\n snapshotTimestamp = _snapshotTimestamp;\n\n emit SnapshotUpdated(snapshotMaxExchangeRate, snapshotTimestamp);\n }\n\n /**\n * @notice Sets the growth rate and snapshot interval\n * @param _annualGrowthRate The annual growth rate to set\n * @param _snapshotInterval The snapshot interval to set\n * @custom:error InvalidGrowthRate error is thrown if the growth rate is invalid\n * @custom:event Emits GrowthRateUpdated event on successful update of the growth rate\n */\n function setGrowthRate(uint256 _annualGrowthRate, uint256 _snapshotInterval) external {\n _checkAccessAllowed(\"setGrowthRate(uint256,uint256)\");\n uint256 oldGrowthRatePerSecond = growthRatePerSecond;\n\n growthRatePerSecond = _annualGrowthRate / SECONDS_PER_YEAR;\n\n if ((growthRatePerSecond == 0 && _snapshotInterval > 0) || (growthRatePerSecond > 0 && _snapshotInterval == 0))\n revert InvalidGrowthRate();\n\n emit GrowthRateUpdated(oldGrowthRatePerSecond, growthRatePerSecond, snapshotInterval, _snapshotInterval);\n\n snapshotInterval = _snapshotInterval;\n }\n\n /**\n * @notice Sets the snapshot gap\n * @param _snapshotGap The snapshot gap to set\n * @custom:event Emits SnapshotGapUpdated event on successful update of the snapshot gap\n */\n function setSnapshotGap(uint256 _snapshotGap) external {\n _checkAccessAllowed(\"setSnapshotGap(uint256)\");\n\n emit SnapshotGapUpdated(snapshotGap, _snapshotGap);\n\n snapshotGap = _snapshotGap;\n }\n\n /**\n * @notice Returns if the price is capped\n * @return isCapped Boolean indicating if the price is capped\n */\n function isCapped() external view virtual returns (bool) {\n if (snapshotInterval == 0) {\n return false;\n }\n\n uint256 maxAllowedExchangeRate = getMaxAllowedExchangeRate();\n if (maxAllowedExchangeRate == 0) {\n return false;\n }\n\n uint256 exchangeRate = getUnderlyingAmount();\n\n return exchangeRate > maxAllowedExchangeRate;\n }\n\n /**\n * @notice Updates the snapshot price and timestamp\n * @custom:event Emits SnapshotUpdated event on successful update of the snapshot\n * @custom:error InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero\n */\n function updateSnapshot() public override {\n if (block.timestamp - snapshotTimestamp < snapshotInterval || snapshotInterval == 0) return;\n\n uint256 exchangeRate = getUnderlyingAmount();\n uint256 maxAllowedExchangeRate = getMaxAllowedExchangeRate();\n\n snapshotMaxExchangeRate =\n (exchangeRate > maxAllowedExchangeRate ? maxAllowedExchangeRate : exchangeRate) +\n snapshotGap;\n snapshotTimestamp = block.timestamp;\n\n if (snapshotMaxExchangeRate == 0) revert InvalidSnapshotMaxExchangeRate();\n\n RESILIENT_ORACLE.updateAssetPrice(UNDERLYING_TOKEN);\n emit SnapshotUpdated(snapshotMaxExchangeRate, snapshotTimestamp);\n }\n\n /**\n * @notice Fetches the price of the token\n * @param asset Address of the token\n * @return price The price of the token in scaled decimal places. It can be capped\n * to a maximum value taking into account the growth rate\n * @custom:error InvalidTokenAddress error is thrown if the token address is invalid\n */\n function getPrice(address asset) public view override returns (uint256) {\n if (asset != CORRELATED_TOKEN) revert InvalidTokenAddress();\n\n uint256 exchangeRate = getUnderlyingAmount();\n\n if (snapshotInterval == 0) {\n return _calculatePrice(exchangeRate);\n }\n\n uint256 maxAllowedExchangeRate = getMaxAllowedExchangeRate();\n\n uint256 finalExchangeRate = (exchangeRate > maxAllowedExchangeRate && maxAllowedExchangeRate != 0)\n ? maxAllowedExchangeRate\n : exchangeRate;\n\n return _calculatePrice(finalExchangeRate);\n }\n\n /**\n * @notice Gets the maximum allowed exchange rate for token\n * @return maxExchangeRate Maximum allowed exchange rate\n */\n function getMaxAllowedExchangeRate() public view returns (uint256) {\n uint256 timeElapsed = block.timestamp - snapshotTimestamp;\n uint256 maxExchangeRate = snapshotMaxExchangeRate +\n (snapshotMaxExchangeRate * growthRatePerSecond * timeElapsed) /\n 1e18;\n return maxExchangeRate;\n }\n\n /**\n * @notice Gets the underlying amount for correlated token\n * @return underlyingAmount Amount of underlying token\n */\n function getUnderlyingAmount() public view virtual returns (uint256);\n\n /**\n * @notice Fetches price of the token based on an underlying exchange rate\n * @param exchangeRate The underlying exchange rate to use\n * @return price The price of the token in scaled decimal places\n */\n function _calculatePrice(uint256 exchangeRate) internal view returns (uint256) {\n uint256 underlyingUSDPrice = RESILIENT_ORACLE.getPrice(UNDERLYING_TOKEN);\n\n IERC20Metadata token = IERC20Metadata(CORRELATED_TOKEN);\n uint256 decimals = token.decimals();\n\n return (exchangeRate * underlyingUSDPrice) / (10 ** decimals);\n }\n\n /**\n * @notice Reverts if the call is not allowed by AccessControlManager\n * @param signature Method signature\n * @custom:error Unauthorized error is thrown if the call is not allowed\n */\n function _checkAccessAllowed(string memory signature) internal view {\n bool isAllowedToCall = ACCESS_CONTROL_MANAGER.isAllowedToCall(msg.sender, signature);\n\n if (!isAllowedToCall) {\n revert Unauthorized(msg.sender, address(this), signature);\n }\n }\n}\n" + }, + "contracts/oracles/ERC4626Oracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { IERC4626 } from \"../interfaces/IERC4626.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\n\n/**\n * @title ERC4626Oracle\n * @author Venus\n * @notice This oracle fetches the price of ERC4626 tokens\n */\ncontract ERC4626Oracle is CorrelatedTokenOracle {\n uint256 public immutable ONE_CORRELATED_TOKEN;\n\n /// @notice Constructor for the implementation contract.\n constructor(\n address correlatedToken,\n address underlyingToken,\n address resilientOracle,\n uint256 annualGrowthRate,\n uint256 _snapshotInterval,\n uint256 initialSnapshotMaxExchangeRate,\n uint256 initialSnapshotTimestamp,\n address accessControlManager,\n uint256 _snapshotGap\n )\n CorrelatedTokenOracle(\n correlatedToken,\n underlyingToken,\n resilientOracle,\n annualGrowthRate,\n _snapshotInterval,\n initialSnapshotMaxExchangeRate,\n initialSnapshotTimestamp,\n accessControlManager,\n _snapshotGap\n )\n {\n ONE_CORRELATED_TOKEN = 10 ** IERC4626(correlatedToken).decimals();\n }\n\n /**\n * @notice Fetches the amount of underlying token for 1 correlated token\n * @return amount The amount of underlying token for correlated token\n */\n function getUnderlyingAmount() public view override returns (uint256) {\n return IERC4626(CORRELATED_TOKEN).convertToAssets(ONE_CORRELATED_TOKEN);\n }\n}\n" + }, + "contracts/oracles/EtherfiAccountantOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\nimport { IAccountant } from \"../interfaces/IAccountant.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\n\n/**\n * @title EtherfiAccountantOracle\n * @author Venus\n * @notice This oracle fetches the price of any Ether.fi asset that uses\n * Accountant contracts to derive the underlying price\n */\ncontract EtherfiAccountantOracle is CorrelatedTokenOracle {\n /// @notice Address of Accountant\n IAccountant public immutable ACCOUNTANT;\n\n /// @notice Constructor for the implementation contract.\n constructor(\n address accountant,\n address correlatedToken,\n address underlyingToken,\n address resilientOracle,\n uint256 annualGrowthRate,\n uint256 _snapshotInterval,\n uint256 initialSnapshotMaxExchangeRate,\n uint256 initialSnapshotTimestamp,\n address accessControlManager,\n uint256 _snapshotGap\n )\n CorrelatedTokenOracle(\n correlatedToken,\n underlyingToken,\n resilientOracle,\n annualGrowthRate,\n _snapshotInterval,\n initialSnapshotMaxExchangeRate,\n initialSnapshotTimestamp,\n accessControlManager,\n _snapshotGap\n )\n {\n ensureNonzeroAddress(accountant);\n ACCOUNTANT = IAccountant(accountant);\n }\n\n /**\n * @notice Fetches the conversion rate from the ACCOUNTANT contract\n * @return amount Amount of WBTC\n */\n function getUnderlyingAmount() public view override returns (uint256) {\n return ACCOUNTANT.getRateSafe();\n }\n}\n" + }, + "contracts/oracles/mocks/MockAccountant.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"../../interfaces/IAccountant.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\ncontract MockAccountant is IAccountant, Ownable {\n uint256 public rate;\n\n constructor() Ownable() {}\n\n function setRate(uint256 _rate) external onlyOwner {\n rate = _rate;\n }\n\n function getRateSafe() external view override returns (uint256) {\n return rate;\n }\n}\n" + }, + "contracts/oracles/mocks/MockBinanceFeedRegistry.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"../../interfaces/FeedRegistryInterface.sol\";\n\ncontract MockBinanceFeedRegistry is FeedRegistryInterface {\n mapping(string => uint256) public assetPrices;\n\n function setAssetPrice(string memory base, uint256 price) external {\n assetPrices[base] = price;\n }\n\n function latestRoundDataByName(\n string memory base,\n string memory quote\n )\n external\n view\n override\n returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound)\n {\n quote;\n return (0, int256(assetPrices[base]), 0, block.timestamp - 10, 0);\n }\n\n function decimalsByName(string memory base, string memory quote) external view override returns (uint8) {\n return 8;\n }\n}\n" + }, + "contracts/oracles/mocks/MockBinanceOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { OwnableUpgradeable } from \"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\";\nimport { OracleInterface } from \"../../interfaces/OracleInterface.sol\";\n\ncontract MockBinanceOracle is OwnableUpgradeable, OracleInterface {\n mapping(address => uint256) public assetPrices;\n\n constructor() {}\n\n function initialize() public initializer {}\n\n function setPrice(address asset, uint256 price) external {\n assetPrices[asset] = price;\n }\n\n function getPrice(address token) public view returns (uint256) {\n return assetPrices[token];\n }\n}\n" + }, + "contracts/oracles/mocks/MockChainlinkOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { OwnableUpgradeable } from \"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\";\nimport { OracleInterface } from \"../../interfaces/OracleInterface.sol\";\n\ncontract MockChainlinkOracle is OwnableUpgradeable, OracleInterface {\n mapping(address => uint256) public assetPrices;\n\n //set price in 6 decimal precision\n constructor() {}\n\n function initialize() public initializer {\n __Ownable_init();\n }\n\n function setPrice(address asset, uint256 price) external {\n assetPrices[asset] = price;\n }\n\n //https://compound.finance/docs/prices\n function getPrice(address token) public view returns (uint256) {\n return assetPrices[token];\n }\n}\n" + }, + "contracts/oracles/mocks/MockPendlePtOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"../../interfaces/IPendlePtOracle.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\ncontract MockPendlePtOracle is IPendlePtOracle, Ownable {\n mapping(address => mapping(uint32 => uint256)) public ptToAssetRate;\n mapping(address => mapping(uint32 => uint256)) public ptToSyRate;\n\n constructor() Ownable() {}\n\n function setPtToAssetRate(address market, uint32 duration, uint256 rate) external onlyOwner {\n ptToAssetRate[market][duration] = rate;\n }\n\n function setPtToSyRate(address market, uint32 duration, uint256 rate) external onlyOwner {\n ptToSyRate[market][duration] = rate;\n }\n\n function getPtToAssetRate(address market, uint32 duration) external view returns (uint256) {\n return ptToAssetRate[market][duration];\n }\n\n function getPtToSyRate(address market, uint32 duration) external view returns (uint256) {\n return ptToSyRate[market][duration];\n }\n\n function getOracleState(\n address /* market */,\n uint32 /* duration */\n )\n external\n pure\n returns (bool increaseCardinalityRequired, uint16 cardinalityRequired, bool oldestObservationSatisfied)\n {\n return (false, 0, true);\n }\n}\n" + }, + "contracts/oracles/mocks/MockSFrxEthFraxOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"../../interfaces/ISfrxEthFraxOracle.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\ncontract MockSfrxEthFraxOracle is ISfrxEthFraxOracle, Ownable {\n bool public isBadData;\n uint256 public priceLow;\n uint256 public priceHigh;\n\n constructor() Ownable() {}\n\n function setPrices(bool _isBadData, uint256 _priceLow, uint256 _priceHigh) external onlyOwner {\n isBadData = _isBadData;\n priceLow = _priceLow;\n priceHigh = _priceHigh;\n }\n\n function getPrices() external view override returns (bool, uint256, uint256) {\n return (isBadData, priceLow, priceHigh);\n }\n}\n" + }, + "contracts/oracles/OneJumpOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\nimport { OracleInterface } from \"../interfaces/OracleInterface.sol\";\nimport { IERC20Metadata } from \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\";\n\n/**\n * @title OneJumpOracle\n * @author Venus\n * @notice This oracle fetches the price of an asset in through an intermediate asset\n */\ncontract OneJumpOracle is CorrelatedTokenOracle {\n /// @notice Address of the intermediate oracle\n OracleInterface public immutable INTERMEDIATE_ORACLE;\n\n /// @notice Constructor for the implementation contract.\n constructor(\n address correlatedToken,\n address underlyingToken,\n address resilientOracle,\n address intermediateOracle,\n uint256 annualGrowthRate,\n uint256 _snapshotInterval,\n uint256 initialSnapshotMaxExchangeRate,\n uint256 initialSnapshotTimestamp,\n address accessControlManager,\n uint256 _snapshotGap\n )\n CorrelatedTokenOracle(\n correlatedToken,\n underlyingToken,\n resilientOracle,\n annualGrowthRate,\n _snapshotInterval,\n initialSnapshotMaxExchangeRate,\n initialSnapshotTimestamp,\n accessControlManager,\n _snapshotGap\n )\n {\n ensureNonzeroAddress(intermediateOracle);\n INTERMEDIATE_ORACLE = OracleInterface(intermediateOracle);\n }\n\n /**\n * @notice Fetches the amount of the underlying token for 1 correlated token, using the intermediate oracle\n * @return amount The amount of the underlying token for 1 correlated token scaled by the underlying token decimals\n */\n function getUnderlyingAmount() public view override returns (uint256) {\n uint256 underlyingDecimals = IERC20Metadata(UNDERLYING_TOKEN).decimals();\n uint256 correlatedDecimals = IERC20Metadata(CORRELATED_TOKEN).decimals();\n\n uint256 underlyingAmount = INTERMEDIATE_ORACLE.getPrice(CORRELATED_TOKEN);\n\n return (underlyingAmount * (10 ** correlatedDecimals)) / (10 ** (36 - underlyingDecimals));\n }\n}\n" + }, + "contracts/oracles/PendleOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { IPendlePtOracle } from \"../interfaces/IPendlePtOracle.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\nimport { ensureNonzeroAddress, ensureNonzeroValue } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\nimport { IERC20Metadata } from \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\";\n\n/**\n * @title PendleOracle\n * @author Venus\n * @notice This oracle fetches the price of a pendle token\n * @dev As a base price the oracle uses either the price of the Pendle\n * market's asset (in this case PT_TO_ASSET rate should be used) or\n * the price of the Pendle market's interest bearing token (e.g. wstETH\n * for stETH; in this case PT_TO_SY rate should be used). Technically,\n * interest bearing token is different from standardized yield (SY) token,\n * but since SY is a wrapper around an interest bearing token, we can safely\n * assume the prices of the two are equal. This is not always true for asset\n * price though: using PT_TO_ASSET rate assumes that the yield token can\n * be seamlessly redeemed for the underlying asset. In reality, this might\n * not always be the case. For more details, see\n * https://docs.pendle.finance/Developers/Contracts/StandardizedYield\n */\ncontract PendleOracle is CorrelatedTokenOracle {\n struct ConstructorParams {\n /// @notice Pendle market\n address market;\n /// @notice Pendle oracle\n address ptOracle;\n /// @notice Either PT_TO_ASSET or PT_TO_SY\n RateKind rateKind;\n /// @notice Pendle PT token\n address ptToken;\n /// @notice Underlying token, can be either the market's asset or the interest bearing token\n address underlyingToken;\n /// @notice Resilient oracle to get the underlying token price from\n address resilientOracle;\n /// @notice TWAP duration to call Pendle oracle with\n uint32 twapDuration;\n /// @notice Annual growth rate of the underlying token\n uint256 annualGrowthRate;\n /// @notice Snapshot interval for the oracle\n uint256 snapshotInterval;\n /// @notice Initial exchange rate of the underlying token\n uint256 initialSnapshotMaxExchangeRate;\n /// @notice Initial timestamp of the underlying token\n uint256 initialSnapshotTimestamp;\n /// @notice Access control manager\n address accessControlManager;\n /// @notice Gap to add when updating the snapshot\n uint256 snapshotGap;\n }\n\n /// @notice Which asset to use as a base for the returned PT\n /// price. Can be either a standardized yield token (SY), in\n /// this case PT/SY price is returned, or the Pendle\n /// market's asset directly.\n enum RateKind {\n PT_TO_ASSET,\n PT_TO_SY\n }\n\n /// @notice Address of the PT oracle\n IPendlePtOracle public immutable PT_ORACLE;\n\n /// @notice Whether to use PT/SY (standardized yield token) rate\n /// or PT/market asset rate\n RateKind public immutable RATE_KIND;\n\n /// @notice Address of the market\n address public immutable MARKET;\n\n /// @notice Twap duration for the oracle\n uint32 public immutable TWAP_DURATION;\n\n /// @notice Decimals of the underlying token\n /// @dev We make an assumption that the underlying decimals will\n /// not change throughout the lifetime of the Pendle market\n uint8 public immutable UNDERLYING_DECIMALS;\n\n /// @notice Thrown if the duration is invalid\n error InvalidDuration();\n\n /**\n * @notice Constructor for the implementation contract.\n * @custom:error InvalidDuration Thrown if the duration is invalid\n */\n constructor(\n ConstructorParams memory params\n )\n CorrelatedTokenOracle(\n params.ptToken,\n params.underlyingToken,\n params.resilientOracle,\n params.annualGrowthRate,\n params.snapshotInterval,\n params.initialSnapshotMaxExchangeRate,\n params.initialSnapshotTimestamp,\n params.accessControlManager,\n params.snapshotGap\n )\n {\n ensureNonzeroAddress(params.market);\n ensureNonzeroAddress(params.ptOracle);\n ensureNonzeroValue(params.twapDuration);\n\n MARKET = params.market;\n PT_ORACLE = IPendlePtOracle(params.ptOracle);\n RATE_KIND = params.rateKind;\n TWAP_DURATION = params.twapDuration;\n UNDERLYING_DECIMALS = IERC20Metadata(UNDERLYING_TOKEN).decimals();\n\n (bool increaseCardinalityRequired, , bool oldestObservationSatisfied) = PT_ORACLE.getOracleState(\n MARKET,\n TWAP_DURATION\n );\n if (increaseCardinalityRequired || !oldestObservationSatisfied) {\n revert InvalidDuration();\n }\n }\n\n /// @notice Fetches the amount of underlying token for 1 PT\n /// @return amount The amount of underlying token (either the market's asset\n /// or the yield token) for 1 PT, adjusted for decimals such that the result\n /// has the same precision as the underlying token\n function getUnderlyingAmount() public view override returns (uint256) {\n uint256 rate;\n if (RATE_KIND == RateKind.PT_TO_SY) {\n rate = PT_ORACLE.getPtToSyRate(MARKET, TWAP_DURATION);\n } else {\n rate = PT_ORACLE.getPtToAssetRate(MARKET, TWAP_DURATION);\n }\n return ((10 ** UNDERLYING_DECIMALS) * rate) / 1e18;\n }\n}\n" + }, + "contracts/oracles/SequencerChainlinkOracle.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.25;\n\nimport { ChainlinkOracle } from \"./ChainlinkOracle.sol\";\nimport { AggregatorV3Interface } from \"@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol\";\n\n/**\n @title Sequencer Chain Link Oracle\n @notice Oracle to fetch price using chainlink oracles on L2s with sequencer\n*/\ncontract SequencerChainlinkOracle is ChainlinkOracle {\n /// @notice L2 Sequencer feed\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n AggregatorV3Interface public immutable sequencer;\n\n /// @notice L2 Sequencer grace period\n uint256 public constant GRACE_PERIOD_TIME = 3600;\n\n /**\n @notice Contract constructor\n @param _sequencer L2 sequencer\n @custom:oz-upgrades-unsafe-allow constructor\n */\n constructor(AggregatorV3Interface _sequencer) ChainlinkOracle() {\n require(address(_sequencer) != address(0), \"zero address\");\n\n sequencer = _sequencer;\n }\n\n /// @inheritdoc ChainlinkOracle\n function getPrice(address asset) public view override returns (uint) {\n if (!isSequencerActive()) revert(\"L2 sequencer unavailable\");\n return super.getPrice(asset);\n }\n\n function isSequencerActive() internal view returns (bool) {\n // answer from oracle is a variable with a value of either 1 or 0\n // 0: The sequencer is up\n // 1: The sequencer is down\n // startedAt: This timestamp indicates when the sequencer changed status\n (, int256 answer, uint256 startedAt, , ) = sequencer.latestRoundData();\n if (block.timestamp - startedAt <= GRACE_PERIOD_TIME || answer == 1) return false;\n return true;\n }\n}\n" + }, + "contracts/oracles/SFraxOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { ISFrax } from \"../interfaces/ISFrax.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\nimport { EXP_SCALE } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\n\n/**\n * @title SFraxOracle\n * @author Venus\n * @notice This oracle fetches the price of sFrax\n */\ncontract SFraxOracle is CorrelatedTokenOracle {\n /// @notice Constructor for the implementation contract.\n constructor(\n address sFrax,\n address frax,\n address resilientOracle,\n uint256 annualGrowthRate,\n uint256 _snapshotInterval,\n uint256 initialSnapshotMaxExchangeRate,\n uint256 initialSnapshotTimestamp,\n address accessControlManager,\n uint256 _snapshotGap\n )\n CorrelatedTokenOracle(\n sFrax,\n frax,\n resilientOracle,\n annualGrowthRate,\n _snapshotInterval,\n initialSnapshotMaxExchangeRate,\n initialSnapshotTimestamp,\n accessControlManager,\n _snapshotGap\n )\n {}\n\n /**\n * @notice Fetches the amount of FRAX for 1 sFrax\n * @return amount The amount of FRAX for sFrax\n */\n function getUnderlyingAmount() public view override returns (uint256) {\n return ISFrax(CORRELATED_TOKEN).convertToAssets(EXP_SCALE);\n }\n}\n" + }, + "contracts/oracles/SFrxETHOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { ISfrxEthFraxOracle } from \"../interfaces/ISfrxEthFraxOracle.sol\";\nimport { ensureNonzeroAddress, ensureNonzeroValue } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\nimport { EXP_SCALE } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\nimport { AccessControlledV8 } from \"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol\";\nimport { OracleInterface } from \"../interfaces/OracleInterface.sol\";\n\n/**\n * @title SFrxETHOracle\n * @author Venus\n * @notice This oracle fetches the price of sfrxETH\n */\ncontract SFrxETHOracle is AccessControlledV8, OracleInterface {\n /// @notice Address of SfrxEthFraxOracle\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n ISfrxEthFraxOracle public immutable SFRXETH_FRAX_ORACLE;\n\n /// @notice Address of sfrxETH\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n address public immutable SFRXETH;\n\n /// @notice Maximum allowed price difference\n uint256 public maxAllowedPriceDifference;\n\n /// @notice Emits when the maximum allowed price difference is updated\n event MaxAllowedPriceDifferenceUpdated(uint256 oldMaxAllowedPriceDifference, uint256 newMaxAllowedPriceDifference);\n\n /// @notice Thrown if the price data is invalid\n error BadPriceData();\n\n /// @notice Thrown if the price difference exceeds the allowed limit\n error PriceDifferenceExceeded();\n\n /// @notice Thrown if the token address is invalid\n error InvalidTokenAddress();\n\n /// @notice Constructor for the implementation contract.\n /// @custom:oz-upgrades-unsafe-allow constructor\n /// @custom:error ZeroAddressNotAllowed is thrown when `_sfrxEthFraxOracle` or `_sfrxETH` are the zero address\n constructor(address _sfrxEthFraxOracle, address _sfrxETH) {\n ensureNonzeroAddress(_sfrxEthFraxOracle);\n ensureNonzeroAddress(_sfrxETH);\n\n SFRXETH_FRAX_ORACLE = ISfrxEthFraxOracle(_sfrxEthFraxOracle);\n SFRXETH = _sfrxETH;\n\n _disableInitializers();\n }\n\n /**\n * @notice Sets the contracts required to fetch prices\n * @param _acm Address of the access control manager contract\n * @param _maxAllowedPriceDifference Maximum allowed price difference\n * @custom:error ZeroValueNotAllowed is thrown if `_maxAllowedPriceDifference` is zero\n */\n function initialize(address _acm, uint256 _maxAllowedPriceDifference) external initializer {\n ensureNonzeroValue(_maxAllowedPriceDifference);\n\n __AccessControlled_init(_acm);\n maxAllowedPriceDifference = _maxAllowedPriceDifference;\n }\n\n /**\n * @notice Sets the maximum allowed price difference\n * @param _maxAllowedPriceDifference Maximum allowed price difference\n * @custom:error ZeroValueNotAllowed is thrown if `_maxAllowedPriceDifference` is zero\n */\n function setMaxAllowedPriceDifference(uint256 _maxAllowedPriceDifference) external {\n _checkAccessAllowed(\"setMaxAllowedPriceDifference(uint256)\");\n ensureNonzeroValue(_maxAllowedPriceDifference);\n\n emit MaxAllowedPriceDifferenceUpdated(maxAllowedPriceDifference, _maxAllowedPriceDifference);\n maxAllowedPriceDifference = _maxAllowedPriceDifference;\n }\n\n /**\n * @notice Fetches the USD price of sfrxETH\n * @param asset Address of the sfrxETH token\n * @return price The price scaled by 1e18\n * @custom:error InvalidTokenAddress is thrown when the `asset` is not the sfrxETH token (`SFRXETH`)\n * @custom:error BadPriceData is thrown if the `SFRXETH_FRAX_ORACLE` oracle informs it has bad data\n * @custom:error ZeroValueNotAllowed is thrown if the prices (low or high, in USD) are zero\n * @custom:error PriceDifferenceExceeded is thrown if priceHigh/priceLow is greater than `maxAllowedPriceDifference`\n */\n function getPrice(address asset) external view returns (uint256) {\n if (asset != SFRXETH) revert InvalidTokenAddress();\n\n (bool isBadData, uint256 priceLow, uint256 priceHigh) = SFRXETH_FRAX_ORACLE.getPrices();\n\n if (isBadData) revert BadPriceData();\n\n // calculate price in USD\n uint256 priceHighInUSD = (EXP_SCALE ** 2) / priceLow;\n uint256 priceLowInUSD = (EXP_SCALE ** 2) / priceHigh;\n\n ensureNonzeroValue(priceHighInUSD);\n ensureNonzeroValue(priceLowInUSD);\n\n // validate price difference\n uint256 difference = (priceHighInUSD * EXP_SCALE) / priceLowInUSD;\n if (difference > maxAllowedPriceDifference) revert PriceDifferenceExceeded();\n\n // calculate and return average price\n return (priceHighInUSD + priceLowInUSD) / 2;\n }\n}\n" + }, + "contracts/oracles/SlisBNBOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { ISynclubStakeManager } from \"../interfaces/ISynclubStakeManager.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\nimport { EXP_SCALE } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\n\n/**\n * @title SlisBNBOracle\n * @author Venus\n * @notice This oracle fetches the price of slisBNB asset\n */\ncontract SlisBNBOracle is CorrelatedTokenOracle {\n /// @notice This is used as token address of BNB on BSC\n address public constant NATIVE_TOKEN_ADDR = 0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB;\n\n /// @notice Address of StakeManager\n ISynclubStakeManager public immutable STAKE_MANAGER;\n\n /// @notice Constructor for the implementation contract.\n constructor(\n address stakeManager,\n address slisBNB,\n address resilientOracle,\n uint256 annualGrowthRate,\n uint256 _snapshotInterval,\n uint256 initialSnapshotMaxExchangeRate,\n uint256 initialSnapshotTimestamp,\n address accessControlManager,\n uint256 _snapshotGap\n )\n CorrelatedTokenOracle(\n slisBNB,\n NATIVE_TOKEN_ADDR,\n resilientOracle,\n annualGrowthRate,\n _snapshotInterval,\n initialSnapshotMaxExchangeRate,\n initialSnapshotTimestamp,\n accessControlManager,\n _snapshotGap\n )\n {\n ensureNonzeroAddress(stakeManager);\n STAKE_MANAGER = ISynclubStakeManager(stakeManager);\n }\n\n /**\n * @notice Fetches the amount of BNB for 1 slisBNB\n * @return amount The amount of BNB for slisBNB\n */\n function getUnderlyingAmount() public view override returns (uint256) {\n return STAKE_MANAGER.convertSnBnbToBnb(EXP_SCALE);\n }\n}\n" + }, + "contracts/oracles/StkBNBOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { IPStakePool } from \"../interfaces/IPStakePool.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\nimport { EXP_SCALE } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\n\n/**\n * @title StkBNBOracle\n * @author Venus\n * @notice This oracle fetches the price of stkBNB asset\n */\ncontract StkBNBOracle is CorrelatedTokenOracle {\n /// @notice This is used as token address of BNB on BSC\n address public constant NATIVE_TOKEN_ADDR = 0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB;\n\n /// @notice Address of StakePool\n IPStakePool public immutable STAKE_POOL;\n\n /// @notice Thrown if the pool token supply is zero\n error PoolTokenSupplyIsZero();\n\n /// @notice Constructor for the implementation contract.\n constructor(\n address stakePool,\n address stkBNB,\n address resilientOracle,\n uint256 annualGrowthRate,\n uint256 _snapshotInterval,\n uint256 initialSnapshotMaxExchangeRate,\n uint256 initialSnapshotTimestamp,\n address accessControlManager,\n uint256 _snapshotGap\n )\n CorrelatedTokenOracle(\n stkBNB,\n NATIVE_TOKEN_ADDR,\n resilientOracle,\n annualGrowthRate,\n _snapshotInterval,\n initialSnapshotMaxExchangeRate,\n initialSnapshotTimestamp,\n accessControlManager,\n _snapshotGap\n )\n {\n ensureNonzeroAddress(stakePool);\n STAKE_POOL = IPStakePool(stakePool);\n }\n\n /**\n * @notice Fetches the amount of BNB for 1 stkBNB\n * @return price The amount of BNB for stkBNB\n * @custom:error PoolTokenSupplyIsZero error is thrown if the pool token supply is zero\n */\n function getUnderlyingAmount() public view override returns (uint256) {\n IPStakePool.Data memory exchangeRateData = STAKE_POOL.exchangeRate();\n\n if (exchangeRateData.poolTokenSupply == 0) {\n revert PoolTokenSupplyIsZero();\n }\n\n return (exchangeRateData.totalWei * EXP_SCALE) / exchangeRateData.poolTokenSupply;\n }\n}\n" + }, + "contracts/oracles/WBETHOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { IWBETH } from \"../interfaces/IWBETH.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\n\n/**\n * @title WBETHOracle\n * @author Venus\n * @notice This oracle fetches the price of wBETH asset\n */\ncontract WBETHOracle is CorrelatedTokenOracle {\n /// @notice Constructor for the implementation contract.\n constructor(\n address wbeth,\n address eth,\n address resilientOracle,\n uint256 annualGrowthRate,\n uint256 _snapshotInterval,\n uint256 initialSnapshotMaxExchangeRate,\n uint256 initialSnapshotTimestamp,\n address accessControlManager,\n uint256 _snapshotGap\n )\n CorrelatedTokenOracle(\n wbeth,\n eth,\n resilientOracle,\n annualGrowthRate,\n _snapshotInterval,\n initialSnapshotMaxExchangeRate,\n initialSnapshotTimestamp,\n accessControlManager,\n _snapshotGap\n )\n {}\n\n /**\n * @notice Fetches the amount of ETH for 1 wBETH\n * @return amount The amount of ETH for wBETH\n */\n function getUnderlyingAmount() public view override returns (uint256) {\n return IWBETH(CORRELATED_TOKEN).exchangeRate();\n }\n}\n" + }, + "contracts/oracles/WeETHAccountantOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\nimport { IAccountant } from \"../interfaces/IAccountant.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\n\n/**\n * @title WeETHAccountantOracle\n * @author Venus\n * @notice This oracle fetches the price of Ether.fi tokens based on an `Accountant` contract (i.e. weETHs and weETHk)\n */\ncontract WeETHAccountantOracle is CorrelatedTokenOracle {\n /// @notice Address of Accountant\n IAccountant public immutable ACCOUNTANT;\n\n /// @notice Constructor for the implementation contract.\n constructor(\n address accountant,\n address weethLRT,\n address weth,\n address resilientOracle,\n uint256 annualGrowthRate,\n uint256 _snapshotInterval,\n uint256 initialSnapshotMaxExchangeRate,\n uint256 initialSnapshotTimestamp,\n address accessControlManager,\n uint256 _snapshotGap\n )\n CorrelatedTokenOracle(\n weethLRT,\n weth,\n resilientOracle,\n annualGrowthRate,\n _snapshotInterval,\n initialSnapshotMaxExchangeRate,\n initialSnapshotTimestamp,\n accessControlManager,\n _snapshotGap\n )\n {\n ensureNonzeroAddress(accountant);\n ACCOUNTANT = IAccountant(accountant);\n }\n\n /**\n * @notice Gets the WETH for 1 weETH LRT\n * @return amount Amount of WETH\n */\n function getUnderlyingAmount() public view override returns (uint256) {\n return ACCOUNTANT.getRateSafe();\n }\n}\n" + }, + "contracts/oracles/WeETHOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\nimport { IEtherFiLiquidityPool } from \"../interfaces/IEtherFiLiquidityPool.sol\";\nimport { EXP_SCALE } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\n\n/**\n * @title WeETHOracle\n * @author Venus\n * @notice This oracle fetches the price of weETH\n */\ncontract WeETHOracle is CorrelatedTokenOracle {\n /// @notice Address of Liqiudity pool\n IEtherFiLiquidityPool public immutable LIQUIDITY_POOL;\n\n /// @notice Constructor for the implementation contract.\n constructor(\n address liquidityPool,\n address weETH,\n address eETH,\n address resilientOracle,\n uint256 annualGrowthRate,\n uint256 _snapshotInterval,\n uint256 initialSnapshotMaxExchangeRate,\n uint256 initialSnapshotTimestamp,\n address accessControlManager,\n uint256 _snapshotGap\n )\n CorrelatedTokenOracle(\n weETH,\n eETH,\n resilientOracle,\n annualGrowthRate,\n _snapshotInterval,\n initialSnapshotMaxExchangeRate,\n initialSnapshotTimestamp,\n accessControlManager,\n _snapshotGap\n )\n {\n ensureNonzeroAddress(liquidityPool);\n LIQUIDITY_POOL = IEtherFiLiquidityPool(liquidityPool);\n }\n\n /**\n * @notice Gets the eETH for 1 weETH\n * @return amount Amount of eETH\n */\n function getUnderlyingAmount() public view override returns (uint256) {\n return LIQUIDITY_POOL.amountForShare(EXP_SCALE);\n }\n}\n" + }, + "contracts/oracles/WstETHOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { OracleInterface } from \"../interfaces/OracleInterface.sol\";\nimport { IStETH } from \"../interfaces/IStETH.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\nimport { EXP_SCALE } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\n\n/**\n * @title WstETHOracle\n * @author Venus\n * @notice Depending on the equivalence flag price is either based on assumption that 1 stETH = 1 ETH\n * or the price of stETH/USD (secondary market price) is obtained from the oracle.\n */\ncontract WstETHOracle is OracleInterface {\n /// @notice A flag assuming 1:1 price equivalence between stETH/ETH\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n bool public immutable ASSUME_STETH_ETH_EQUIVALENCE;\n\n /// @notice Address of stETH\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n IStETH public immutable STETH;\n\n /// @notice Address of wstETH\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n address public immutable WSTETH_ADDRESS;\n\n /// @notice Address of WETH\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n address public immutable WETH_ADDRESS;\n\n /// @notice Address of Resilient Oracle\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n OracleInterface public immutable RESILIENT_ORACLE;\n\n /// @notice Constructor for the implementation contract.\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor(\n address wstETHAddress,\n address wETHAddress,\n address stETHAddress,\n address resilientOracleAddress,\n bool assumeEquivalence\n ) {\n ensureNonzeroAddress(wstETHAddress);\n ensureNonzeroAddress(wETHAddress);\n ensureNonzeroAddress(stETHAddress);\n ensureNonzeroAddress(resilientOracleAddress);\n WSTETH_ADDRESS = wstETHAddress;\n WETH_ADDRESS = wETHAddress;\n STETH = IStETH(stETHAddress);\n RESILIENT_ORACLE = OracleInterface(resilientOracleAddress);\n ASSUME_STETH_ETH_EQUIVALENCE = assumeEquivalence;\n }\n\n /**\n * @notice Gets the USD price of wstETH asset\n * @dev Depending on the equivalence flag price is either based on assumption that 1 stETH = 1 ETH\n * or the price of stETH/USD (secondary market price) is obtained from the oracle\n * @param asset Address of wstETH\n * @return wstETH Price in USD scaled by 1e18\n */\n function getPrice(address asset) public view returns (uint256) {\n if (asset != WSTETH_ADDRESS) revert(\"wrong wstETH address\");\n\n // get stETH amount for 1 wstETH scaled by 1e18\n uint256 stETHAmount = STETH.getPooledEthByShares(1 ether);\n\n // price is scaled 1e18 (oracle returns 36 - asset decimal scale)\n uint256 stETHUSDPrice = RESILIENT_ORACLE.getPrice(ASSUME_STETH_ETH_EQUIVALENCE ? WETH_ADDRESS : address(STETH));\n\n // stETHAmount (for 1 wstETH) * stETHUSDPrice / 1e18\n return (stETHAmount * stETHUSDPrice) / EXP_SCALE;\n }\n}\n" + }, + "contracts/oracles/WstETHOracleV2.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { IStETH } from \"../interfaces/IStETH.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\nimport { EXP_SCALE } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\n\n/**\n * @title WstETHOracleV2\n * @author Venus\n * @notice This oracle fetches the price of wstETH\n */\ncontract WstETHOracleV2 is CorrelatedTokenOracle {\n /// @notice Address of stETH\n IStETH public immutable STETH;\n\n /// @notice Constructor for the implementation contract.\n /// @dev The underlyingToken must be correlated so that 1 underlyingToken is equal to 1 stETH, because\n /// getUnderlyingAmount() implicitly assumes that\n constructor(\n address stETH,\n address wstETH,\n address underlyingToken,\n address resilientOracle,\n uint256 annualGrowthRate,\n uint256 _snapshotInterval,\n uint256 initialSnapshotMaxExchangeRate,\n uint256 initialSnapshotTimestamp,\n address accessControlManager,\n uint256 _snapshotGap\n )\n CorrelatedTokenOracle(\n wstETH,\n underlyingToken,\n resilientOracle,\n annualGrowthRate,\n _snapshotInterval,\n initialSnapshotMaxExchangeRate,\n initialSnapshotTimestamp,\n accessControlManager,\n _snapshotGap\n )\n {\n ensureNonzeroAddress(stETH);\n STETH = IStETH(stETH);\n }\n\n /**\n * @notice Gets the amount of underlyingToken for 1 wstETH, assuming that 1 underlyingToken is equivalent to 1 stETH\n * @return amount Amount of underlyingToken\n */\n function getUnderlyingAmount() public view override returns (uint256) {\n return STETH.getPooledEthByShares(EXP_SCALE);\n }\n}\n" + }, + "contracts/oracles/ZkETHOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { IZkETH } from \"../interfaces/IZkETH.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\n\n/**\n * @title ZkETHOracle\n * @author Venus\n * @notice This oracle fetches the price of zkETH\n */\ncontract ZkETHOracle is CorrelatedTokenOracle {\n /// @notice Constructor for the implementation contract.\n constructor(\n address zkETH,\n address rzkETH,\n address resilientOracle,\n uint256 annualGrowthRate,\n uint256 _snapshotInterval,\n uint256 initialSnapshotMaxExchangeRate,\n uint256 initialSnapshotTimestamp,\n address accessControlManager,\n uint256 _snapshotGap\n )\n CorrelatedTokenOracle(\n zkETH,\n rzkETH,\n resilientOracle,\n annualGrowthRate,\n _snapshotInterval,\n initialSnapshotMaxExchangeRate,\n initialSnapshotTimestamp,\n accessControlManager,\n _snapshotGap\n )\n {}\n\n /**\n * @notice Gets the amount of rzkETH for 1 zkETH\n * @return amount Amount of rzkETH\n */\n function getUnderlyingAmount() public view override returns (uint256) {\n return IZkETH(CORRELATED_TOKEN).LSTPerToken();\n }\n}\n" + }, + "contracts/ReferenceOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\n// SPDX-FileCopyrightText: 2025 Venus\npragma solidity 0.8.25;\n\nimport { Ownable2StepUpgradeable } from \"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\nimport { ResilientOracleInterface, OracleInterface } from \"./interfaces/OracleInterface.sol\";\n\n/**\n * @title ReferenceOracle\n * @author Venus\n * @notice Reference oracle is the oracle that is not used for production but required for\n * price monitoring. This oracle contains some extra configurations for assets required to\n * compute reference prices of their derivative assets (OneJump, ERC4626, Pendle, etc.)\n */\ncontract ReferenceOracle is Ownable2StepUpgradeable, OracleInterface {\n struct ExternalPrice {\n /// @notice asset address\n address asset;\n /// @notice price of the asset from an external source\n uint256 price;\n }\n\n /// @notice Slot to temporarily store price information from external sources\n /// like CMC/Coingecko, useful to compute prices of derivative assets based on\n /// prices of the base assets with no on chain price information\n bytes32 public constant PRICES_SLOT = keccak256(abi.encode(\"venus-protocol/oracle/ReferenceOracle/prices\"));\n\n /// @notice Resilient oracle address\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n ResilientOracleInterface public immutable RESILIENT_ORACLE;\n\n /// @notice Oracle configuration for assets\n mapping(address => OracleInterface) public oracles;\n\n /// @notice Event emitted when an oracle is set\n event OracleConfigured(address indexed asset, address indexed oracle);\n\n /**\n * @notice Constructor for the implementation contract. Sets immutable variables.\n * @param resilientOracle Resilient oracle address\n * @custom:error ZeroAddressNotAllowed is thrown if resilient oracle address is null\n * @custom:oz-upgrades-unsafe-allow constructor\n */\n constructor(ResilientOracleInterface resilientOracle) {\n ensureNonzeroAddress(address(resilientOracle));\n RESILIENT_ORACLE = resilientOracle;\n _disableInitializers();\n }\n\n /**\n * @notice Initializes the contract admin\n */\n function initialize() external initializer {\n __Ownable2Step_init();\n }\n\n /**\n * @notice Sets an oracle to use for a specific asset\n * @dev The production resilientOracle will be used if zero address is passed\n * @param asset Asset address\n * @param oracle Oracle address\n * @custom:access Only owner\n * @custom:error ZeroAddressNotAllowed is thrown if asset address is null\n * @custom:event Emits OracleConfigured event\n */\n function setOracle(address asset, OracleInterface oracle) external onlyOwner {\n ensureNonzeroAddress(asset);\n oracles[asset] = OracleInterface(oracle);\n emit OracleConfigured(asset, address(oracle));\n }\n\n /**\n * @notice Gets price of the asset assuming other assets have the defined price\n * @param asset asset address\n * @param externalPrices an array of prices for other assets\n * @return USD price in scaled decimal places\n */\n function getPriceAssuming(address asset, ExternalPrice[] memory externalPrices) external returns (uint256) {\n uint256 externalPricesCount = externalPrices.length;\n for (uint256 i = 0; i < externalPricesCount; ++i) {\n _storeExternalPrice(externalPrices[i].asset, externalPrices[i].price);\n }\n return _getPrice(asset);\n }\n\n /**\n * @notice Gets price of the asset\n * @param asset asset address\n * @return USD price in scaled decimal places\n */\n function getPrice(address asset) external view override returns (uint256) {\n return _getPrice(asset);\n }\n\n function _storeExternalPrice(address asset, uint256 price) internal {\n bytes32 slot = keccak256(abi.encode(PRICES_SLOT, asset));\n // solhint-disable-next-line no-inline-assembly\n assembly (\"memory-safe\") {\n tstore(slot, price)\n }\n }\n\n function _getPrice(address asset) internal view returns (uint256) {\n uint256 externalPrice = _loadExternalPrice(asset);\n if (externalPrice != 0) {\n return externalPrice;\n }\n OracleInterface oracle = oracles[asset];\n if (oracle != OracleInterface(address(0))) {\n return oracle.getPrice(asset);\n }\n return RESILIENT_ORACLE.getPrice(asset);\n }\n\n function _loadExternalPrice(address asset) internal view returns (uint256 value) {\n bytes32 slot = keccak256(abi.encode(PRICES_SLOT, asset));\n // solhint-disable-next-line no-inline-assembly\n assembly (\"memory-safe\") {\n value := tload(slot)\n }\n }\n}\n" + }, + "contracts/ResilientOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\n// SPDX-FileCopyrightText: 2022 Venus\npragma solidity 0.8.25;\n\nimport { PausableUpgradeable } from \"@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol\";\nimport { VBep20Interface } from \"./interfaces/VBep20Interface.sol\";\nimport { OracleInterface, ResilientOracleInterface, BoundValidatorInterface } from \"./interfaces/OracleInterface.sol\";\nimport { AccessControlledV8 } from \"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol\";\nimport { ICappedOracle } from \"./interfaces/ICappedOracle.sol\";\nimport { Transient } from \"./lib/Transient.sol\";\n\n/**\n * @title ResilientOracle\n * @author Venus\n * @notice The Resilient Oracle is the main contract that the protocol uses to fetch prices of assets.\n *\n * DeFi protocols are vulnerable to price oracle failures including oracle manipulation and incorrectly\n * reported prices. If only one oracle is used, this creates a single point of failure and opens a vector\n * for attacking the protocol.\n *\n * The Resilient Oracle uses multiple sources and fallback mechanisms to provide accurate prices and protect\n * the protocol from oracle attacks.\n *\n * For every market (vToken) we configure the main, pivot and fallback oracles. The oracles are configured per\n * vToken's underlying asset address. The main oracle oracle is the most trustworthy price source, the pivot\n * oracle is used as a loose sanity checker and the fallback oracle is used as a backup price source.\n *\n * To validate prices returned from two oracles, we use an upper and lower bound ratio that is set for every\n * market. The upper bound ratio represents the deviation between reported price (the price that’s being\n * validated) and the anchor price (the price we are validating against) above which the reported price will\n * be invalidated. The lower bound ratio presents the deviation between reported price and anchor price below\n * which the reported price will be invalidated. So for oracle price to be considered valid the below statement\n * should be true:\n\n```\nanchorRatio = anchorPrice/reporterPrice\nisValid = anchorRatio <= upperBoundAnchorRatio && anchorRatio >= lowerBoundAnchorRatio\n```\n\n * In most cases, Chainlink is used as the main oracle, other oracles are used as the pivot oracle depending\n * on which supports the given market and Binance oracle is used as the fallback oracle.\n *\n * For a fetched price to be valid it must be positive and not stagnant. If the price is invalid then we consider the\n * oracle to be stagnant and treat it like it's disabled.\n */\ncontract ResilientOracle is PausableUpgradeable, AccessControlledV8, ResilientOracleInterface {\n /**\n * @dev Oracle roles:\n * **main**: The most trustworthy price source\n * **pivot**: Price oracle used as a loose sanity checker\n * **fallback**: The backup source when main oracle price is invalidated\n */\n enum OracleRole {\n MAIN,\n PIVOT,\n FALLBACK\n }\n\n struct TokenConfig {\n /// @notice asset address\n address asset;\n /// @notice `oracles` stores the oracles based on their role in the following order:\n /// [main, pivot, fallback],\n /// It can be indexed with the corresponding enum OracleRole value\n address[3] oracles;\n /// @notice `enableFlagsForOracles` stores the enabled state\n /// for each oracle in the same order as `oracles`\n bool[3] enableFlagsForOracles;\n /// @notice `cachingEnabled` is a flag that indicates whether the asset price should be cached\n bool cachingEnabled;\n }\n\n uint256 public constant INVALID_PRICE = 0;\n\n /// @notice Native market address\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n address public immutable nativeMarket;\n\n /// @notice VAI address\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n address public immutable vai;\n\n /// @notice Set this as asset address for Native token on each chain.This is the underlying for vBNB (on bsc)\n /// and can serve as any underlying asset of a market that supports native tokens\n address public constant NATIVE_TOKEN_ADDR = 0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB;\n\n /// @notice Slot to cache the asset's price, used for transient storage\n /// custom:storage-location erc7201:venus-protocol/oracle/ResilientOracle/cache\n /// keccak256(abi.encode(uint256(keccak256(\"venus-protocol/oracle/ResilientOracle/cache\")) - 1))\n /// & ~bytes32(uint256(0xff))\n bytes32 public constant CACHE_SLOT = 0x4e99ec55972332f5e0ef9c6623192c0401b609161bffae64d9ccdd7ad6cc7800;\n\n /// @notice Bound validator contract address\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n BoundValidatorInterface public immutable boundValidator;\n\n mapping(address => TokenConfig) private tokenConfigs;\n\n event TokenConfigAdded(\n address indexed asset,\n address indexed mainOracle,\n address indexed pivotOracle,\n address fallbackOracle\n );\n\n /// Event emitted when an oracle is set\n event OracleSet(address indexed asset, address indexed oracle, uint256 indexed role);\n\n /// Event emitted when an oracle is enabled or disabled\n event OracleEnabled(address indexed asset, uint256 indexed role, bool indexed enable);\n\n /// Event emitted when an asset cachingEnabled flag is set\n event CachedEnabled(address indexed asset, bool indexed enabled);\n\n /**\n * @notice Checks whether an address is null or not\n */\n modifier notNullAddress(address someone) {\n if (someone == address(0)) revert(\"can't be zero address\");\n _;\n }\n\n /**\n * @notice Checks whether token config exists by checking whether asset is null address\n * @dev address can't be null, so it's suitable to be used to check the validity of the config\n * @param asset asset address\n */\n modifier checkTokenConfigExistence(address asset) {\n if (tokenConfigs[asset].asset == address(0)) revert(\"token config must exist\");\n _;\n }\n\n /// @notice Constructor for the implementation contract. Sets immutable variables.\n /// @dev nativeMarketAddress can be address(0) if on the chain we do not support native market\n /// (e.g vETH on ethereum would not be supported, only vWETH)\n /// @param nativeMarketAddress The address of a native market (for bsc it would be vBNB address)\n /// @param vaiAddress The address of the VAI token (if there is VAI on the deployed chain).\n /// Set to address(0) of VAI is not existent.\n /// @param _boundValidator Address of the bound validator contract\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor(\n address nativeMarketAddress,\n address vaiAddress,\n BoundValidatorInterface _boundValidator\n ) notNullAddress(address(_boundValidator)) {\n nativeMarket = nativeMarketAddress;\n vai = vaiAddress;\n boundValidator = _boundValidator;\n\n _disableInitializers();\n }\n\n /**\n * @notice Initializes the contract admin and sets the BoundValidator contract address\n * @param accessControlManager_ Address of the access control manager contract\n */\n function initialize(address accessControlManager_) external initializer {\n __AccessControlled_init(accessControlManager_);\n __Pausable_init();\n }\n\n /**\n * @notice Pauses oracle\n * @custom:access Only Governance\n */\n function pause() external {\n _checkAccessAllowed(\"pause()\");\n _pause();\n }\n\n /**\n * @notice Unpauses oracle\n * @custom:access Only Governance\n */\n function unpause() external {\n _checkAccessAllowed(\"unpause()\");\n _unpause();\n }\n\n /**\n * @notice Batch sets token configs\n * @param tokenConfigs_ Token config array\n * @custom:access Only Governance\n * @custom:error Throws a length error if the length of the token configs array is 0\n */\n function setTokenConfigs(TokenConfig[] memory tokenConfigs_) external {\n if (tokenConfigs_.length == 0) revert(\"length can't be 0\");\n uint256 numTokenConfigs = tokenConfigs_.length;\n for (uint256 i; i < numTokenConfigs; ++i) {\n setTokenConfig(tokenConfigs_[i]);\n }\n }\n\n /**\n * @notice Sets oracle for a given asset and role.\n * @dev Supplied asset **must** exist and main oracle may not be null\n * @param asset Asset address\n * @param oracle Oracle address\n * @param role Oracle role\n * @custom:access Only Governance\n * @custom:error Null address error if main-role oracle address is null\n * @custom:error NotNullAddress error is thrown if asset address is null\n * @custom:error TokenConfigExistance error is thrown if token config is not set\n * @custom:event Emits OracleSet event with asset address, oracle address and role of the oracle for the asset\n */\n function setOracle(\n address asset,\n address oracle,\n OracleRole role\n ) external notNullAddress(asset) checkTokenConfigExistence(asset) {\n _checkAccessAllowed(\"setOracle(address,address,uint8)\");\n if (oracle == address(0) && role == OracleRole.MAIN) revert(\"can't set zero address to main oracle\");\n tokenConfigs[asset].oracles[uint256(role)] = oracle;\n emit OracleSet(asset, oracle, uint256(role));\n }\n\n /**\n * @notice Enables/ disables oracle for the input asset. Token config for the input asset **must** exist\n * @dev Configuration for the asset **must** already exist and the asset cannot be 0 address\n * @param asset Asset address\n * @param role Oracle role\n * @param enable Enabled boolean of the oracle\n * @custom:access Only Governance\n * @custom:error NotNullAddress error is thrown if asset address is null\n * @custom:error TokenConfigExistance error is thrown if token config is not set\n * @custom:event Emits OracleEnabled event with asset address, role of the oracle and enabled flag\n */\n function enableOracle(\n address asset,\n OracleRole role,\n bool enable\n ) external notNullAddress(asset) checkTokenConfigExistence(asset) {\n _checkAccessAllowed(\"enableOracle(address,uint8,bool)\");\n tokenConfigs[asset].enableFlagsForOracles[uint256(role)] = enable;\n emit OracleEnabled(asset, uint256(role), enable);\n }\n\n /**\n * @notice Updates the capped main oracle snapshot.\n * @dev This function should always be called before calling getUnderlyingPrice\n * @param vToken vToken address\n */\n function updatePrice(address vToken) external override {\n address asset = _getUnderlyingAsset(vToken);\n _updateAssetPrice(asset);\n }\n\n /**\n * @notice Updates the capped main oracle snapshot.\n * @dev This function should always be called before calling getPrice\n * @param asset asset address\n */\n function updateAssetPrice(address asset) external {\n _updateAssetPrice(asset);\n }\n\n /**\n * @dev Gets token config by asset address\n * @param asset asset address\n * @return tokenConfig Config for the asset\n */\n function getTokenConfig(address asset) external view returns (TokenConfig memory) {\n return tokenConfigs[asset];\n }\n\n /**\n * @notice Gets price of the underlying asset for a given vToken. Validation flow:\n * - Check if the oracle is paused globally\n * - Validate price from main oracle against pivot oracle\n * - Validate price from fallback oracle against pivot oracle if the first validation failed\n * - Validate price from main oracle against fallback oracle if the second validation failed\n * In the case that the pivot oracle is not available but main price is available and validation is successful,\n * main oracle price is returned.\n * @param vToken vToken address\n * @return price USD price in scaled decimal places.\n * @custom:error Paused error is thrown when resilent oracle is paused\n * @custom:error Invalid resilient oracle price error is thrown if fetched prices from oracle is invalid\n */\n function getUnderlyingPrice(address vToken) external view override returns (uint256) {\n if (paused()) revert(\"resilient oracle is paused\");\n\n address asset = _getUnderlyingAsset(vToken);\n return _getPrice(asset);\n }\n\n /**\n * @notice Gets price of the asset\n * @param asset asset address\n * @return price USD price in scaled decimal places.\n * @custom:error Paused error is thrown when resilent oracle is paused\n * @custom:error Invalid resilient oracle price error is thrown if fetched prices from oracle is invalid\n */\n function getPrice(address asset) external view override returns (uint256) {\n if (paused()) revert(\"resilient oracle is paused\");\n return _getPrice(asset);\n }\n\n /**\n * @notice Sets/resets single token configs.\n * @dev main oracle **must not** be a null address\n * @param tokenConfig Token config struct\n * @custom:access Only Governance\n * @custom:error NotNullAddress is thrown if asset address is null\n * @custom:error NotNullAddress is thrown if main-role oracle address for asset is null\n * @custom:event Emits TokenConfigAdded event when the asset config is set successfully by the authorized account\n * @custom:event Emits CachedEnabled event when the asset cachingEnabled flag is set successfully\n */\n function setTokenConfig(\n TokenConfig memory tokenConfig\n ) public notNullAddress(tokenConfig.asset) notNullAddress(tokenConfig.oracles[uint256(OracleRole.MAIN)]) {\n _checkAccessAllowed(\"setTokenConfig(TokenConfig)\");\n\n tokenConfigs[tokenConfig.asset] = tokenConfig;\n emit TokenConfigAdded(\n tokenConfig.asset,\n tokenConfig.oracles[uint256(OracleRole.MAIN)],\n tokenConfig.oracles[uint256(OracleRole.PIVOT)],\n tokenConfig.oracles[uint256(OracleRole.FALLBACK)]\n );\n emit CachedEnabled(tokenConfig.asset, tokenConfig.cachingEnabled);\n }\n\n /**\n * @notice Gets oracle and enabled status by asset address\n * @param asset asset address\n * @param role Oracle role\n * @return oracle Oracle address based on role\n * @return enabled Enabled flag of the oracle based on token config\n */\n function getOracle(address asset, OracleRole role) public view returns (address oracle, bool enabled) {\n oracle = tokenConfigs[asset].oracles[uint256(role)];\n enabled = tokenConfigs[asset].enableFlagsForOracles[uint256(role)];\n }\n\n /**\n * @notice Updates the capped oracle snapshot.\n * @dev Cache the asset price and return if already cached\n * @param asset asset address\n */\n function _updateAssetPrice(address asset) internal {\n if (Transient.readCachedPrice(CACHE_SLOT, asset) != 0) {\n return;\n }\n\n (address mainOracle, bool mainOracleEnabled) = getOracle(asset, OracleRole.MAIN);\n if (mainOracle != address(0) && mainOracleEnabled) {\n // if main oracle is not CorrelatedTokenOracle it will revert so we need to catch the revert\n try ICappedOracle(mainOracle).updateSnapshot() {} catch {}\n }\n\n if (_isCacheEnabled(asset)) {\n uint256 price = _getPrice(asset);\n Transient.cachePrice(CACHE_SLOT, asset, price);\n }\n }\n\n /**\n * @notice Gets price for the provided asset\n * @param asset asset address\n * @return price USD price in scaled decimal places.\n * @custom:error Invalid resilient oracle price error is thrown if fetched prices from oracle is invalid\n */\n function _getPrice(address asset) internal view returns (uint256) {\n uint256 pivotPrice = INVALID_PRICE;\n uint256 price;\n\n price = Transient.readCachedPrice(CACHE_SLOT, asset);\n if (price != 0) {\n return price;\n }\n\n // Get pivot oracle price, Invalid price if not available or error\n (address pivotOracle, bool pivotOracleEnabled) = getOracle(asset, OracleRole.PIVOT);\n if (pivotOracleEnabled && pivotOracle != address(0)) {\n try OracleInterface(pivotOracle).getPrice(asset) returns (uint256 pricePivot) {\n pivotPrice = pricePivot;\n } catch {}\n }\n\n // Compare main price and pivot price, return main price and if validation was successful\n // note: In case pivot oracle is not available but main price is available and\n // validation is successful, the main oracle price is returned.\n (uint256 mainPrice, bool validatedPivotMain) = _getMainOraclePrice(\n asset,\n pivotPrice,\n pivotOracleEnabled && pivotOracle != address(0)\n );\n if (mainPrice != INVALID_PRICE && validatedPivotMain) return mainPrice;\n\n // Compare fallback and pivot if main oracle comparision fails with pivot\n // Return fallback price when fallback price is validated successfully with pivot oracle\n (uint256 fallbackPrice, bool validatedPivotFallback) = _getFallbackOraclePrice(asset, pivotPrice);\n if (fallbackPrice != INVALID_PRICE && validatedPivotFallback) return fallbackPrice;\n\n // Lastly compare main price and fallback price\n if (\n mainPrice != INVALID_PRICE &&\n fallbackPrice != INVALID_PRICE &&\n boundValidator.validatePriceWithAnchorPrice(asset, mainPrice, fallbackPrice)\n ) {\n return mainPrice;\n }\n\n revert(\"invalid resilient oracle price\");\n }\n\n /**\n * @notice Gets a price for the provided asset\n * @dev This function won't revert when price is 0, because the fallback oracle may still be\n * able to fetch a correct price\n * @param asset asset address\n * @param pivotPrice Pivot oracle price\n * @param pivotEnabled If pivot oracle is not empty and enabled\n * @return price USD price in scaled decimals\n * e.g. asset decimals is 8 then price is returned as 10**18 * 10**(18-8) = 10**28 decimals\n * @return pivotValidated Boolean representing if the validation of main oracle price\n * and pivot oracle price were successful\n * @custom:error Invalid price error is thrown if main oracle fails to fetch price of the asset\n * @custom:error Invalid price error is thrown if main oracle is not enabled or main oracle\n * address is null\n */\n function _getMainOraclePrice(\n address asset,\n uint256 pivotPrice,\n bool pivotEnabled\n ) internal view returns (uint256, bool) {\n (address mainOracle, bool mainOracleEnabled) = getOracle(asset, OracleRole.MAIN);\n if (mainOracleEnabled && mainOracle != address(0)) {\n try OracleInterface(mainOracle).getPrice(asset) returns (uint256 mainOraclePrice) {\n if (!pivotEnabled) {\n return (mainOraclePrice, true);\n }\n if (pivotPrice == INVALID_PRICE) {\n return (mainOraclePrice, false);\n }\n return (\n mainOraclePrice,\n boundValidator.validatePriceWithAnchorPrice(asset, mainOraclePrice, pivotPrice)\n );\n } catch {\n return (INVALID_PRICE, false);\n }\n }\n\n return (INVALID_PRICE, false);\n }\n\n /**\n * @dev This function won't revert when the price is 0 because getPrice checks if price is > 0\n * @param asset asset address\n * @return price USD price in 18 decimals\n * @return pivotValidated Boolean representing if the validation of fallback oracle price\n * and pivot oracle price were successfully\n * @custom:error Invalid price error is thrown if fallback oracle fails to fetch price of the asset\n * @custom:error Invalid price error is thrown if fallback oracle is not enabled or fallback oracle\n * address is null\n */\n function _getFallbackOraclePrice(address asset, uint256 pivotPrice) private view returns (uint256, bool) {\n (address fallbackOracle, bool fallbackEnabled) = getOracle(asset, OracleRole.FALLBACK);\n if (fallbackEnabled && fallbackOracle != address(0)) {\n try OracleInterface(fallbackOracle).getPrice(asset) returns (uint256 fallbackOraclePrice) {\n if (pivotPrice == INVALID_PRICE) {\n return (fallbackOraclePrice, false);\n }\n return (\n fallbackOraclePrice,\n boundValidator.validatePriceWithAnchorPrice(asset, fallbackOraclePrice, pivotPrice)\n );\n } catch {\n return (INVALID_PRICE, false);\n }\n }\n\n return (INVALID_PRICE, false);\n }\n\n /**\n * @dev This function returns the underlying asset of a vToken\n * @param vToken vToken address\n * @return asset underlying asset address\n */\n function _getUnderlyingAsset(address vToken) private view notNullAddress(vToken) returns (address asset) {\n if (vToken == nativeMarket) {\n asset = NATIVE_TOKEN_ADDR;\n } else if (vToken == vai) {\n asset = vai;\n } else {\n asset = VBep20Interface(vToken).underlying();\n }\n }\n\n /**\n * @dev This function checks if the asset price should be cached\n * @param asset asset address\n * @return bool true if caching is enabled, false otherwise\n */\n function _isCacheEnabled(address asset) private view returns (bool) {\n return tokenConfigs[asset].cachingEnabled;\n }\n}\n" + }, + "contracts/test/BEP20Harness.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\ncontract BEP20Harness is ERC20 {\n uint8 public decimalsInternal = 18;\n\n constructor(string memory name_, string memory symbol_, uint8 decimals_) ERC20(name_, symbol_) {\n decimalsInternal = decimals_;\n }\n\n function faucet(uint256 amount) external {\n _mint(msg.sender, amount);\n }\n\n function decimals() public view virtual override returns (uint8) {\n return decimalsInternal;\n }\n}\n" + }, + "contracts/test/MockAnkrBNB.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.0;\n\nimport { ERC20 } from \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport { IAnkrBNB } from \"../interfaces/IAnkrBNB.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\ncontract MockAnkrBNB is ERC20, Ownable, IAnkrBNB {\n uint8 private immutable _decimals;\n uint256 public exchangeRate;\n\n constructor(string memory name_, string memory symbol_, uint8 decimals_) ERC20(name_, symbol_) Ownable() {\n _decimals = decimals_;\n }\n\n function faucet(uint256 amount) external {\n _mint(msg.sender, amount);\n }\n\n function setSharesToBonds(uint256 rate) external onlyOwner {\n exchangeRate = rate;\n }\n\n function sharesToBonds(uint256 amount) external view override returns (uint256) {\n return (amount * exchangeRate) / (10 ** uint256(_decimals));\n }\n\n function decimals() public view virtual override(ERC20, IAnkrBNB) returns (uint8) {\n return _decimals;\n }\n}\n" + }, + "contracts/test/MockAsBNB.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.0;\n\nimport { ERC20 } from \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport { IAsBNB } from \"../interfaces/IAsBNB.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\ncontract MockAsBNB is ERC20, Ownable, IAsBNB {\n uint8 private immutable _decimals;\n address public minter;\n\n constructor(\n string memory name_,\n string memory symbol_,\n uint8 decimals_,\n address minter_\n ) ERC20(name_, symbol_) Ownable() {\n _decimals = decimals_;\n minter = minter_;\n }\n\n function faucet(uint256 amount) external {\n _mint(msg.sender, amount);\n }\n\n function setMinter(address minter_) external onlyOwner {\n minter = minter_;\n }\n\n function decimals() public view virtual override(ERC20, IAsBNB) returns (uint8) {\n return _decimals;\n }\n}\n" + }, + "contracts/test/MockAsBNBMinter.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.0;\n\nimport { IAsBNBMinter } from \"../interfaces/IAsBNBMinter.sol\";\n\ncontract MockAsBNBMinter is IAsBNBMinter {\n function convertToTokens(uint256 _amount) external pure override returns (uint256) {\n return _amount;\n }\n}\n" + }, + "contracts/test/MockCallPrice.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.0;\n\nimport { OracleInterface, ResilientOracleInterface } from \"../interfaces/OracleInterface.sol\";\n\ninterface CorrelatedTokenOracleInterface {\n function updateSnapshot() external;\n function getPrice(address asset) external view returns (uint256);\n}\n\ncontract MockCallPrice {\n function getMultiPrice(CorrelatedTokenOracleInterface oracle, address asset) public returns (uint256, uint256) {\n oracle.updateSnapshot();\n return (oracle.getPrice(asset), oracle.getPrice(asset));\n }\n\n function getUnderlyingPriceResilientOracle(\n ResilientOracleInterface oracle,\n address vToken\n ) public returns (uint256, uint256) {\n oracle.updatePrice(vToken);\n oracle.updatePrice(vToken);\n return (oracle.getUnderlyingPrice(vToken), oracle.getUnderlyingPrice(vToken));\n }\n\n function getAssetPriceResilientOracle(\n ResilientOracleInterface oracle,\n address asset\n ) public returns (uint256, uint256) {\n oracle.updateAssetPrice(asset);\n oracle.updateAssetPrice(asset);\n return (oracle.getPrice(asset), oracle.getPrice(asset));\n }\n}\n" + }, + "contracts/test/MockEtherFiLiquidityPool.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"../interfaces/IEtherFiLiquidityPool.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\ncontract MockEtherFiLiquidityPool is IEtherFiLiquidityPool, Ownable {\n /// @notice The amount of eETH per weETH scaled by 1e18\n uint256 public amountPerShare;\n\n constructor() Ownable() {}\n\n function setAmountPerShare(uint256 _amountPerShare) external onlyOwner {\n amountPerShare = _amountPerShare;\n }\n\n function amountForShare(uint256 _share) external view override returns (uint256) {\n return (_share * amountPerShare) / 1e18;\n }\n}\n" + }, + "contracts/test/MockSFrax.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.0;\n\nimport { ERC20 } from \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport { ISFrax } from \"../interfaces/ISFrax.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\ncontract MockSFrax is ERC20, Ownable, ISFrax {\n uint8 private immutable _decimals;\n uint256 public exchangeRate;\n\n constructor(string memory name_, string memory symbol_, uint8 decimals_) ERC20(name_, symbol_) Ownable() {\n _decimals = decimals_;\n }\n\n function faucet(uint256 amount) external {\n _mint(msg.sender, amount);\n }\n\n function setRate(uint256 rate) external onlyOwner {\n exchangeRate = rate;\n }\n\n function convertToAssets(uint256 shares) external view override returns (uint256) {\n return (shares * exchangeRate) / (10 ** uint256(_decimals));\n }\n\n function decimals() public view virtual override(ERC20, ISFrax) returns (uint8) {\n return _decimals;\n }\n}\n" + }, + "contracts/test/MockSimpleOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"../interfaces/OracleInterface.sol\";\n\ncontract MockSimpleOracle is OracleInterface {\n mapping(address => uint256) public prices;\n\n constructor() {\n //\n }\n\n function getUnderlyingPrice(address vToken) external view returns (uint256) {\n return prices[vToken];\n }\n\n function getPrice(address asset) external view returns (uint256) {\n return prices[asset];\n }\n\n function setPrice(address vToken, uint256 price) public {\n prices[vToken] = price;\n }\n}\n\ncontract MockBoundValidator is BoundValidatorInterface {\n mapping(address => bool) public validateResults;\n bool public twapUpdated;\n\n constructor() {\n //\n }\n\n function validatePriceWithAnchorPrice(\n address vToken,\n uint256 reporterPrice,\n uint256 anchorPrice\n ) external view returns (bool) {\n return validateResults[vToken];\n }\n\n function validateAssetPriceWithAnchorPrice(\n address asset,\n uint256 reporterPrice,\n uint256 anchorPrice\n ) external view returns (bool) {\n return validateResults[asset];\n }\n\n function setValidateResult(address token, bool pass) public {\n validateResults[token] = pass;\n }\n}\n" + }, + "contracts/test/MockV3Aggregator.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"@chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol\";\n\n/**\n * @title MockV3Aggregator\n * @notice Based on the FluxAggregator contract\n * @notice Use this contract when you need to test\n * other contract's ability to read data from an\n * aggregator contract, but how the aggregator got\n * its answer is unimportant\n */\ncontract MockV3Aggregator is AggregatorV2V3Interface {\n uint256 public constant version = 0;\n\n uint8 public decimals;\n int256 public latestAnswer;\n uint256 public latestTimestamp;\n uint256 public latestRound;\n\n mapping(uint256 => int256) public getAnswer;\n mapping(uint256 => uint256) public getTimestamp;\n mapping(uint256 => uint256) private getStartedAt;\n\n constructor(uint8 _decimals, int256 _initialAnswer) {\n decimals = _decimals;\n updateAnswer(_initialAnswer);\n }\n\n function getRoundData(\n uint80 _roundId\n )\n external\n view\n returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound)\n {\n return (_roundId, getAnswer[_roundId], getStartedAt[_roundId], getTimestamp[_roundId], _roundId);\n }\n\n function latestRoundData()\n external\n view\n returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound)\n {\n return (\n uint80(latestRound),\n getAnswer[latestRound],\n getStartedAt[latestRound],\n getTimestamp[latestRound],\n uint80(latestRound)\n );\n }\n\n function description() external pure returns (string memory) {\n return \"v0.6/tests/MockV3Aggregator.sol\";\n }\n\n function updateAnswer(int256 _answer) public {\n latestAnswer = _answer;\n latestTimestamp = block.timestamp;\n latestRound++;\n getAnswer[latestRound] = _answer;\n getTimestamp[latestRound] = block.timestamp;\n getStartedAt[latestRound] = block.timestamp;\n }\n\n function updateRoundData(uint80 _roundId, int256 _answer, uint256 _timestamp, uint256 _startedAt) public {\n latestRound = _roundId;\n latestAnswer = _answer;\n latestTimestamp = _timestamp;\n getAnswer[latestRound] = _answer;\n getTimestamp[latestRound] = _timestamp;\n getStartedAt[latestRound] = _startedAt;\n }\n}\n" + }, + "contracts/test/MockWBETH.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.0;\n\nimport { ERC20 } from \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport { IWBETH } from \"../interfaces/IWBETH.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\ncontract MockWBETH is ERC20, Ownable, IWBETH {\n uint8 private immutable _decimals;\n uint256 public override exchangeRate;\n\n constructor(string memory name_, string memory symbol_, uint8 decimals_) ERC20(name_, symbol_) Ownable() {\n _decimals = decimals_;\n }\n\n function faucet(uint256 amount) external {\n _mint(msg.sender, amount);\n }\n\n function setExchangeRate(uint256 rate) external onlyOwner {\n exchangeRate = rate;\n }\n\n function decimals() public view virtual override(ERC20, IWBETH) returns (uint8) {\n return _decimals;\n }\n}\n" + }, + "contracts/test/oracles/MockCorrelatedTokenOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { CorrelatedTokenOracle } from \"../../oracles/common/CorrelatedTokenOracle.sol\";\n\ncontract MockCorrelatedTokenOracle is CorrelatedTokenOracle {\n uint256 public mockUnderlyingAmount;\n\n constructor(\n address correlatedToken,\n address underlyingToken,\n address resilientOracle,\n uint256 annualGrowthRate,\n uint256 snapshotInterval,\n uint256 initialSnapshotMaxExchangeRate,\n uint256 initialSnapshotTimestamp,\n address accessControlManager,\n uint256 snapshotGap\n )\n CorrelatedTokenOracle(\n correlatedToken,\n underlyingToken,\n resilientOracle,\n annualGrowthRate,\n snapshotInterval,\n initialSnapshotMaxExchangeRate,\n initialSnapshotTimestamp,\n accessControlManager,\n snapshotGap\n )\n {}\n\n function setMockUnderlyingAmount(uint256 amount) external {\n mockUnderlyingAmount = amount;\n }\n\n function getUnderlyingAmount() public view override returns (uint256) {\n return mockUnderlyingAmount;\n }\n}\n" + }, + "contracts/test/oracles/MockERC20.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\ncontract MockERC20 is ERC20 {\n constructor(string memory name, string memory symbol, uint8 decimals) ERC20(name, symbol) {\n _mint(msg.sender, 100000 * 10 ** uint256(decimals));\n }\n}\n" + }, + "contracts/test/oracles/MockResilientOracle.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"../../interfaces/OracleInterface.sol\";\n\ncontract MockOracle is OracleInterface {\n mapping(address => uint256) public prices;\n\n function getPrice(address asset) external view returns (uint256) {\n return prices[asset];\n }\n\n function setPrice(address vToken, uint256 price) public {\n prices[vToken] = price;\n }\n}\n" + }, + "contracts/test/PancakePairHarness.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\n// a library for performing various math operations\n\nlibrary Math {\n function min(uint256 x, uint256 y) internal pure returns (uint256 z) {\n z = x < y ? x : y;\n }\n\n // babylonian method (https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method)\n function sqrt(uint256 y) internal pure returns (uint256 z) {\n if (y > 3) {\n z = y;\n uint256 x = y / 2 + 1;\n while (x < z) {\n z = x;\n x = (y / x + x) / 2;\n }\n } else if (y != 0) {\n z = 1;\n }\n }\n}\n\n// range: [0, 2**112 - 1]\n// resolution: 1 / 2**112\n\nlibrary UQ112x112 {\n //solhint-disable-next-line state-visibility\n uint224 constant Q112 = 2 ** 112;\n\n // encode a uint112 as a UQ112x112\n function encode(uint112 y) internal pure returns (uint224 z) {\n z = uint224(y) * Q112; // never overflows\n }\n\n // divide a UQ112x112 by a uint112, returning a UQ112x112\n function uqdiv(uint224 x, uint112 y) internal pure returns (uint224 z) {\n z = x / uint224(y);\n }\n}\n\ncontract PancakePairHarness {\n using UQ112x112 for uint224;\n\n address public token0;\n address public token1;\n\n uint112 private reserve0; // uses single storage slot, accessible via getReserves\n uint112 private reserve1; // uses single storage slot, accessible via getReserves\n uint32 private blockTimestampLast; // uses single storage slot, accessible via getReserves\n\n uint256 public price0CumulativeLast;\n uint256 public price1CumulativeLast;\n uint256 public kLast; // reserve0 * reserve1, as of immediately after the most recent liquidity event\n\n // called once by the factory at time of deployment\n function initialize(address _token0, address _token1) external {\n token0 = _token0;\n token1 = _token1;\n }\n\n // update reserves and, on the first call per block, price accumulators\n function update(uint256 balance0, uint256 balance1, uint112 _reserve0, uint112 _reserve1) external {\n require(balance0 <= type(uint112).max && balance1 <= type(uint112).max, \"PancakeV2: OVERFLOW\");\n uint32 blockTimestamp = uint32(block.timestamp % 2 ** 32);\n unchecked {\n uint32 timeElapsed = blockTimestamp - blockTimestampLast; // overflow is desired\n if (timeElapsed > 0 && _reserve0 != 0 && _reserve1 != 0) {\n // * never overflows, and + overflow is desired\n price0CumulativeLast += uint256(UQ112x112.encode(_reserve1).uqdiv(_reserve0)) * timeElapsed;\n price1CumulativeLast += uint256(UQ112x112.encode(_reserve0).uqdiv(_reserve1)) * timeElapsed;\n }\n }\n reserve0 = uint112(balance0);\n reserve1 = uint112(balance1);\n blockTimestampLast = blockTimestamp;\n }\n\n function currentBlockTimestamp() external view returns (uint32) {\n return uint32(block.timestamp % 2 ** 32);\n }\n\n function getReserves() public view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) {\n _reserve0 = reserve0;\n _reserve1 = reserve1;\n _blockTimestampLast = blockTimestampLast;\n }\n}\n" + }, + "contracts/test/VBEP20Harness.sol": { + "content": "// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"./BEP20Harness.sol\";\n\ncontract VBEP20Harness is BEP20Harness {\n /**\n * @notice Underlying asset for this VToken\n */\n address public underlying;\n\n constructor(\n string memory name_,\n string memory symbol_,\n uint8 decimals,\n address underlying_\n ) BEP20Harness(name_, symbol_, decimals) {\n underlying = underlying_;\n }\n}\n" + }, + "hardhat-deploy/solc_0.8/openzeppelin/access/Ownable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable is Context {\n address private _owner;\n\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n /**\n * @dev Initializes the contract setting the deployer as the initial owner.\n */\n constructor (address initialOwner) {\n _transferOwnership(initialOwner);\n }\n\n /**\n * @dev Returns the address of the current owner.\n */\n function owner() public view virtual returns (address) {\n return _owner;\n }\n\n /**\n * @dev Throws if called by any account other than the owner.\n */\n modifier onlyOwner() {\n require(owner() == _msgSender(), \"Ownable: caller is not the owner\");\n _;\n }\n\n /**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions anymore. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby removing any functionality that is only available to the owner.\n */\n function renounceOwnership() public virtual onlyOwner {\n _transferOwnership(address(0));\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public virtual onlyOwner {\n require(newOwner != address(0), \"Ownable: new owner is the zero address\");\n _transferOwnership(newOwner);\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Internal function without access restriction.\n */\n function _transferOwnership(address newOwner) internal virtual {\n address oldOwner = _owner;\n _owner = newOwner;\n emit OwnershipTransferred(oldOwner, newOwner);\n }\n}\n" + }, + "hardhat-deploy/solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (interfaces/draft-IERC1822.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n * proxy whose upgrades are fully controlled by the current implementation.\n */\ninterface IERC1822Proxiable {\n /**\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\n * address.\n *\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n * function revert if invoked through a proxy.\n */\n function proxiableUUID() external view returns (bytes32);\n}\n" + }, + "hardhat-deploy/solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\n */\ninterface IBeacon {\n /**\n * @dev Must return an address that can be used as a delegate call target.\n *\n * {BeaconProxy} will check that this address is a contract.\n */\n function implementation() external view returns (address);\n}\n" + }, + "hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (proxy/ERC1967/ERC1967Proxy.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../Proxy.sol\";\nimport \"./ERC1967Upgrade.sol\";\n\n/**\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\n * implementation address that can be changed. This address is stored in storage in the location specified by\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\n * implementation behind the proxy.\n */\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\n /**\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\n *\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\n * function call, and allows initializating the storage of the proxy like a Solidity constructor.\n */\n constructor(address _logic, bytes memory _data) payable {\n assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256(\"eip1967.proxy.implementation\")) - 1));\n _upgradeToAndCall(_logic, _data, false);\n }\n\n /**\n * @dev Returns the current implementation address.\n */\n function _implementation() internal view virtual override returns (address impl) {\n return ERC1967Upgrade._getImplementation();\n }\n}\n" + }, + "hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/ERC1967/ERC1967Upgrade.sol)\n\npragma solidity ^0.8.2;\n\nimport \"../beacon/IBeacon.sol\";\nimport \"../../interfaces/draft-IERC1822.sol\";\nimport \"../../utils/Address.sol\";\nimport \"../../utils/StorageSlot.sol\";\n\n/**\n * @dev This abstract contract provides getters and event emitting update functions for\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\n *\n * _Available since v4.1._\n *\n * @custom:oz-upgrades-unsafe-allow delegatecall\n */\nabstract contract ERC1967Upgrade {\n // This is the keccak-256 hash of \"eip1967.proxy.rollback\" subtracted by 1\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\n\n /**\n * @dev Storage slot with the address of the current implementation.\n * This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is\n * validated in the constructor.\n */\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n\n /**\n * @dev Emitted when the implementation is upgraded.\n */\n event Upgraded(address indexed implementation);\n\n /**\n * @dev Returns the current implementation address.\n */\n function _getImplementation() internal view returns (address) {\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n }\n\n /**\n * @dev Stores a new address in the EIP1967 implementation slot.\n */\n function _setImplementation(address newImplementation) private {\n require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n }\n\n /**\n * @dev Perform implementation upgrade\n *\n * Emits an {Upgraded} event.\n */\n function _upgradeTo(address newImplementation) internal {\n _setImplementation(newImplementation);\n emit Upgraded(newImplementation);\n }\n\n /**\n * @dev Perform implementation upgrade with additional setup call.\n *\n * Emits an {Upgraded} event.\n */\n function _upgradeToAndCall(\n address newImplementation,\n bytes memory data,\n bool forceCall\n ) internal {\n _upgradeTo(newImplementation);\n if (data.length > 0 || forceCall) {\n Address.functionDelegateCall(newImplementation, data);\n }\n }\n\n /**\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\n *\n * Emits an {Upgraded} event.\n */\n function _upgradeToAndCallUUPS(\n address newImplementation,\n bytes memory data,\n bool forceCall\n ) internal {\n // Upgrades from old implementations will perform a rollback test. This test requires the new\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\n // this special case will break upgrade paths from old UUPS implementation to new ones.\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\n _setImplementation(newImplementation);\n } else {\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\n require(slot == _IMPLEMENTATION_SLOT, \"ERC1967Upgrade: unsupported proxiableUUID\");\n } catch {\n revert(\"ERC1967Upgrade: new implementation is not UUPS\");\n }\n _upgradeToAndCall(newImplementation, data, forceCall);\n }\n }\n\n /**\n * @dev Storage slot with the admin of the contract.\n * This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is\n * validated in the constructor.\n */\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\n\n /**\n * @dev Emitted when the admin account has changed.\n */\n event AdminChanged(address previousAdmin, address newAdmin);\n\n /**\n * @dev Returns the current admin.\n */\n function _getAdmin() internal view virtual returns (address) {\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\n }\n\n /**\n * @dev Stores a new address in the EIP1967 admin slot.\n */\n function _setAdmin(address newAdmin) private {\n require(newAdmin != address(0), \"ERC1967: new admin is the zero address\");\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\n }\n\n /**\n * @dev Changes the admin of the proxy.\n *\n * Emits an {AdminChanged} event.\n */\n function _changeAdmin(address newAdmin) internal {\n emit AdminChanged(_getAdmin(), newAdmin);\n _setAdmin(newAdmin);\n }\n\n /**\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\n */\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\n\n /**\n * @dev Emitted when the beacon is upgraded.\n */\n event BeaconUpgraded(address indexed beacon);\n\n /**\n * @dev Returns the current beacon.\n */\n function _getBeacon() internal view returns (address) {\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\n }\n\n /**\n * @dev Stores a new beacon in the EIP1967 beacon slot.\n */\n function _setBeacon(address newBeacon) private {\n require(Address.isContract(newBeacon), \"ERC1967: new beacon is not a contract\");\n require(Address.isContract(IBeacon(newBeacon).implementation()), \"ERC1967: beacon implementation is not a contract\");\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\n }\n\n /**\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\n *\n * Emits a {BeaconUpgraded} event.\n */\n function _upgradeBeaconToAndCall(\n address newBeacon,\n bytes memory data,\n bool forceCall\n ) internal {\n _setBeacon(newBeacon);\n emit BeaconUpgraded(newBeacon);\n if (data.length > 0 || forceCall) {\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\n }\n }\n}\n" + }, + "hardhat-deploy/solc_0.8/openzeppelin/proxy/Proxy.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/Proxy.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n * be specified by overriding the virtual {_implementation} function.\n *\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n * different contract through the {_delegate} function.\n *\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\n */\nabstract contract Proxy {\n /**\n * @dev Delegates the current call to `implementation`.\n *\n * This function does not return to its internal call site, it will return directly to the external caller.\n */\n function _delegate(address implementation) internal virtual {\n assembly {\n // Copy msg.data. We take full control of memory in this inline assembly\n // block because it will not return to Solidity code. We overwrite the\n // Solidity scratch pad at memory position 0.\n calldatacopy(0, 0, calldatasize())\n\n // Call the implementation.\n // out and outsize are 0 because we don't know the size yet.\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\n\n // Copy the returned data.\n returndatacopy(0, 0, returndatasize())\n\n switch result\n // delegatecall returns 0 on error.\n case 0 {\n revert(0, returndatasize())\n }\n default {\n return(0, returndatasize())\n }\n }\n }\n\n /**\n * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\n * and {_fallback} should delegate.\n */\n function _implementation() internal view virtual returns (address);\n\n /**\n * @dev Delegates the current call to the address returned by `_implementation()`.\n *\n * This function does not return to its internall call site, it will return directly to the external caller.\n */\n function _fallback() internal virtual {\n _beforeFallback();\n _delegate(_implementation());\n }\n\n /**\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n * function in the contract matches the call data.\n */\n fallback() external payable virtual {\n _fallback();\n }\n\n /**\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\n * is empty.\n */\n receive() external payable virtual {\n _fallback();\n }\n\n /**\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\n * call, or as part of the Solidity `fallback` or `receive` functions.\n *\n * If overriden should call `super._beforeFallback()`.\n */\n function _beforeFallback() internal virtual {}\n}\n" + }, + "hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/ProxyAdmin.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (proxy/transparent/ProxyAdmin.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./TransparentUpgradeableProxy.sol\";\nimport \"../../access/Ownable.sol\";\n\n/**\n * @dev This is an auxiliary contract meant to be assigned as the admin of a {TransparentUpgradeableProxy}. For an\n * explanation of why you would want to use this see the documentation for {TransparentUpgradeableProxy}.\n */\ncontract ProxyAdmin is Ownable {\n\n constructor (address initialOwner) Ownable(initialOwner) {}\n\n /**\n * @dev Returns the current implementation of `proxy`.\n *\n * Requirements:\n *\n * - This contract must be the admin of `proxy`.\n */\n function getProxyImplementation(TransparentUpgradeableProxy proxy) public view virtual returns (address) {\n // We need to manually run the static call since the getter cannot be flagged as view\n // bytes4(keccak256(\"implementation()\")) == 0x5c60da1b\n (bool success, bytes memory returndata) = address(proxy).staticcall(hex\"5c60da1b\");\n require(success);\n return abi.decode(returndata, (address));\n }\n\n /**\n * @dev Returns the current admin of `proxy`.\n *\n * Requirements:\n *\n * - This contract must be the admin of `proxy`.\n */\n function getProxyAdmin(TransparentUpgradeableProxy proxy) public view virtual returns (address) {\n // We need to manually run the static call since the getter cannot be flagged as view\n // bytes4(keccak256(\"admin()\")) == 0xf851a440\n (bool success, bytes memory returndata) = address(proxy).staticcall(hex\"f851a440\");\n require(success);\n return abi.decode(returndata, (address));\n }\n\n /**\n * @dev Changes the admin of `proxy` to `newAdmin`.\n *\n * Requirements:\n *\n * - This contract must be the current admin of `proxy`.\n */\n function changeProxyAdmin(TransparentUpgradeableProxy proxy, address newAdmin) public virtual onlyOwner {\n proxy.changeAdmin(newAdmin);\n }\n\n /**\n * @dev Upgrades `proxy` to `implementation`. See {TransparentUpgradeableProxy-upgradeTo}.\n *\n * Requirements:\n *\n * - This contract must be the admin of `proxy`.\n */\n function upgrade(TransparentUpgradeableProxy proxy, address implementation) public virtual onlyOwner {\n proxy.upgradeTo(implementation);\n }\n\n /**\n * @dev Upgrades `proxy` to `implementation` and calls a function on the new implementation. See\n * {TransparentUpgradeableProxy-upgradeToAndCall}.\n *\n * Requirements:\n *\n * - This contract must be the admin of `proxy`.\n */\n function upgradeAndCall(\n TransparentUpgradeableProxy proxy,\n address implementation,\n bytes memory data\n ) public payable virtual onlyOwner {\n proxy.upgradeToAndCall{value: msg.value}(implementation, data);\n }\n}\n" + }, + "hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (proxy/transparent/TransparentUpgradeableProxy.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../ERC1967/ERC1967Proxy.sol\";\n\n/**\n * @dev This contract implements a proxy that is upgradeable by an admin.\n *\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\n * clashing], which can potentially be used in an attack, this contract uses the\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\n * things that go hand in hand:\n *\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\n * that call matches one of the admin functions exposed by the proxy itself.\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\n * \"admin cannot fallback to proxy target\".\n *\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\n * the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due\n * to sudden errors when trying to call a function from the proxy implementation.\n *\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\n */\ncontract TransparentUpgradeableProxy is ERC1967Proxy {\n /**\n * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\n * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\n */\n constructor(\n address _logic,\n address admin_,\n bytes memory _data\n ) payable ERC1967Proxy(_logic, _data) {\n assert(_ADMIN_SLOT == bytes32(uint256(keccak256(\"eip1967.proxy.admin\")) - 1));\n _changeAdmin(admin_);\n }\n\n /**\n * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\n */\n modifier ifAdmin() {\n if (msg.sender == _getAdmin()) {\n _;\n } else {\n _fallback();\n }\n }\n\n /**\n * @dev Returns the current admin.\n *\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\n *\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\n */\n function admin() external ifAdmin returns (address admin_) {\n admin_ = _getAdmin();\n }\n\n /**\n * @dev Returns the current implementation.\n *\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\n *\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\n */\n function implementation() external ifAdmin returns (address implementation_) {\n implementation_ = _implementation();\n }\n\n /**\n * @dev Changes the admin of the proxy.\n *\n * Emits an {AdminChanged} event.\n *\n * NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}.\n */\n function changeAdmin(address newAdmin) external virtual ifAdmin {\n _changeAdmin(newAdmin);\n }\n\n /**\n * @dev Upgrade the implementation of the proxy.\n *\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\n */\n function upgradeTo(address newImplementation) external ifAdmin {\n _upgradeToAndCall(newImplementation, bytes(\"\"), false);\n }\n\n /**\n * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\n * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\n * proxied contract.\n *\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\n */\n function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {\n _upgradeToAndCall(newImplementation, data, true);\n }\n\n /**\n * @dev Returns the current admin.\n */\n function _admin() internal view virtual returns (address) {\n return _getAdmin();\n }\n\n /**\n * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.\n */\n function _beforeFallback() internal virtual override {\n require(msg.sender != _getAdmin(), \"TransparentUpgradeableProxy: admin cannot fallback to proxy target\");\n super._beforeFallback();\n }\n}\n" + }, + "hardhat-deploy/solc_0.8/openzeppelin/utils/Address.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (utils/Address.sol)\n\npragma solidity ^0.8.1;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n /**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n * ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a contract.\n *\n * Among others, `isContract` will return false for the following\n * types of addresses:\n *\n * - an externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a contract lived, but was destroyed\n * ====\n *\n * [IMPORTANT]\n * ====\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\n *\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n * constructor.\n * ====\n */\n function isContract(address account) internal view returns (bool) {\n // This method relies on extcodesize/address.code.length, which returns 0\n // for contracts in construction, since the code is only stored at the end\n // of the constructor execution.\n\n return account.code.length > 0;\n }\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n (bool success, ) = recipient.call{value: amount}(\"\");\n require(success, \"Address: unable to send value, recipient may have reverted\");\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason, it is bubbled up by this\n * function (like regular Solidity function calls).\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n *\n * _Available since v3.1._\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCall(target, data, \"Address: low-level call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n * `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n * with `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value,\n string memory errorMessage\n ) internal returns (bytes memory) {\n require(address(this).balance >= value, \"Address: insufficient balance for call\");\n require(isContract(target), \"Address: call to non-contract\");\n\n (bool success, bytes memory returndata) = target.call{value: value}(data);\n return verifyCallResult(success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n return functionStaticCall(target, data, \"Address: low-level static call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n require(isContract(target), \"Address: static call to non-contract\");\n\n (bool success, bytes memory returndata) = target.staticcall(data);\n return verifyCallResult(success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n require(isContract(target), \"Address: delegate call to non-contract\");\n\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return verifyCallResult(success, returndata, errorMessage);\n }\n\n /**\n * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\n * revert reason using the provided one.\n *\n * _Available since v4.3._\n */\n function verifyCallResult(\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal pure returns (bytes memory) {\n if (success) {\n return returndata;\n } else {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(errorMessage);\n }\n }\n }\n}\n" + }, + "hardhat-deploy/solc_0.8/openzeppelin/utils/Context.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n}\n" + }, + "hardhat-deploy/solc_0.8/openzeppelin/utils/StorageSlot.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/StorageSlot.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Library for reading and writing primitive types to specific storage slots.\n *\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n * This library helps with reading and writing to such slots without the need for inline assembly.\n *\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n *\n * Example usage to set ERC1967 implementation slot:\n * ```\n * contract ERC1967 {\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n *\n * function _getImplementation() internal view returns (address) {\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n * }\n *\n * function _setImplementation(address newImplementation) internal {\n * require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n * }\n * }\n * ```\n *\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\n */\nlibrary StorageSlot {\n struct AddressSlot {\n address value;\n }\n\n struct BooleanSlot {\n bool value;\n }\n\n struct Bytes32Slot {\n bytes32 value;\n }\n\n struct Uint256Slot {\n uint256 value;\n }\n\n /**\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\n */\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\n */\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\n */\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\n */\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\n assembly {\n r.slot := slot\n }\n }\n}\n" + }, + "hardhat-deploy/solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (proxy/transparent/TransparentUpgradeableProxy.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../openzeppelin/proxy/ERC1967/ERC1967Proxy.sol\";\n\n/**\n * @dev This contract implements a proxy that is upgradeable by an admin.\n *\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\n * clashing], which can potentially be used in an attack, this contract uses the\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\n * things that go hand in hand:\n *\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\n * that call matches one of the admin functions exposed by the proxy itself.\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\n * \"admin cannot fallback to proxy target\".\n *\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\n * the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due\n * to sudden errors when trying to call a function from the proxy implementation.\n *\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\n */\ncontract OptimizedTransparentUpgradeableProxy is ERC1967Proxy {\n address internal immutable _ADMIN;\n\n /**\n * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\n * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\n */\n constructor(\n address _logic,\n address admin_,\n bytes memory _data\n ) payable ERC1967Proxy(_logic, _data) {\n assert(_ADMIN_SLOT == bytes32(uint256(keccak256(\"eip1967.proxy.admin\")) - 1));\n _ADMIN = admin_;\n\n // still store it to work with EIP-1967\n bytes32 slot = _ADMIN_SLOT;\n // solhint-disable-next-line no-inline-assembly\n assembly {\n sstore(slot, admin_)\n }\n emit AdminChanged(address(0), admin_);\n }\n\n /**\n * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\n */\n modifier ifAdmin() {\n if (msg.sender == _getAdmin()) {\n _;\n } else {\n _fallback();\n }\n }\n\n /**\n * @dev Returns the current admin.\n *\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\n *\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\n */\n function admin() external ifAdmin returns (address admin_) {\n admin_ = _getAdmin();\n }\n\n /**\n * @dev Returns the current implementation.\n *\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\n *\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\n */\n function implementation() external ifAdmin returns (address implementation_) {\n implementation_ = _implementation();\n }\n\n /**\n * @dev Upgrade the implementation of the proxy.\n *\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\n */\n function upgradeTo(address newImplementation) external ifAdmin {\n _upgradeToAndCall(newImplementation, bytes(\"\"), false);\n }\n\n /**\n * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\n * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\n * proxied contract.\n *\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\n */\n function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {\n _upgradeToAndCall(newImplementation, data, true);\n }\n\n /**\n * @dev Returns the current admin.\n */\n function _admin() internal view virtual returns (address) {\n return _getAdmin();\n }\n\n /**\n * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.\n */\n function _beforeFallback() internal virtual override {\n require(msg.sender != _getAdmin(), \"TransparentUpgradeableProxy: admin cannot fallback to proxy target\");\n super._beforeFallback();\n }\n\n function _getAdmin() internal view virtual override returns (address) {\n return _ADMIN;\n }\n}\n" + } + }, + "settings": { + "optimizer": { + "enabled": true, + "runs": 200, + "details": { + "yul": true + } + }, + "evmVersion": "cancun", + "outputSelection": { + "*": { + "*": [ + "storageLayout", + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "evm.gasEstimates" + ], + "": ["ast"] + } + }, + "metadata": { + "useLiteralContent": true + } + } +} diff --git a/helpers/deploymentConfig.ts b/helpers/deploymentConfig.ts index de8eb291..1356e6a2 100644 --- a/helpers/deploymentConfig.ts +++ b/helpers/deploymentConfig.ts @@ -135,6 +135,8 @@ export const ADDRESSES: PreconfiguredAddresses = { "PT-clisBNB-24APR2025_Market": "0x1d9d27f0b89181cf1593ac2b36a37b444eb66bee", "PT-sUSDE-26JUN2025": "0xDD809435ba6c9d6903730f923038801781cA66ce", "PT-sUSDE-26JUN2025_Market": "0x8557D39d4BAB2b045ac5c2B7ea66d12139da9Af4", + "PT-USDe-30OCT2025": "0x607c834cfb7fcbbb341cbe23f77a6e83bcf3f55c", + "PT-USDe-30OCT2025_Market": "0xb5b56637810e4d090894785993f4cdd6875d927e", sUSDe: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2", USDe: "0x5d3a1Ff2b6BAb83b63cd9AD0787074081a52ef34", xSolvBTC: "0x1346b618dC92810EC74163e4c27004c921D446a5", From f688009a686c6d56c5b9748e23b0826cabe64d52 Mon Sep 17 00:00:00 2001 From: GitGuru7 <128375421+GitGuru7@users.noreply.github.com> Date: Fri, 26 Sep 2025 13:25:25 +0000 Subject: [PATCH 22/24] feat: updating deployment files --- deployments/bscmainnet.json | 1008 +++++++++++++++++++++++++ deployments/bscmainnet_addresses.json | 2 + 2 files changed, 1010 insertions(+) diff --git a/deployments/bscmainnet.json b/deployments/bscmainnet.json index e7bacc04..02443822 100644 --- a/deployments/bscmainnet.json +++ b/deployments/bscmainnet.json @@ -5861,6 +5861,1014 @@ } ] }, + "PendleOracle-PT-USDe-30OCT2025": { + "address": "0xAa5138e86c078fd2859a929173B3870b5003EC30", + "abi": [ + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "market", + "type": "address" + }, + { + "internalType": "address", + "name": "ptOracle", + "type": "address" + }, + { + "internalType": "enum PendleOracle.RateKind", + "name": "rateKind", + "type": "uint8" + }, + { + "internalType": "address", + "name": "ptToken", + "type": "address" + }, + { + "internalType": "address", + "name": "underlyingToken", + "type": "address" + }, + { + "internalType": "address", + "name": "resilientOracle", + "type": "address" + }, + { + "internalType": "uint32", + "name": "twapDuration", + "type": "uint32" + }, + { + "internalType": "uint256", + "name": "annualGrowthRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "snapshotInterval", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "initialSnapshotMaxExchangeRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "initialSnapshotTimestamp", + "type": "uint256" + }, + { + "internalType": "address", + "name": "accessControlManager", + "type": "address" + }, + { + "internalType": "uint256", + "name": "snapshotGap", + "type": "uint256" + } + ], + "internalType": "struct PendleOracle.ConstructorParams", + "name": "params", + "type": "tuple" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "InvalidDuration", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidGrowthRate", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialSnapshot", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidSnapshotMaxExchangeRate", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidTokenAddress", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "calledContract", + "type": "address" + }, + { + "internalType": "string", + "name": "methodSignature", + "type": "string" + } + ], + "name": "Unauthorized", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroAddressNotAllowed", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroValueNotAllowed", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "oldGrowthRatePerSecond", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newGrowthRatePerSecond", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "oldSnapshotInterval", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newSnapshotInterval", + "type": "uint256" + } + ], + "name": "GrowthRateUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "oldSnapshotGap", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newSnapshotGap", + "type": "uint256" + } + ], + "name": "SnapshotGapUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "maxExchangeRate", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "name": "SnapshotUpdated", + "type": "event" + }, + { + "inputs": [], + "name": "ACCESS_CONTROL_MANAGER", + "outputs": [ + { + "internalType": "contract IAccessControlManagerV8", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "CORRELATED_TOKEN", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MARKET", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PT_ORACLE", + "outputs": [ + { + "internalType": "contract IPendlePtOracle", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "RATE_KIND", + "outputs": [ + { + "internalType": "enum PendleOracle.RateKind", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "RESILIENT_ORACLE", + "outputs": [ + { + "internalType": "contract ResilientOracleInterface", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "TWAP_DURATION", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UNDERLYING_DECIMALS", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UNDERLYING_TOKEN", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getMaxAllowedExchangeRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "getPrice", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getUnderlyingAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "growthRatePerSecond", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "isCapped", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_annualGrowthRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_snapshotInterval", + "type": "uint256" + } + ], + "name": "setGrowthRate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_snapshotMaxExchangeRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_snapshotTimestamp", + "type": "uint256" + } + ], + "name": "setSnapshot", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_snapshotGap", + "type": "uint256" + } + ], + "name": "setSnapshotGap", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "snapshotGap", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "snapshotInterval", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "snapshotMaxExchangeRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "snapshotTimestamp", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "updateSnapshot", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ] + }, + "PendleOracle-PT-USDe-30OCT2025_Reference_PtToAsset": { + "address": "0xa1041218273BB5F3f0bdD8B2BbaDACE05e2CF567", + "abi": [ + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "market", + "type": "address" + }, + { + "internalType": "address", + "name": "ptOracle", + "type": "address" + }, + { + "internalType": "enum PendleOracle.RateKind", + "name": "rateKind", + "type": "uint8" + }, + { + "internalType": "address", + "name": "ptToken", + "type": "address" + }, + { + "internalType": "address", + "name": "underlyingToken", + "type": "address" + }, + { + "internalType": "address", + "name": "resilientOracle", + "type": "address" + }, + { + "internalType": "uint32", + "name": "twapDuration", + "type": "uint32" + }, + { + "internalType": "uint256", + "name": "annualGrowthRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "snapshotInterval", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "initialSnapshotMaxExchangeRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "initialSnapshotTimestamp", + "type": "uint256" + }, + { + "internalType": "address", + "name": "accessControlManager", + "type": "address" + }, + { + "internalType": "uint256", + "name": "snapshotGap", + "type": "uint256" + } + ], + "internalType": "struct PendleOracle.ConstructorParams", + "name": "params", + "type": "tuple" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "InvalidDuration", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidGrowthRate", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialSnapshot", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidSnapshotMaxExchangeRate", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidTokenAddress", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "calledContract", + "type": "address" + }, + { + "internalType": "string", + "name": "methodSignature", + "type": "string" + } + ], + "name": "Unauthorized", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroAddressNotAllowed", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroValueNotAllowed", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "oldGrowthRatePerSecond", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newGrowthRatePerSecond", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "oldSnapshotInterval", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newSnapshotInterval", + "type": "uint256" + } + ], + "name": "GrowthRateUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "oldSnapshotGap", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newSnapshotGap", + "type": "uint256" + } + ], + "name": "SnapshotGapUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "maxExchangeRate", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "name": "SnapshotUpdated", + "type": "event" + }, + { + "inputs": [], + "name": "ACCESS_CONTROL_MANAGER", + "outputs": [ + { + "internalType": "contract IAccessControlManagerV8", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "CORRELATED_TOKEN", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MARKET", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PT_ORACLE", + "outputs": [ + { + "internalType": "contract IPendlePtOracle", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "RATE_KIND", + "outputs": [ + { + "internalType": "enum PendleOracle.RateKind", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "RESILIENT_ORACLE", + "outputs": [ + { + "internalType": "contract ResilientOracleInterface", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "TWAP_DURATION", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UNDERLYING_DECIMALS", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UNDERLYING_TOKEN", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getMaxAllowedExchangeRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "getPrice", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getUnderlyingAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "growthRatePerSecond", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "isCapped", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_annualGrowthRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_snapshotInterval", + "type": "uint256" + } + ], + "name": "setGrowthRate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_snapshotMaxExchangeRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_snapshotTimestamp", + "type": "uint256" + } + ], + "name": "setSnapshot", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_snapshotGap", + "type": "uint256" + } + ], + "name": "setSnapshotGap", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "snapshotGap", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "snapshotInterval", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "snapshotMaxExchangeRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "snapshotTimestamp", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "updateSnapshot", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ] + }, "PendleOracle-PT-clisBNB-24APR2025": { "address": "0xEa7a92D12196A325C76ED26DBd36629d7EC46459", "abi": [ diff --git a/deployments/bscmainnet_addresses.json b/deployments/bscmainnet_addresses.json index 0c6e3e40..b8a3e3b5 100644 --- a/deployments/bscmainnet_addresses.json +++ b/deployments/bscmainnet_addresses.json @@ -22,6 +22,8 @@ "PendleOracle-PT-SolvBTC.BBN-27MAR2025_Reference_PtToAsset": "0x3beC73E7A5385257981Cd50A147A32b0397d9cBB", "PendleOracle-PT-SolvBTC.BBN-27MAR2025_Reference_PtToAsset_Implementation": "0xe194B3A99B20BE368DEDDfe702820987Ef5c0E4A", "PendleOracle-PT-SolvBTC.BBN-27MAR2025_Reference_PtToAsset_Proxy": "0x3beC73E7A5385257981Cd50A147A32b0397d9cBB", + "PendleOracle-PT-USDe-30OCT2025": "0xAa5138e86c078fd2859a929173B3870b5003EC30", + "PendleOracle-PT-USDe-30OCT2025_Reference_PtToAsset": "0xa1041218273BB5F3f0bdD8B2BbaDACE05e2CF567", "PendleOracle-PT-clisBNB-24APR2025": "0xEa7a92D12196A325C76ED26DBd36629d7EC46459", "PendleOracle-PT-clisBNB-24APR2025_Implementation": "0x8A183a0d35290D849e8915710D3aEE7e463705E7", "PendleOracle-PT-clisBNB-24APR2025_Proxy": "0xEa7a92D12196A325C76ED26DBd36629d7EC46459", From 6c775e69a1ec9568749793d59f37f9f2a26c9596 Mon Sep 17 00:00:00 2001 From: Venus Tools Date: Mon, 29 Sep 2025 10:39:34 +0000 Subject: [PATCH 23/24] chore(release): 2.14.0-dev.2 [skip ci] ## [2.14.0-dev.2](https://github.com/VenusProtocol/oracle/compare/v2.14.0-dev.1...v2.14.0-dev.2) (2025-09-29) ### Features * add PT-USDe oracle deployemnts ([de0e156](https://github.com/VenusProtocol/oracle/commit/de0e15690cad6b713069ea9200a7a4b2d359bfef)) * add PT-USDe oracle deployemnts on bscmainnet ([0428227](https://github.com/VenusProtocol/oracle/commit/042822727a1c95ef94978e32ea91333c6b6d7c0d)) * updating deployment files ([f688009](https://github.com/VenusProtocol/oracle/commit/f688009a686c6d56c5b9748e23b0826cabe64d52)) * updating deployment files ([7f6990a](https://github.com/VenusProtocol/oracle/commit/7f6990afe8886a559bc4a7efd8ec4794a5928e9a)) * updating deployment files ([7a3baa3](https://github.com/VenusProtocol/oracle/commit/7a3baa3c98561e02b8cfeb0ca3301f91882e3ab3)) * updating deployment files ([9464757](https://github.com/VenusProtocol/oracle/commit/946475775ff74d8d3fa502edb5759ad695c03f5d)) ### Bug Fixes * market naming case ([b443a93](https://github.com/VenusProtocol/oracle/commit/b443a930c4d50b80012689416c3db77ae5cd2231)) * update PT-USDe oracle deployemnt ([6dc42ad](https://github.com/VenusProtocol/oracle/commit/6dc42ad74f1edd9338371efdcfc81db5069e7ba8)) * yarn-lock updates ([9179568](https://github.com/VenusProtocol/oracle/commit/9179568a8c423e4207e8531406a09fb42389baf8)) --- CHANGELOG.md | 19 +++++++++++++++++++ package.json | 2 +- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7e5f701b..eccded77 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,22 @@ +## [2.14.0-dev.2](https://github.com/VenusProtocol/oracle/compare/v2.14.0-dev.1...v2.14.0-dev.2) (2025-09-29) + + +### Features + +* add PT-USDe oracle deployemnts ([de0e156](https://github.com/VenusProtocol/oracle/commit/de0e15690cad6b713069ea9200a7a4b2d359bfef)) +* add PT-USDe oracle deployemnts on bscmainnet ([0428227](https://github.com/VenusProtocol/oracle/commit/042822727a1c95ef94978e32ea91333c6b6d7c0d)) +* updating deployment files ([f688009](https://github.com/VenusProtocol/oracle/commit/f688009a686c6d56c5b9748e23b0826cabe64d52)) +* updating deployment files ([7f6990a](https://github.com/VenusProtocol/oracle/commit/7f6990afe8886a559bc4a7efd8ec4794a5928e9a)) +* updating deployment files ([7a3baa3](https://github.com/VenusProtocol/oracle/commit/7a3baa3c98561e02b8cfeb0ca3301f91882e3ab3)) +* updating deployment files ([9464757](https://github.com/VenusProtocol/oracle/commit/946475775ff74d8d3fa502edb5759ad695c03f5d)) + + +### Bug Fixes + +* market naming case ([b443a93](https://github.com/VenusProtocol/oracle/commit/b443a930c4d50b80012689416c3db77ae5cd2231)) +* update PT-USDe oracle deployemnt ([6dc42ad](https://github.com/VenusProtocol/oracle/commit/6dc42ad74f1edd9338371efdcfc81db5069e7ba8)) +* yarn-lock updates ([9179568](https://github.com/VenusProtocol/oracle/commit/9179568a8c423e4207e8531406a09fb42389baf8)) + ## [2.14.0-dev.1](https://github.com/VenusProtocol/oracle/compare/v2.13.0...v2.14.0-dev.1) (2025-08-11) diff --git a/package.json b/package.json index b4913783..796e89ac 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@venusprotocol/oracle", "description": "Venus Protocol Price Oracle", - "version": "2.14.0-dev.1", + "version": "2.14.0-dev.2", "author": "Venus", "engines": { "node": ">=18.x.x" From 492a3de67500c0dbbfac047775a33d0017abee58 Mon Sep 17 00:00:00 2001 From: Jesus Lanchas Date: Mon, 29 Sep 2025 13:54:39 +0200 Subject: [PATCH 24/24] chore: update dependencies --- package.json | 2 +- yarn.lock | 13 ++++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 796e89ac..42e25c42 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,7 @@ "@nomicfoundation/hardhat-network-helpers": "^1.0.8", "@openzeppelin/contracts": "^4.6.0", "@openzeppelin/contracts-upgradeable": "^4.7.3", - "@venusprotocol/governance-contracts": "^2.9.0", + "@venusprotocol/governance-contracts": "^2.13.0", "@venusprotocol/solidity-utilities": "^2.0.0", "@venusprotocol/venus-protocol": "^9.7.0", "ethers": "^5.6.8", diff --git a/yarn.lock b/yarn.lock index 456ebabd..09b49b0a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3946,6 +3946,17 @@ __metadata: languageName: node linkType: hard +"@venusprotocol/governance-contracts@npm:^2.13.0": + version: 2.13.0 + resolution: "@venusprotocol/governance-contracts@npm:2.13.0" + dependencies: + "@venusprotocol/solidity-utilities": 2.0.0 + hardhat-deploy-ethers: ^0.3.0-beta.13 + module-alias: ^2.2.2 + checksum: 329b35ac75ce18a1f7aa785b321f8f124f75a82cfe06cb1b9fb65ecbe19771cae2760bdc37ffd3208e6f56c431358d76c95b4a0b7766eb669df7adca0a017342 + languageName: node + linkType: hard + "@venusprotocol/governance-contracts@npm:^2.9.0": version: 2.9.0 resolution: "@venusprotocol/governance-contracts@npm:2.9.0" @@ -4031,7 +4042,7 @@ __metadata: "@types/sinon-chai": ^3.2.9 "@typescript-eslint/eslint-plugin": ^5.27.1 "@typescript-eslint/parser": ^5.27.1 - "@venusprotocol/governance-contracts": ^2.9.0 + "@venusprotocol/governance-contracts": ^2.13.0 "@venusprotocol/solidity-utilities": ^2.0.0 "@venusprotocol/venus-protocol": ^9.7.0 chai: ^4.3.6

    R2qL(8))d@{bp;DCjxuj1a8&k+VDn+J4 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