Giter VIP home page Giter VIP logo

envoy's People

Contributors

dariyoo99 avatar dependabot[bot] avatar foundationken avatar icota avatar invertedx avatar jacksper13 avatar mixslav avatar sethforprivacy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

envoy's Issues

Denomination error on send screen

Platform:

  • iOS
  • Android

App Version:

  • Envoy Version: 1.40

Issue Description:

Current Behavior:
Show details on send screen shows sats denomination even if amount expressed in BTC

Expected Behavior:
BTC ₿ to be shown when selected

Steps to Reproduce:

  1. Accounts, Settings, Ensure "View amount in Sats" is unselected
  2. Send transaction, select address, amount and confirm
  3. Click "show details" next to amount to send
  4. See that BTC amount is expressed in sats

Screenshots/Screen Recordings:

trim.9D4AA0D3-BA65-41EA-B245-47E170CD8AF7.MOV

Logs:

Not provided

Additional Information:

N/A

Impact:

  • Low: Minor issue with minimal impact on usability.
  • Medium: Moderate issue affecting usability.
  • High: Major issue severely impacting usability or app stability.

Related Issues:

None

Completed TXs show as pending in wallet tab but completed in activity tab (persists for days)

What mobile OS are you using?

iOS

Please provide details on the device you experienced the bug on

iOS XR version
17.4.1

Description

When I've got an outgoing tx, it will say "in progress" on the account tab even though in activity tab it shows it's been sent 3-11 days ago. Mempool.space will of course confirm what activity tab says, that it's sent.

Please provide the steps that you've used to reproduce the issue

  1. Send a tx
  2. Obsessively refresh (BTW we should be able to manually refresh rather than wait 60 sec upon opening wallet for auto-refresh)
  3. repeat 2
  4. Go to mempool.space, find out it's sent
  5. Go to wallet and verify that it says pending
  6. Go to activity tab, says pending
  7. Go to activity tab a bit later, says sent, but in wallet still says pending.

If applicable, add screenshots or screen recordings to help explain the issue.

IMAGE 2024-05-02 14:22:57
In the above image, it clearly shows that the tx is considered pending in spite of having 200+ confirmations

IMAGE 2024-05-02 14:23:44
In activity it will say sent though.

All of these screenshots were Apr 26 around 1PM, logs show a problem syncing.

If applicable, add logs to help us diagnose the issue.

logs.txt


Time : 2024-04-26T13:19:02.796331
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:19:02.793134
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:19:02.770908
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:18:47.778078
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:18:47.766972
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:18:47.764152
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:18:32.807269
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:18:32.792889
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:18:32.789577
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:18:17.775153
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:18:17.767169
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:18:17.764411
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:18:10.597619
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:18:10.590791
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:18:10.570617
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:18:09.532537
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:18:09.507527
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:18:09.500913
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:17:17.805111
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:17:17.787505
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:17:17.778746
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:17:02.793067
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:17:02.776787
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:17:02.770445
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:16:47.794229
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:16:47.777509
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:16:47.769317
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:16:32.794185
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:16:32.777638
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None

Anything else?

Using VPN always, never TOR, never my own node but Foundations.
In China

Impact of the issue

{"label"=>"Medium: Moderate issue affecting usability."}

If you found any similar or related issues, provide links to them here.

NA

Detail window not showing up for last UTXO (first two worked fine) when filters applied

Platform:

  • [Y] iOS

App Version:

The app version can be found under the Settings>About menu.

  • Envoy Version: [1.4.0]

Device Details:

iOS:

  • Device: [iPhone XR]
  • iOS Version: [iOS 17.1.1]

Issue Description:

Current Behavior:
[When I click on the UTXO to add a note, the screen goes grey. This only happens if I've applied filters (specifically, only received and oldest first) in the activity tab (not the tag tab). Then I toggle to tag tab and try to open the last UTXO and it's greyed out (the other UTXOs showed the details.]

Expected Behavior:
[It should show the details such as tx id, address etc.]

Steps to Reproduce:

  1. [Go to wallet in envoy. balance visible or not.]
  2. [Then put a filter on activity. Received + oldest]
  3. [Toggle to tag menu]
  4. [open list of "coins", aka utxos and go to last one and click on it.]
  5. [Should be greyed out]

Screenshots/Screen Recordings:

https://github.com/Foundation-Devices/envoy/assets/133897608/cf4f8833-8478-4547-bc07-228e28668780
photo_2023-11-22 22 49 12
photo_2023-11-22 22 49 07

Logs:

logs.txt

Additional Information:

No Tor, clearnet + VPN

Impact:

  • [Y] Low: Minor issue with minimal impact on usability.

Related Issues:

[NA]

Can't Connect to Fulcrum Server using TLS

Platform:

  • iOS
  • Android

App Version:

  • Envoy Version: 1.4.0

Device Details:

iOS:

  • Device: iPhone SE 2022
  • iOS Version: iOS 17.1.2

Issue Description:

Current Behavior:
When trying to connect to a personal Fulcrum server using a LAN address it seems I'm unable to connect to my node using TLS, however plain TCP works fine. My Fulcrum server is using a self-signed certificate which could be the likely culprit

Expected Behavior:
Connecting to a personal Fulcrum server using TLS should work. If the server uses a self-signed certificate an option should be provided to allow it.

Steps to Reproduce:

  1. Host a Fulcrum server on your LAN
  2. Open Envoy
  3. Click "Privacy"
  4. Under "Node", set the drop down to "Personal Node"
  5. Enter ssl://$YOUR_LAN_IP:50002
  6. Notice how an error is presented

Screenshots/Screen Recordings:

Screenshot 2023-12-21 at 17 10 09
Screenshot 2023-12-21 at 17 09 36

Logs:

The logs didn't show any errors

Additional Information:

I didn't test Android. The app was set to "Better Performance". The server is confirmed working over Wi-Fi with Sparrow, Blue Wallet, Nunchuk and other wallets. Only Envoy can't connect via TLS. I did have my VPN turned on in the screenshots but I tested with it turned off and it makes no difference.

Impact:

  • Low: Minor issue with minimal impact on usability.
  • Medium: Moderate issue affecting usability.
  • High: Major issue severely impacting usability or app stability.

Related Issues:

Can't Connect to Fulcrum Server on LAN when "Improved Privacy" is Enabled

Platform:

  • iOS
  • Android

App Version:

  • Envoy Version: 1.4.0

Device Details:

iOS:

  • Device: iPhone SE 2022
  • iOS Version: iOS 17.1.2

Issue Description:

Current Behavior:
When you enable "Improved Privacy" under the "Privacy" tab you are no longer able to connect to personal Fulcrum servers using LAN addresses.

Expected Behavior:
Connecting to a personal Fulcrum server over LAN should still work. Choosing "Improved Privacy" doesn't imply that your connection to your Fulcrum server must use an onion address

Steps to Reproduce:

  1. Host a Fulcrum server on your LAN
  2. Open Envoy
  3. Click "Privacy"
  4. Under "Privacy Mode" select "Improved Privacy"
  5. Under "Node" select "Personal Node"
  6. Enter tcp://$YOUR_IP_ADDRESS:50001
  7. Notice how an error is presented

Screenshots/Screen Recordings:

Screenshot 2023-12-21 at 17 09 20
Screenshot 2023-12-21 at 17 09 36

Logs:

The logs didn't show any errors

Additional Information:

I didn't test on Android. The screenshots show I have my VPN connected but I tested it without the VPN connected and it didn't fix the problem

Impact:

  • Low: Minor issue with minimal impact on usability.
  • Medium: Moderate issue affecting usability.
  • High: Major issue severely impacting usability or app stability.

Send Payjoin

I want to buy more Passport devices with my Passport on the Foundation BTCPay store using payjoin from Envoy.

Based on a similar PR in DIBA, a wasm wallet, this should be around a 250 line change using the payjoin crate including tests.

I guess this change may also require additional bip21 parsing with dart, though the payjoin crate includes it.

Add to F-Droid Repository

Describe the new feature or improvement you would like to see in the Envoy mobile app.

Are there any plans to add this project to the F-Droid repo? Such a move would serve many purposes:

  1. Make your software more easily accessible and updated by those who don't use Play Services - including those who don't trust it for critical/sensitive software.
  2. Open up the app to better review and scrutiny from new sections of the open source community. Sunlight is the best disinfectant!
  3. Further enhance the trust you've built over the years.
  4. Invite new contributors to your project.

As I understand it, their team is even able to help you get your project featured on their ecosystem: https://gitlab.com/fdroid/rfp

Explain the specific use case or scenario where this feature would be valuable to users.

No response

Ideas for implementation

No response

Screenshots/Design

No response

Additional Context

No response

BRL fiat conversion

Description:

Add BRL fiat conversion.

Use Case:

Add BRL fiat conversion.

Implementation Ideas:

Add BRL fiat conversion.

Screenshots/Designs:

Additional Context:

Doesn't load in

What mobile OS are you using?

iOS

Please provide details on the device you experienced the bug on

XR

Description

Opening the app (1.6) it won't move past the loading menu with the Envoy logo. I usually have it set to use my face to open it, but this doesn't initiate. Even with face unlock disabled, it still won't open.

Please provide the steps that you've used to reproduce the issue

  1. Phone has face unlock enabled.

  2. Update to 1.6

  3. Open envoy.

  4. Opens to Envoy logo and hangs

  5. Go to previous stable build

  6. Disable face unlock

  7. update to 1.6

  8. Open envoy.

  9. Opens to Envoy logo and hangs

If applicable, add screenshots or screen recordings to help explain the issue.

No response

If applicable, add logs to help us diagnose the issue.

NA

Anything else?

No TOR, no private node

Impact of the issue

{"label"=>"High: Major issue severely impacting usability or app stability."}

If you found any similar or related issues, provide links to them here.

NA

Lock image uses incorrect aspect ratio on iPhone SE 2022

Platform:

  • iOS
  • Android

App Version:

  • Envoy Version: 1.4.0

Device Details:

iOS:

  • Device: iPhone SE 2022
  • iOS Version: iOS 17.1.2

Issue Description:

Current Behavior:
When "Unlock with biometrics or PIN" is enabled under "Privacy", opening the app will show a fullscreen logo with white bars on both sides when using an iPhone SE 2022 which uses a different aspect ratio than the image being displayed.

Expected Behavior:
The fullscreen logo should fill the screen, no white bars should be visible.

Steps to Reproduce:

  1. Open Envoy on an iPhone SE 2022
  2. Click the "Privacy" tab at the bottom of the app
  3. Enable "Unlock with biometrics or PIN"
  4. Close the app
  5. Open the app but don't enter the PIN or tap the fingerprint sensor
  6. Notice how the fullscreen logo is displaying white bars on boths sides of the phone

Screenshots/Screen Recordings:

Screenshot 2023-12-21 at 17 16 15

Additional Information

I didn't test this on Android.

Impact:

  • Low: Minor issue with minimal impact on usability.
  • Medium: Moderate issue affecting usability.
  • High: Major issue severely impacting usability or app stability.

Security Tab Issues

logs 2.txt

Platform:

  • iOS

App Version:

The app version can be found under the Settings>About menu.

  • Envoy Version: [e.g., 1.4.0]

Device Details:

iOS:

  • Device: [iPhone 15 Pro Max]
  • iOS Version: [e.g., iOS 17.1.1]

Issue Description:

Current Behavior:
Screen turns grey and becomes inoperable when switching from personal node to Foundation node.(security tab)

Expected Behavior:
Should be able to navigate options without having to restart app

Steps to Reproduce:

Screenshots/Screen Recordings:

[If applicable, add screenshots or screen recordings to help explain the issue.]

Logs:

[

  • Low: Minor issue with minimal impact on usability.
  • Medium: Moderate issue affecting usability.
  • High: Major issue severely impacting usability or app stability.

Related Issues:

[If you found any similar or related issues, provide links to them here.]https://github.com/Foundation-Devices/envoy/assets/117760614/54cf3fda-468f-4c96-8ac8-154a9fa92d6d

Duplicate rows in Activity screen when redeeming Azteco voucher

Platform:

  • iOS
  • Android

App Version:

The app version can be found under the Settings>About menu.

  • Envoy Version: [e.g., 1.4.0]

1.4.0 beta

iOS:

  • Device: [iPhone 15 Pro]
  • iOS Version: [iOS 17.1.2]

Issue Description:

Current Behavior:
Duplicate entries showing up for an Azteco redemption.

Expected Behavior:
Should only show the 1 row for the unconfirmed transaction after redemption.

Steps to Reproduce:

  1. Redeem Azteco voucher on latest 1.4.0 beta
  2. Should see it in the Activity screen (as in the screenshot provided)

Screenshots/Screen Recordings:

image

Logs:

Additional Information:

Using my own node, Fulcrum v1.8.1 via Ronindojo local IP

Impact:

  • Low: Minor issue with minimal impact on usability.
  • Medium: Moderate issue affecting usability.
  • High: Major issue severely impacting usability or app stability.

Bounce animation + manual refresh

Describe the new feature or improvement you would like to see in the Envoy mobile app.

So currently when I open a wallet in Envoy, if I swipe down to force a refresh, nothing happens.
I'd like for when I swipe down, a kind of bouncing animation plays that visually indicates a refresh has been initiated. This would then refresh price and state of current txs, check mempool etc.

Explain the specific use case or scenario where this feature would be valuable to users.

For example, let's say a user notices that the price of Bitcoin has appreciated SIGNIFICANTLY since they last opened envoy. And they have a rough idea of what the fiat was last time they were in the app. They then open the app simply to see what is the current fiat value (one could argue that bitcoiners should NOT do this, but that's beside the point, maybe they're trying to make a large purchase of something priced in fiat and need to know if they can afford it yet) but when they open the app, it seems suspiciously like the old value. So they think, no sweat, I'll force a refresh... But no animation, nothing happens. They then leave their phone open for 60-120 seconds until envoy automatically decides to ping the relevant APIs and determines what the fiat value of your sats are.
Now that UX of leaving your phone unlocked and open while envoy figures out your balance passively is not great IMO.

A second thing that has been a negative UX has been Envoy not really being fast about finding incoming txs in the mempool and telling me about them, or when I'm sending txs, letting me know when it's been confirmed in a timely manner. Being able to quickly swipe down or press a little circular arrow (refresh icon) at will would help with this too.

Ideas for implementation

No additional ideas other than what's above.

Screenshots/Design

Sorry, none.

Additional Context

NA

Activity Screen

Platform:

  • [ x] iOS
  • Android

App Version:

The app version can be found under the Settings>About menu.

  • Envoy Version: [1.4.0]

Device Details:

iOS:

  • Device: [iphone 15 Max Pro]
  • iOS Version: [iOS 17.1.1]

Issue Description:

Current Behavior:
[Activity screen is blank. Only shows one transaction]

Expected Behavior:
[see a history of all activitiesimage]

Steps to Reproduce:

  1. [First Step]
  2. [Second Step]
  3. [Third Step]
  4. [Additional Steps, if necessary]

Screenshots/Screen Recordings:

[If applicable, add screenshots or screen recordings to help explain the issue.]

Logs:

[If applicable, add logs to help us diagnose the issue.]

To share your logs, head to Settings > Advanced > View Envoy Logs. From here you can save the logs as a file and add to the issue.

Additional Information:

[Add any other relevant information here, such as if Tor was in use, network conditions, etc.]

Impact:

  • Low: Minor issue with minimal impact on usability.
  • Medium: Moderate issue affecting usability.
  • High: Major issue severely impacting usability or app stability.

Related Issues:

[If you found any similar or related issues, provide links to them here.]

Swipe not intuitive

Platform:

iOS

App Version:

Envoy Version: 1.4.0

Device Details:

iOS:

  • Device: iPhone XR
  • iOS Version: iOS 17.1.1

Issue Description:

Current Behavior:
When I'm in the ACCOUNTS menu I can swipe left and right to hide or unhide the balance. Works perfectly. But if I click into the account suddenly it's really buggy. Basically the hit box where you can swipe is only on the bottom left. It took me a while to figure this out. I thought maybe I just wasn't able to toggle the view once inside the account. But I could every now and then. Eventually I just realized that the dimensions for the area for swiping was really tiny.

Expected Behavior:
I expected to be able to hide and unhide the balance before or after clicking to open an account. Specifically when I open the account.

Steps to Reproduce:

  1. Go to accounts
  2. Click on an account
  3. Attempt to hide and unhide balance using top right or middle. (hint. It doesn't work)
  4. Now try to hide and unhide balance from bottom left section. (hint. It works)

Screenshots/Screen Recordings:

Uploading FILE 2023-11-27 20:52:24.mp4…

Logs:

logs.txt

Additional Information:

Using VPN, no TOR, not connected to my own node.

Impact:

Low: Minor issue with minimal impact on usability.

Intro video delayed playback

The intro video that talks about how magic backup works has a delay in the beginning. It's hard to describe but it seems as though the audio comes on in the middle of the narrator's sentence. As if the first word or syllable is cut off.

Issue with Privacy Settings Text Not Updating Correctly in Envoy 1.6.0 Spanish Version

What mobile OS are you using?

Android

Please provide details on the device you experienced the bug on

Android: Device Pixel 8 (Android version: 14) Firmware: GrapheneOS

Description

In version 1.6.0 of Envoy, I encountered an issue on the initial screen when selecting the option to configure Passport. Upon progressing to the next screen, which presents the welcome message and the choice between configuring Passport or Envoy wallet, choosing to configure Passport leads to another screen (as demonstrated in the video) where there's an option to select your privacy type (with or without Tor). When using the app in Spanish, and attempting to choose between the two privacy options, the description for the better privacy option (Tor ON) does not update correctly.

Despite selecting the better privacy option, the text remains unchanged (although the color of the word 'disabled' does change) and incorrectly suggests that "Envoy's connection will be more stable with Tor disabled, recommended for new users" for both options. This is misleading, as selecting better performance does correctly indicate Tor is disabled by default (which is correct), but selecting better privacy should update the text to reflect "activated" instead of "disabled", and the description should state that the connection will be LESS stable, in addition to indicating Tor is ACTIVATED instead of disabled.

Steps to reproduce the issue:

1. Set your device language to Spanish.
2. Download Envoy version 1.6.0 (or earlier).
3. On the startup screen, select (Configure Passport).
4. Choose privacy and observe how the text does not change when selecting better performance or better privacy.

Please provide the steps that you've used to reproduce the issue

1. Set your device language to Spanish.
2. Download Envoy version 1.6.0 (or earlier).
3. On the startup screen, select (Configure Passport).
4. Choose privacy and observe how the text does not change when selecting better performance or better privacy.

If applicable, add screenshots or screen recordings to help explain the issue.

video_2024-02-24_13-15-53.mp4

photo_2024-02-24_13-18-36
photo_2024-02-24_13-18-32

If applicable, add logs to help us diagnose the issue.

No response

Anything else?

No response

Impact of the issue

{"label"=>"Low: Minor issue with minimal impact on usability."}

If you found any similar or related issues, provide links to them here.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.