Repository: VenusProtocol/venus-protocol-interface
Pull request #4018: feat: add asBNB and PT-clisBNB-APR25 records
Author: login: therealemjy
Created: 2025-03-14T09:32:48Z | Merged: 2025-03-20T09:03:07Z

## Jira ticket(s)

VEN-3134

## Changes

- add asBNB and PT-clisBNB-APR25 records



Diff:
diff --git a/.changeset/giant-mails-cover.md b/.changeset/giant-mails-cover.md
new file mode 100644
index 0000000000..1d9befdcde
--- /dev/null
+++ b/.changeset/giant-mails-cover.md
@@ -0,0 +1,5 @@
+---
+"@venusprotocol/evm": minor
+---
+
+add asBNB and PT-clisBNB-APR25 records
diff --git a/apps/evm/src/libs/tokens/img/underlyingTokens/asBnb.svg b/apps/evm/src/libs/tokens/img/underlyingTokens/asBnb.svg
new file mode 100644
index 0000000000..bc29a71dcb
--- /dev/null
+++ b/apps/evm/src/libs/tokens/img/underlyingTokens/asBnb.svg
@@ -0,0 +1,16 @@
+<svg width="819" height="819" viewBox="0 0 819 819" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g clip-path="url(#clip0_437_41)">
+<path d="M409.5 819C635.661 819 819 635.661 819 409.5C819 183.339 635.661 0 409.5 0C183.339 0 0 183.339 0 409.5C0 635.661 183.339 819 409.5 819Z" fill="#F0B90B"/>
+<path d="M263.627 221.006L407.872 137.042L552.119 221.006L499.088 252.025L407.872 199.079L316.659 252.025L263.627 221.006ZM552.119 326.897L499.088 295.879L407.872 348.826L316.659 295.879L263.627 326.897V388.936L354.842 441.881V547.771L407.872 578.791L460.906 547.771V441.881L552.119 388.936V326.897ZM552.119 494.826V432.79L499.088 463.806V525.846L552.119 494.826ZM589.772 516.755L498.56 569.7V631.736L642.806 547.771V379.842L589.772 410.861V516.755ZM536.742 273.952L589.772 304.97V367.007L642.806 335.989V273.952L589.772 242.933L536.742 273.952ZM354.842 592.161V654.197L407.872 685.216L460.906 654.197V592.161L407.872 623.18L354.842 592.161ZM263.627 494.826L316.659 525.846V463.806L263.627 432.79V494.826ZM354.842 273.952L407.872 304.97L460.906 273.952L407.872 242.933L354.842 273.952ZM225.973 304.97L279.005 273.952L225.973 242.933L172.941 273.952V335.989L225.973 367.007V304.97ZM225.973 410.861L172.941 379.842V547.771L317.188 631.736V569.7L225.973 516.755V410.861Z" fill="white"/>
+<path d="M819 648.375C819 554.141 742.609 477.75 648.375 477.75C554.141 477.75 477.75 554.141 477.75 648.375C477.75 742.609 554.141 819 648.375 819C742.609 819 819 742.609 819 648.375Z" fill="#F4D5B1"/>
+<path d="M749.153 714.195C749.757 715.243 749.023 716.55 747.815 716.55H701.712C700.347 716.55 699.931 715.325 700.146 714.769C700.282 714.41 700.624 714.079 701.183 713.919C701.74 713.759 703.002 713.769 703.002 713.769C705.701 713.919 708.162 714.059 710.134 712.192C712.107 710.322 713.144 708.039 713.247 705.343C713.349 702.644 712.803 700.324 711.489 697.498C711.267 697.02 710.967 696.457 710.694 695.969C710.619 695.836 710.54 695.703 710.465 695.57C710.312 695.3 710.158 695.034 710.001 694.771C709.769 694.372 638.294 570.649 638.294 570.649L566.564 694.816C566.564 694.816 566.185 695.454 565.908 695.949C565.632 696.444 565.328 697.013 565.103 697.498C563.789 700.324 563.243 702.644 563.346 705.343C563.448 708.039 564.489 710.322 566.458 712.192C568.43 714.059 570.928 714.404 573.522 714.404H574.511L574.853 714.441C575.269 714.485 575.453 714.806 575.586 715.257C575.815 716.055 574.965 716.55 574.511 716.55H548.955C547.747 716.55 546.993 715.243 547.597 714.195L594.369 633.234L595.212 631.732L647.017 542.106C647.621 541.062 649.129 541.062 649.733 542.106L693.666 618.154L704.422 600.706C704.599 600.416 704.917 600.238 705.258 600.238C706.009 600.238 706.483 601.047 706.114 601.702L695.28 620.945L749.153 714.195Z" fill="black"/>
+<path d="M576.259 601.173C576.259 601.173 576.282 600.156 576.794 600.085C577.095 600.04 577.391 600.184 577.542 600.45L591.779 625.597L589.946 628.767L576.259 601.173Z" fill="black"/>
+<path d="M602.603 644.84L600.89 647.808L638.342 714.127C638.943 715.192 642.202 715.192 642.802 714.127L677.856 651.883L675.45 647.713L639.001 706.845C639.001 706.845 638.602 707.537 638.332 707.537C638.015 707.537 637.643 706.845 637.643 706.845L602.603 644.84Z" fill="black"/>
+<path d="M637.503 606.282C637.503 625.201 630.562 638.23 616.287 638.23C616.284 638.393 616.284 638.561 616.284 638.724C616.284 638.796 616.284 638.868 616.284 638.939C616.284 639.008 616.284 639.079 616.284 639.151C616.284 639.315 616.284 639.482 616.287 639.646C630.562 639.646 637.503 652.678 637.503 671.597H639.001C639.001 652.678 645.942 639.646 660.216 639.646C660.22 639.482 660.22 639.315 660.22 639.151V639.096V638.939V638.854V638.724C660.22 638.561 660.22 638.393 660.216 638.23C645.942 638.23 639.001 625.201 639.001 606.282H637.503Z" fill="black"/>
+</g>
+<defs>
+<clipPath id="clip0_437_41">
+<rect width="819" height="819" fill="white"/>
+</clipPath>
+</defs>
+</svg>
diff --git a/apps/evm/src/libs/tokens/img/underlyingTokens/ptClisBNB.svg b/apps/evm/src/libs/tokens/img/underlyingTokens/ptClisBNB.svg
new file mode 100644
index 0000000000..69c5e5dd72
--- /dev/null
+++ b/apps/evm/src/libs/tokens/img/underlyingTokens/ptClisBNB.svg
@@ -0,0 +1,15 @@
+<svg width="37" height="37" viewBox="0 0 37 37" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g clip-path="url(#clip0_5701_4962)">
+<path d="M18.5 37C28.7173 37 37 28.7173 37 18.5C37 8.28273 28.7173 0 18.5 0C8.28273 0 0 8.28273 0 18.5C0 28.7173 8.28273 37 18.5 37Z" fill="#2245C5"/>
+<path d="M20.1542 19.4064C20.5631 14.5547 24.7956 12.4871 27.4303 13.6228C30.0649 14.7585 30.9438 18.4373 29.6278 21.9346C27.5156 27.5481 20.1931 31.2185 14.3487 28.6993C19.7205 27.6941 19.7955 23.6642 20.1542 19.4064Z" fill="white"/>
+<path d="M16.5476 17.6251C16.6392 22.4938 12.6424 25.0055 9.90574 24.1595C7.16905 23.3136 5.91729 19.7498 6.86687 16.1303C8.3911 10.3205 15.2961 5.88257 21.3669 7.75894C16.128 9.33657 16.4672 13.3522 16.5476 17.6251Z" fill="white"/>
+<path d="M18.5 23.125C21.0543 23.125 23.125 21.0543 23.125 18.5C23.125 15.9457 21.0543 13.875 18.5 13.875C15.9457 13.875 13.875 15.9457 13.875 18.5C13.875 21.0543 15.9457 23.125 18.5 23.125Z" fill="#2245C5"/>
+<path d="M19.6347 15.5381C20.3137 15.7696 20.8016 16.0776 21.1956 16.6943C21.23 16.8012 21.2643 16.908 21.2997 17.0181C20.8025 17.2378 20.8025 17.2378 20.1897 17.3881C19.8765 17.2114 19.5684 17.0257 19.2647 16.8331C18.5162 16.7395 18.1088 16.7605 17.4378 17.1106C16.9081 17.7338 16.8293 18.2469 16.8597 19.0531C17.0489 19.7782 17.1484 19.9239 17.7847 20.3481C18.5448 20.4559 19.2319 20.5054 19.866 20.0475C20.0262 19.9215 20.0262 19.9215 20.1897 19.7931C20.6985 19.9434 20.6985 19.9434 21.1147 20.1631C21.1147 20.3462 21.1147 20.5294 21.1147 20.7181C20.4007 21.4111 19.6886 21.8182 18.6779 21.8346C17.7064 21.7678 17.0519 21.5634 16.3047 20.9031C15.531 19.885 15.3952 19.0218 15.5647 17.7581C16.2204 15.8274 17.7574 15.3493 19.6347 15.5381Z" fill="#FBFCFE"/>
+</g>
+<circle cx="18.5" cy="18.5" r="17.5" stroke="#1BE3C2" stroke-width="2"/>
+<defs>
+<clipPath id="clip0_5701_4962">
+<rect width="37" height="37" fill="white"/>
+</clipPath>
+</defs>
+</svg>
diff --git a/apps/evm/src/libs/tokens/infos/commonTokens/bscMainnet.ts b/apps/evm/src/libs/tokens/infos/commonTokens/bscMainnet.ts
index 183ba37243..3f8aeef5c6 100644
--- a/apps/evm/src/libs/tokens/infos/commonTokens/bscMainnet.ts
+++ b/apps/evm/src/libs/tokens/infos/commonTokens/bscMainnet.ts
@@ -6,6 +6,7 @@ import alpacaLogo from 'libs/tokens/img/underlyingTokens/alpaca.png';
 import angleLogo from 'libs/tokens/img/underlyingTokens/angle.svg';
 import ankrLogo from 'libs/tokens/img/underlyingTokens/ankr.svg';
 import ankrbnbLogo from 'libs/tokens/img/underlyingTokens/ankrBNB.svg';
+import asBnbLogo from 'libs/tokens/img/underlyingTokens/asBnb.svg';
 import babyDogeLogo from 'libs/tokens/img/underlyingTokens/babyDoge.svg';
 import bchLogo from 'libs/tokens/img/underlyingTokens/bch.svg';
 import bethLogo from 'libs/tokens/img/underlyingTokens/beth.svg';
@@ -31,6 +32,7 @@ import ltcLogo from 'libs/tokens/img/underlyingTokens/ltc.svg';
 import maticLogo from 'libs/tokens/img/underlyingTokens/matic.svg';
 import nftLogo from 'libs/tokens/img/underlyingTokens/nft.png';
 import planetLogo from 'libs/tokens/img/underlyingTokens/planet.svg';
+import ptClisBNBLogo from 'libs/tokens/img/underlyingTokens/ptClisBNB.svg';
 import ptSolvBtcLogo from 'libs/tokens/img/underlyingTokens/ptSolvBtc.svg';
 import racaLogo from 'libs/tokens/img/underlyingTokens/raca.png';
 import sdLogo from 'libs/tokens/img/underlyingTokens/sd.svg';
@@ -411,4 +413,16 @@ export const tokens: Token[] = [
     symbol: 'SOL',
     asset: solLogo,
   },
+  {
+    address: '0xe8f1c9804770e11ab73395be54686ad656601e9e',
+    decimals: 18,
+    symbol: 'PT-clisBNB-APR25',
+    asset: ptClisBNBLogo,
+  },
+  {
+    address: '0x77734e70b6E88b4d82fE632a168EDf6e700912b6',
+    decimals: 18,
+    symbol: 'asBNB',
+    asset: asBnbLogo,
+  },
 ];
diff --git a/apps/evm/src/libs/tokens/infos/commonTokens/bscTestnet.ts b/apps/evm/src/libs/tokens/infos/commonTokens/bscTestnet.ts
index 0bdd25bccd..f9d5901172 100644
--- a/apps/evm/src/libs/tokens/infos/commonTokens/bscTestnet.ts
+++ b/apps/evm/src/libs/tokens/infos/commonTokens/bscTestnet.ts
@@ -5,6 +5,7 @@ import alpacaLogo from 'libs/tokens/img/underlyingTokens/alpaca.png';
 import angleLogo from 'libs/tokens/img/underlyingTokens/angle.svg';
 import ankrLogo from 'libs/tokens/img/underlyingTokens/ankr.svg';
 import ankrBNBLogo from 'libs/tokens/img/underlyingTokens/ankrBNB.svg';
+import asBnbLogo from 'libs/tokens/img/underlyingTokens/asBnb.svg';
 import babyDogeLogo from 'libs/tokens/img/underlyingTokens/babyDoge.svg';
 import bifiLogo from 'libs/tokens/img/underlyingTokens/bifi.png';
 import bnbLogo from 'libs/tokens/img/underlyingTokens/bnb.svg';
@@ -24,6 +25,7 @@ import ltcLogo from 'libs/tokens/img/underlyingTokens/ltc.svg';
 import maticLogo from 'libs/tokens/img/underlyingTokens/matic.svg';
 import nftLogo from 'libs/tokens/img/underlyingTokens/nft.png';
 import planetLogo from 'libs/tokens/img/underlyingTokens/planet.svg';
+import ptClisBNBLogo from 'libs/tokens/img/underlyingTokens/ptClisBNB.svg';
 import ptSolvBtcLogo from 'libs/tokens/img/underlyingTokens/ptSolvBtc.svg';
 import racaLogo from 'libs/tokens/img/underlyingTokens/raca.png';
 import sdLogo from 'libs/tokens/img/underlyingTokens/sd.svg';
@@ -376,4 +378,16 @@ export const tokens: Token[] = [
     symbol: 'SOL',
     asset: solLogo,
   },
+  {
+    address: '0x14AECeEc177085fd09EA07348B4E1F7Fcc030fA1',
+    decimals: 18,
+    symbol: 'PT-clisBNB-APR25',
+    asset: ptClisBNBLogo,
+  },
+  {
+    address: '0xc625f060ad25f4A6c2d9eBF30C133dB61B7AF072',
+    decimals: 18,
+    symbol: 'asBNB',
+    asset: asBnbLogo,
+  },
 ];


Reviews:
user: login: chechu
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-19T13:49:22Z
user: login: therealemjy
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-19T14:16:38Z
user: login: gleiser-oliveira
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-03-20T05:18:02Z

Review comments:
diff_hunk: @@ -376,4 +377,11 @@ export const tokens: Token[] = [
     symbol: 'SOL',
     asset: solLogo,
   },
+  {
+    address: '0x14AECeEc177085fd09EA07348B4E1F7Fcc030fA1',
+    decimals: 18,
+    symbol: 'PT-clisBNB-APR25',
+    asset: ptClisBNBLogo,
+  },
+  // TODO: add asBNB record once it's been deployed
path: apps/evm/src/libs/tokens/infos/commonTokens/bscTestnet.ts
user: login: chechu
body: `asBNB` on testnet: `0xc625f060ad25f4A6c2d9eBF30C133dB61B7AF072`. Reference: https://github.com/VenusProtocol/oracle/pull/275
created_at: 2025-03-19T13:49:22Z
author_association: CONTRIBUTOR
diff_hunk: @@ -376,4 +377,11 @@ export const tokens: Token[] = [
     symbol: 'SOL',
     asset: solLogo,
   },
+  {
+    address: '0x14AECeEc177085fd09EA07348B4E1F7Fcc030fA1',
+    decimals: 18,
+    symbol: 'PT-clisBNB-APR25',
+    asset: ptClisBNBLogo,
+  },
+  // TODO: add asBNB record once it's been deployed
path: apps/evm/src/libs/tokens/infos/commonTokens/bscTestnet.ts
user: login: therealemjy
body: Thank you, it's added
created_at: 2025-03-19T14:16:32Z
author_association: MEMBER

PR comments:
user: login: vercel[bot]
created_at: 2025-03-14T09:32:51Z
body: [vc]: #jY57Zy6e20Qm7nQY3OB0XXgtPaCJ2AH0AWK+6g6wcnU=:eyJpc01vbm9yZXBvIjp0cnVlLCJ0eXBlIjoiZ2l0aHViIiwicHJvamVjdHMiOlt7Im5hbWUiOiJ2ZW51cy5pbyIsInJvb3REaXJlY3RvcnkiOiJhcHBzL2xhbmRpbmciLCJpbnNwZWN0b3JVcmwiOiJodHRwczovL3ZlcmNlbC5jb20vdmVudXMtcHJvdG9jb2wvdmVudXMuaW8vR3hoNUFWcGRYU244QVZQQzRkYVlpeVJzVWZBaSIsInByZXZpZXdVcmwiOiJ2ZW51c2lvLWdpdC1mZWF0LW5ldy1tYXJrZXRzLXZlbnVzLXByb3RvY29sLnZlcmNlbC5hcHAiLCJuZXh0Q29tbWl0U3RhdHVzIjoiREVQTE9ZRUQifSx7Im5hbWUiOiJhcHAudmVudXMuaW8iLCJyb290RGlyZWN0b3J5IjoiYXBwcy9ldm0iLCJpbnNwZWN0b3JVcmwiOiJodHRwczovL3ZlcmNlbC5jb20vdmVudXMtcHJvdG9jb2wvYXBwLnZlbnVzLmlvL0FXOExyUW0xazh4WVZrRVNYdktVbmFOZGk2SFYiLCJwcmV2aWV3VXJsIjoiYXBwdmVudXNpby1naXQtZmVhdC1uZXctbWFya2V0cy12ZW51cy1wcm90b2NvbC52ZXJjZWwuYXBwIiwibmV4dENvbW1pdFN0YXR1cyI6IkRFUExPWUVEIn0seyJuYW1lIjoiZGFwcC10ZXN0bmV0Iiwicm9vdERpcmVjdG9yeSI6ImFwcHMvZXZtIiwiaW5zcGVjdG9yVXJsIjoiaHR0cHM6Ly92ZXJjZWwuY29tL3ZlbnVzLXByb3RvY29sL2RhcHAtdGVzdG5ldC9IZTE0N1NQY1E4SGpzY0w4cDJhSzZuZVFKUDdCIiwicHJldmlld1VybCI6ImRhcHAtdGVzdG5ldC1naXQtZmVhdC1uZXctbWFya2V0cy12ZW51cy1wcm90b2NvbC52ZXJjZWwuYXBwIiwibmV4dENvbW1pdFN0YXR1cyI6IkRFUExPWUVEIn0seyJuYW1lIjoiZGFwcC1wcmV2aWV3Iiwicm9vdERpcmVjdG9yeSI6ImFwcHMvZXZtIiwiaW5zcGVjdG9yVXJsIjoiaHR0cHM6Ly92ZXJjZWwuY29tL3ZlbnVzLXByb3RvY29sL2RhcHAtcHJldmlldy9IRDVQRzhIWGhEU2JYVUhjeXY1azhic1lTclZRIiwicHJldmlld1VybCI6ImRhcHAtcHJldmlldy1naXQtZmVhdC1uZXctbWFya2V0cy12ZW51cy1wcm90b2NvbC52ZXJjZWwuYXBwIiwibmV4dENvbW1pdFN0YXR1cyI6IkRFUExPWUVEIn1dfQ==
**The latest updates on your projects**. Learn more about [Vercel for Git ↗︎](https://vercel.link/github-learn-more)

| Name | Status | Preview | Updated (UTC) |
| :--- | :----- | :------ | :------ |
| **app.venus.io** | ✅ Ready ([Inspect](https://vercel.com/venus-protocol/app.venus.io/AW8LrQm1k8xYVkESXvKUnaNdi6HV)) | [Visit Preview](https://appvenusio-git-feat-new-markets-venus-protocol.vercel.app) | Mar 19, 2025 2:22pm |
| **dapp-preview** | ✅ Ready ([Inspect](https://vercel.com/venus-protocol/dapp-preview/HD5PG8HXhDSbXUHcyv5k8bsYSrVQ)) | [Visit Preview](https://dapp-preview-git-feat-new-markets-venus-protocol.vercel.app) | Mar 19, 2025 2:22pm |
| **dapp-testnet** | ✅ Ready ([Inspect](https://vercel.com/venus-protocol/dapp-testnet/He147SPcQ8HjscL8p2aK6neQJP7B)) | [Visit Preview](https://dapp-testnet-git-feat-new-markets-venus-protocol.vercel.app) | Mar 19, 2025 2:22pm |
| **venus.io** | ✅ Ready ([Inspect](https://vercel.com/venus-protocol/venus.io/Gxh5AVpdXSn8AVPC4daYiyRsUfAi)) | [Visit Preview](https://venusio-git-feat-new-markets-venus-protocol.vercel.app) | Mar 19, 2025 2:22pm |





author_association: NONE
user: login: changeset-bot[bot]
created_at: 2025-03-14T09:32:52Z
body: ###  🦋  Changeset detected

Latest commit: 47e9f5394d03b860fcd817e05eab186545b76595

**The changes in this PR will be included in the next version bump.**

<details><summary>This PR includes changesets to release 1 package</summary>

  | Name               | Type  |
| ------------------ | ----- |
| @venusprotocol/evm | Minor |

</details>

Not sure what this means? [Click here  to learn what changesets are](https://github.com/changesets/changesets/blob/main/docs/adding-a-changeset.md).

[Click here if you're a maintainer who wants to add another changeset to this PR](https://github.com/VenusProtocol/venus-protocol-interface/new/feat/new-markets?filename=.changeset/breezy-buckets-brush.md&value=---%0A%22%40venusprotocol%2Fevm%22%3A%20patch%0A---%0A%0Afeat%3A%20add%20asBNB%20and%20PT-clisBNB-APR25%20records%0A)


author_association: NONE
user: login: github-actions[bot]
created_at: 2025-03-14T09:39:48Z
body: <h2>Coverage Report for ./apps/evm</h2>
<table> <thead> <tr> <th align="center">Status</th> <th align="left">Category</th> <th align="right">Percentage</th> <th align="right">Covered / Total</th> </tr> </thead> <tbody> <tr> <td align="center">🔵</td> <td align="left">Lines</td> <td align="right">81.69%</td> <td align="right">42472 / 51988</td> </tr> <tr> <td align="center">🔵</td> <td align="left">Statements</td> <td align="right">81.69%</td> <td align="right">42472 / 51988</td> </tr> <tr> <td align="center">🔵</td> <td align="left">Functions</td> <td align="right">71.46%</td> <td align="right">949 / 1328</td> </tr> <tr> <td align="center">🔵</td> <td align="left">Branches</td> <td align="right">89.09%</td> <td align="right">6231 / 6994</td> </tr> </tbody> </table><details><summary>File Coverage</summary><table> <thead> <tr> <th align="left">File</th> <th align="right">Stmts</th> <th align="right">Branches</th> <th align="right">Functions</th> <th align="right">Lines</th> <th align="left">Uncovered Lines</th> </tr> </thead> <tbody> <tr> <td align="left" colspan="6"><b>Changed Files</b></td> </tr> <tr> <td align="left"><a href="https://github.com/VenusProtocol/venus-protocol-interface/blob/47e9f5394d03b860fcd817e05eab186545b76595/apps/evm/src/libs/tokens/infos/commonTokens/bscMainnet.ts">apps/evm/src/libs/tokens/infos/commonTokens/bscMainnet.ts</a></td> <td align="right">100%</td> <td align="right">100%</td> <td align="right">100%</td> <td align="right">100%</td> <td align="left"></td> </tr> <tr> <td align="left"><a href="https://github.com/VenusProtocol/venus-protocol-interface/blob/47e9f5394d03b860fcd817e05eab186545b76595/apps/evm/src/libs/tokens/infos/commonTokens/bscTestnet.ts">apps/evm/src/libs/tokens/infos/commonTokens/bscTestnet.ts</a></td> <td align="right">100%</td> <td align="right">100%</td> <td align="right">100%</td> <td align="right">100%</td> <td align="left"></td> </tr> </tbody> </table></details>
<em>Generated in workflow <a href=https://github.com/VenusProtocol/venus-protocol-interface/actions/runs/13948775183>#10342</a> for commit <a href="https://github.com/VenusProtocol/venus-protocol-interface/commit/47e9f5394d03b860fcd817e05eab186545b76595">47e9f53</a> by the <a href="https://github.com/davelosert/vitest-coverage-report-action">Vitest Coverage Report Action</a></em>

<!-- vitest-coverage-report-marker-./apps/evm -->
author_association: CONTRIBUTOR